TS0 2019-01-08
nginx实现请求的负载均衡 + keepalived实现nginx的高可用
(按顺序看)
双机热备是指两台机器都在运行,但并非两台机器同时在提供服务。
当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,且切换的时间非常短。
keepalived高可用
Keepalived可以用来避免IP单点故障。但是它一般不会单独出现,而是与其它负载均衡技术(如lvs、haproxy、nginx)一起工作来达到集群的高可用。
主要起到两个作用:实现VIP到本地ip的映射以及检测nginx状态。
keepalived是通过检测keepalived进程是否存在判断服务器是否宕机,如果keepalived进程在但是nginx进程不在了那么keepalived是不会做主备切换,所以我们需要写个脚本来监控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。这个是通过心跳检查来判断主机已恢复使用.
VIP总会在keepalived服务器中的某一台上,也只会在其中的某一台上;VIP绑定的服务器上的nginx就是master,当VIP所在的服务器宕机了,keepalived会将VIP转移到backup上,并将backup提升为master。