linux-高可用之keepalived实现nginx高可用
Keepalived的作用是检测web服务器的状态,如果有一台web服务器、
Mysql服务器宕机,或工作出现故障,Keepalived将检测到后,会将有故
障的web服务器或者Mysql服务器从系统中剔除,当服务器工作正常后
Keepalived自动将web、Mysql服务器加入到服务器群中。这些工作全部
自动完成,不需要人工干涉,需要人工做的只是修复故障的WEB和Mysql
服务器。
生产环境使用Keepalived正常运行,共启动3个进程,一个是父进程,负责
监控其子进程,一个是VRRP子进程,另外一个是Checkers子进程。两个子
进程都被系统Watchlog看管,两个子进程各自负责自己的事,
Healthcheck子进程检查各自服务器的健康状况,如果Healthcheck进程检
查到Master上服务不可用了,就会通知本机上的VRRP子进程,让他删除通
告,并且去掉虚拟IP,转换为BACKUP状态。
虚拟IP:192.168.80.200
nginx服务器:192.168.80.128-129
# nginx服务器上安装keepalived工具:
yum install keepalived -y
# master端配置:
vim /etc/keepalived/keepalived.conf
router_id LVS_DEVEL:keepalived机器的标识,一般设为主机名
virtual_router_id 51:虚拟路由器id号,主从必须一致
priority 100:优先级(值越大,优先级越大)
advert_int 1:检测间隔时间(心跳频率)
# backup端配置:
# 启动keepalived:
systemctl start keepalived
# 测试:
启动之后就可以看到vip的生成并且成功128服务器的nginx服务
关闭128服务器的nginx和keepalived:
nginx -s stop && systemctl stop keepalived
129成功获得vip地址和成功访问到129服务器的nginx服务
测试成功 》》》》》》》
我们确实实现的vip能继续提供服务,但是nginx宕机时,我们需要手动关闭keepalived服务,期间用户访问会受到影响。下面我们就一起来是实现自动切换。只需要在原先的配置文件添加几行文档,很简单的。
# 配置keepalived的master端
vim /etc/keepalived/keepalived.conf
scripts:指定一个脚本,判断nginx是否宕机。
weight:宕机后优先级减20(100=>80).
track_script:用来追踪脚本
下面是检测nginx是否宕机的脚本:
killall -0 nginx 判断nginx是否处于启动状态(启动返回0,没启动返回1)
# 测试——成功
只模拟nginx宕机