目录:
- Nginx集群和负载均衡
一、Nginx集群和负载均衡
1、集群
#Nginx通过upstream配置上游服务器来实现集群,zyh要对应起来
upstream zyh {
server 192.168.1.172:80;
server 192.168.1.173:80;
}
server {
listen 80;
server_name www.zyh.com;
location / {
proxy_pass http://zyh;
}
}
2、负载均衡-权重
(1)负载均衡-轮训:Nginx默认的负载均衡的策略,和RabbitMQ的消费者策略一样,每台服务器的权重一样,平均分配任务。
(2)负载均衡-加权轮训:
#默认weight都为1,根据服务器配置设置权重,理论上如果有6条数据,这样设置的话,173会有1条数据,175会有5条
upstream zyh {
server 192.168.1.173:80 weight=1;
server 192.168.1.175:80 weight=5;
}
3、upstream的常用指令
(1)max_conns:设置最大连接数
#设置每台服务器的最大连接数,173的最大连接数为2,只有这两个连接释放掉,才能处理新的链接
upstream zyh {
server 192.168.1.173:80 max_conns=2;
server 192.168.1.175:80 max_conns=5;
}
(2)down:服务器下线,就这台服务器访问不了,如果服务器暂时不使用,最好不好删除掉,可以使用这个命令。
#如果采用了ip_hash,那么服务器不使用的话,一定要用down,否则ip_hash会变动,session会失效
upstream zyh {
server 192.168.1.173:80;
server 192.168.1.175:80 down;
}
(3)backup:备用机,只有正常使用的设备宕机了,这台服务器才会被启动
#173的服务宕机了,175服务器才会被请求到
upstream zyh {
server 192.168.1.173:80;
server 192.168.1.175:80 backup;
}
(4)max_fails:服务器最大失败次数,达到这个次数就算服务器宕机
#175失败次数到达5次,175这台服务器服务就请求不到了
upstream zyh {
server 192.168.1.173:80;
server 192.168.1.175:80 max_fails=5;
}
(5)ip_hash:根据请求的ip地址hash值,决定访问哪台服务器的服务,这样可以保持session一致性,hash(ip) % node_counts = index
#主要问题是根据服务器数量得出的index,服务器数量一旦变化,index值都会变化,所以不使用的服务器不能删除,要用down
upstream zyh {
ip_hash;
server 192.168.1.173:80;
server 192.168.1.175:80;
}
(6)hash key:一致性hash,client和server分布的环形的圆上,client顺时针就近选择server,这样当服务器宕机和扩容的时候,影响的client和server会比较少。