Nginx实现负载均衡
2011-06-21 15:48
513 查看
用NGINX做负载均衡重点问题,ref:http://wiki.nginx.org/HttpUpstreamModule
概述:nginx的HttpUpstreamModule提供基于(Round-Robin和client ip)的简单负载均衡功能,
Round-Robin(轮询调度算法):
轮询调度算法的原理是每一次把来自用户的请求轮流分配给内部中的服务器,
从1开始,直到N(内部服务器个数),然后重新开始循环。
1 SESSION问题解决方法
1)不用session用cookie
2)将session放在独立的memcache或者TT,DB等存储
3)用某请求的IP,主机名或者URL做HASH定位到主机池里固定的backend server上
4)第三方软件和硬件均衡
2 负载均衡算法
1)轮询(默认):按时间顺序逐一分配到不同的backend server
2)权重(weight):指定轮询几率,手动给性能好的机器分配比较搞的的请求率
3)IP hash分配:不同的请求IP的请求分配到固定的backend server上
4)第三方 : 1 fair 按后端服务器的响应时间分配,处理快的机器被优先分配
2 URL hash 和IP hash类似,只是不同的URL的请求被分配到固定backend server上
,另外IP为class-C network address,并且Nginx要做第一台前端机器才能获得真正的IP。
3 负载均衡配置 样例:
在http中增加
upstream name { //定义负载均衡设备的Ip及设备状态
ip_hash;
//负载均衡算法
server backup.shopex.cn:9090 down;
//表示上面server暂时不参与负载
server 127.0.0.1:8080 weight=2;
//默认为1,weight越大,负载的权重就越大。
server 127.0.0.1:7070 backup;
//所有的非backup机器down或者忙的时候,就请求backup机器。
server 127.0.0.1 max_fails=3 fail_timeout=30s;
//允许请求失败的次数和失败后暂停的时间 。
server unix:/tmp/backend3 weight=3;
}
在需要使用负载均衡的server中
server_name name;
或
server location / 中增加
proxy_pass http://name;
//proxy_set_header Host $host;
//proxy_set_header X-Real-IP $remote_addr;
//proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
//proxy_set_header host $http_host;
//proxy_set_header ECOS_VARY $cookie_vary;
日志格式中可用的变量:
$upstream_addr
$upstream_cache_status
$upstream_status
$upstream_response_time
$upstream_http_$HEADER
例子
log_format timing
'$remote_addr - $remote_user [$time_local] $request '
'upstream_response_time $upstream_response_time '
'msec $msec request_time $request_time';
概述:nginx的HttpUpstreamModule提供基于(Round-Robin和client ip)的简单负载均衡功能,
Round-Robin(轮询调度算法):
轮询调度算法的原理是每一次把来自用户的请求轮流分配给内部中的服务器,
从1开始,直到N(内部服务器个数),然后重新开始循环。
1 SESSION问题解决方法
1)不用session用cookie
2)将session放在独立的memcache或者TT,DB等存储
3)用某请求的IP,主机名或者URL做HASH定位到主机池里固定的backend server上
4)第三方软件和硬件均衡
2 负载均衡算法
1)轮询(默认):按时间顺序逐一分配到不同的backend server
2)权重(weight):指定轮询几率,手动给性能好的机器分配比较搞的的请求率
3)IP hash分配:不同的请求IP的请求分配到固定的backend server上
4)第三方 : 1 fair 按后端服务器的响应时间分配,处理快的机器被优先分配
2 URL hash 和IP hash类似,只是不同的URL的请求被分配到固定backend server上
,另外IP为class-C network address,并且Nginx要做第一台前端机器才能获得真正的IP。
3 负载均衡配置 样例:
在http中增加
upstream name { //定义负载均衡设备的Ip及设备状态
ip_hash;
//负载均衡算法
server backup.shopex.cn:9090 down;
//表示上面server暂时不参与负载
server 127.0.0.1:8080 weight=2;
//默认为1,weight越大,负载的权重就越大。
server 127.0.0.1:7070 backup;
//所有的非backup机器down或者忙的时候,就请求backup机器。
server 127.0.0.1 max_fails=3 fail_timeout=30s;
//允许请求失败的次数和失败后暂停的时间 。
server unix:/tmp/backend3 weight=3;
}
在需要使用负载均衡的server中
server_name name;
或
server location / 中增加
proxy_pass http://name;
//proxy_set_header Host $host;
//proxy_set_header X-Real-IP $remote_addr;
//proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
//proxy_set_header host $http_host;
//proxy_set_header ECOS_VARY $cookie_vary;
日志格式中可用的变量:
$upstream_addr
$upstream_cache_status
$upstream_status
$upstream_response_time
$upstream_http_$HEADER
例子
log_format timing
'$remote_addr - $remote_user [$time_local] $request '
'upstream_response_time $upstream_response_time '
'msec $msec request_time $request_time';
相关文章推荐
- Nginx反向代理实现均衡负载
- nginx 实现mysql的负载均衡
- nginx 动静分离实现负载均衡
- tomcat+nginx+redis实现均衡负载、session共享---项目默认路径找不到
- Centos下Nginx+Apache+Mysql+Memcache实现多负载均衡与Session共享
- Nginx+Keepalived实现负载均衡高可用
- nginx 配置轮询分流-实现负载均衡【测试通过】
- lvs+keepalived+nginx实现高性能负载均衡集群【转】
- Linux+Nginx+Tomcat+Redis实现负载均衡,应用集群及session共享
- 高性能网站架构之负载均衡 Nginx+tomcat实现tomcat集群
- .Net分布式架构(一):Nginx实现负载均衡
- 使用nginx来负载均衡 本文在window与linux下配置nginx实现负载
- tomcat+nginx+redis实现均衡负载、session共享(二)
- Nginx加多个tomcat实现负载均衡,动静分离
- (转)nginx+iis实现负载均衡
- Nginx反向代理实现负载均衡配置图解
- Nginx反向代理实现负载均衡配置图解
- Nginx+Tomcat+Memcached 集群Session共享[memcached服务安装、tomcat使用memcache存储session、nginx安装配置实现tomcat负载均衡]
- tomcat+nginx+redis实现均衡负载、session共享(一)
- Nginx安装配置,简单构建LNMP环境配置反向代理,实现动静分离,以及实现负载均衡。