一、Nginx负载均衡配置
1、配置文件:
PS:这里我使用了本机启动的tomcat和万维网来进行测试
nginx.conf:
# 运行用户
user nobody;
# 启动进程数,通常设置成和cpu的数量相等
worker_processes 2;
# 工作模式及连接数上限
events {
worker_connections 1024;
}
#设定http服务器
http{
#设定负载均衡的服务器列表,在运行中如果有服务器崩溃那该服务器就会在该列表中移除
upstream tomcat{
server 219.133.55.36;#中国万维网
server 172.16.4.4:8080;#本地服务
}
server{
#监听端口
listen 9999;
location / {
#==选择要代理的服务器要与upstream对应==========
proxy_pass http:
}
#设定查看Nginx状态的地址
location /Status {
stub_status on;
access_log on;
}
}
}
配置之后,启动nginx,访问localhost:9999,不断的刷新,可以看到页面在tomcat和万维网之间随机切换。
2、upstream 的几种分配方式:
a.轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream tomcat{
server 219.133.55.36 weight=1;#中国万维网
server 172.16.4.4:8080 weight=2;#本地服务
}
b.最少连接:将请求分配到目前连接数最少的服务器。
upstream tomcat{
least_conn;
server 219.133.55.36;#中国万维网
server 172.16.4.4:8080;#本地服务
}
c.权重:weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream tomcat{
server 219.133.55.36 weight=1;#中国万维网
server 172.16.4.4:8080 weight=2;#本地服务
}
d.ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream tomcat{
ip_hash;
server 219.133.55.36;#中国万维网
server 172.16.4.4:8080;#本地服务
}
PS:还可以通过第三方来控制访问分配,这里没有进行尝试。
3、upstream 常用配置项:
a.down 表示单前的server暂时不参与负载。
b.weight 默认为1.weight越大,负载的权重就越大。
c.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回。
d.fail_timeout:max_fails 次失败后,暂停的时间。
e.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
4、实现session共享的几种方法。
a.通过nginx中的ip_hash来保证访问的ip始终被路由到同一个tomcat上,但如果同一个局域网下的多个ip同时访问,负载均衡就失去意义了。
b.可以通过redis或memcached来将多个tomcat下的session集中管理。