1.负载均衡的方式
一种是硬件来进行解决常见的硬件有NetScaler、F5、Radware和Array等商用的负载均衡器,但是它们是比较昂贵的
一种是通过软件来进行解决,常见的有LVS,Nginx,Apache等,他们是基于Linux系统并且开源的负载均衡策略.
2.nginx常用的负载均衡的算法
轮询(默认算法)----每个请求会依次分配给后端不同的应用服务器,不理会后端服务器的实际压力
加权轮询---权重越大的服务器,被分配到的次数就会越多,通常用于后端服务器性能不一致的情况
IP hash-----当同IP进行重复访问事会被指定到上次访问到的服务器,可以解决动态网站session共享问题
upstream模块常用参数说明:
server 192.168.0.100:80 | 负载均衡后端RealServer的IP或者域名,端口不写的话默认为80。高并发场景用域名,再通过DNS进行负载均衡 |
weight=5 | 权重,默认为1,权重越大接收的请求越多 |
max_fails=2 | 最大尝试的失败次数,默认为1,0表示禁止失败尝试 |
fail_timeout=10s | 失败超时时间,默认是10秒,通常3s左右比较合适 |
backup | 热备配置,前段RealServer出现问题后会自动上线backup服务器 |
down | 标志服务器不可用,这个参数通常配合IP_HASH使用 |
3.搭建Keepalived:(Keepalived需要依赖openssl)
抛出问题:
主机和备机都安装了nginx,如果主机宕了,怎么启用备机的nginx呢?怎么设置主机和备机呢? 如果主机死了怎么进行故障移除呢? 如果主机从不可用到可用状态又怎么进行恢复添加呢? 这些功能都是可以通过Keepalived来进行设置的.
首先Keepalived可以在主机上产生一个虚拟的ip, 这里叫做vip(v是virtual的意思):192.168.200.150, keepalived会将这个vip绑定到交换机上.
当用户访问主机:192.168.200.129时, 交换机会通过这个ip和vip的对应找到192.168.200.129上的Nginx进行处理.
如果当有一天192.168.200.129上的Nginx挂掉的时候, Keepalived会立即在备机上生成一个相同的vip: 192.168.200.150, 当用户继续访问192.168.200.129时, 交换机上已经绑定了vip, 这时发现这个vip是存在于192.168.200.130上面的, 所以直接将请求转发到了备机上.
如果主机被修复好能够继续对外提供服务时, 这时keepalived会将主机上继续生成这个vip, 同时回收在备机上生成的vip. 这个是通过心跳检查来判断主机已恢复使用.