nginx软件技术合集

Nginx Keepalived主从模式

2017-10-31  本文已影响0人  黑白蓝调

一、概念

负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行。
关于负载均衡介绍,可以参考:linux负载均衡总结性说明(四层负载/七层负载)

由于业务扩展,网站的访问量不断加大,负载越来越高。现需要在web前端放置nginx负载均衡,同时结合keepalived对前端nginx实现HA高可用。

  1. nginx进程基于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能。在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都 由主进程发出,Slave(worker)进程所有的超时任务都会被Master中止,属于非阻塞式任务模型。
  2. Keepalived是Linux下面实现VRRP备份路由的高可靠性运行件。基于Keepalived设计的服务模式能够真正做到主服务器和备份服务器故障时IP瞬间无缝交接。二者结合,可以构架出比较稳定的软件LB方案。

Keepalived介绍:

VRRP协议:

img

双机高可用一般是通过虚拟IP(飘移IP)方法来实现的,基于Linux/Unix的IP别名技术。
双机高可用方法目前分为两种:

  1. 双机主从模式:即前端使用两台服务器,一台主服务器和一台热备服务器,正常情况下,主服务器绑定一个公网虚拟IP,提供负载均衡服务,热备服务器处于空闲状态;当主服务器发生故障时,热备服务器接管主服务器的公网虚拟IP,提供负载均衡服务;但是热备服务器在主机器不出现故障的时候,永远处于浪费状态,对于服务器不多的网站,该方案不经济实惠。
  2. 双机主主模式:即前端使用两台负载均衡服务器,互为主备,且都处于活动状态,同时各自绑定一个公网虚拟IP,提供负载均衡服务;当其中一台发生故障时,另一台接管发生故障服务器的公网虚拟IP(这时由非故障机器一台负担所有的请求)。这种方案,经济实惠,非常适合于当前架构环境。

今天在此分享下Nginx+keepalived实现高可用负载均衡的主从模式的操作记录:

二、环境说明

操作系统:centos7 64位

master: 192.168.202.144(nginx/keepalived)
slave:192.168.202.145(nginx/keepalived)
web应用1:192.168.202.146
web应用2:192.168.202.147 //注意nginx和tomcat应用不要放在同一机器!
vip:192.168.202.22 //负载均衡器上配置的域名都解析到这个VIP上

三、安装

两台接入服务器分别安装NginX和keepalived:

mark mark

四、配置keepalived的日志

五、Nginx心跳检测

当我们配置了keepalived,当主keepalived的宕机了。会自动更改路由到backup的keepalived,但是如果nginx挂掉的话,keepalived就会找不到nginx服务这样还是会造成nginx服务不可用。那么我们就可以在keepalived中添加心跳script,用来检测nginx心跳,如果检测不到nginx服务,就关闭掉keepalived的进程。这样从机的keepalive服务就可以被调用。

上面是主机192.168.64.128的配置,可以看到一共新添加了两个地方,主要是添加了一个shell脚本用于检测nginx是否存活,然后再在keepalived的配置文件中,添加这个这个检测心跳的文件。这个是主机的配置,那么从机也需要做相应的修改。那么不管是keepalived宕机还是nginx宕机都会切换到可以热备的机器中去,这样就达到了nginx的可高用。

六、防坑指南

  1. 首先关于VIP生成的问题,这个VIP需要2台服务器之间能相互ping通。具体生成见文档http://blog.chinaunix.net/uid-186064-id-2823297.html,本人只做了前三步,etho为网卡ID,通过ifconfig对应修改
  2. keepalived配置文件修改一定要细心,多查看日志分析原因。默认日志是在/var/log/message中
  3. 我测试的时候不同网段,但是网络互通,也无法进行动态切换;另外从服务不能单独运行。
上一篇下一篇

猜你喜欢

热点阅读