一. 负载均衡作用
1. 转发功能
按照一定算法[权重/轮询], 将客户端请求转发到不同应用服务器上, 减轻单个服务器压力, 提高系统并发量。
2. 故障移除
通过心跳检测的方式, 判断应用服务器当前是否可以正常工作, 若服务器宕机, 自动将请求发送到其他应用服务器。
3. 恢复添加
若检测到发生故障的应用服务器恢复工作, 自动将其添加到处理用户请求队伍中。
二. nginx负载均衡配置
http节点中添加
upstream myServer { server 192.168.0.177 weight=3; server 192.168.0.178:8000; } server { listen 80; location / { proxy_pass http://myServer; } }
其他配置
upstream myServer { server 192.168.0.170; server 192.168.0.171 weight=3; server 192.168.0.172:8000 down; server 192.168.0.173:8000 backup; }
1. down
当前server不参与负载;
2. weight (权重)
默认为1, 数字越大, 权重越大;
3. max_fails (允许请求失败的次数)
默认为1, 超过最大次数时, 返回proxy_next_upstream模块定义的错误;
4. fail_timeout
max_fails次失败后, 暂停的时间
5. backup
当所有非backup的机器down或者忙的时候, 请求backup机器, 所以此服务器压力最低;
三. 带来的问题
session保存在服务器, 根据负载均衡策略同一用户可能被代理到不同服务器, 导致用户需要重新登录。
解决方案:
1. Session保持 (不推荐, 负载不均衡)
设置负载均衡策略为ip_hash, 同一IP指向同个服务器
2. Session复制 (不推荐)
服务器间同步session
3. Session共享(推荐)
将session存储到同一个地方, 如memcache或redis中
四. 总结
除了要实现网站的高可用,也就是提供n多台服务器用于发布相同的服务,添加负载均衡服务器分发请求以保证在高并发下各台服务器能相对饱和的处理请求。同样,负载均衡服务器也需要高可用,以防如果负载均衡服务器挂掉了,后面的应用服务器也紊乱无法工作。
实现高可用的方案:添加冗余。添加n台nginx服务器以避免发生上述单点故障(使用keepalive+nginx实现负载均衡高可用)。
评论