企业架构LNMP学习笔记26

通过Keepalived可以实现主服务器整机不可用,实现VIP的切换。保证用户可以通过VIP进行访问服务。但是实际上,往往不是服务器整机不可用,只是对应的服务或者软件不可用。

比如说,nginx提供的web的服务,nginx进程关闭。

就需要检测当nginx不可用的时,就切换VIP。

实现过程分析:

VIP实际上由Keepalived进行绑定的,所以当nginx服务不可用时,就关闭当前机器的Keepalive即可,释放VIP。进而绑定到其他备用服务器。

1)编写服务器检测脚本,实现检测nginx是否可用,不可用则关闭当前所在主机的Keepalived。

2)在Keepalived配置中调用检测服务脚本。

Nginx服务可用检测脚本:

主备服务器都要实现此脚本。

1)编写测试脚本,赋予执行权限:

[root@server01 keepalived]# cat check_nginx.sh
#!/bin/bash

nginx_status=`ps -C nginx --no-header | wc -l`

if [ $nginx_status -eq 0 ]; then
    systemctl stop keepalived;
fi

赋予权限:

[root@server01 keepalived]# chmod +x check_nginx.sh

测试下脚本可用性:

启动nginx和Keepalived

关闭nginx,执行脚本,查看Keepalived是否关闭。

[root@server01 keepalived]# ps aux |grep nginx
root        746  0.0  0.0  46192  1268 ?        Ss   08:39   0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
www         748  0.0  0.0  46616  2012 ?        S    08:39   0:00 nginx: worker process
www         749  0.0  0.0  46616  2012 ?        S    08:39   0:00 nginx: worker process
root       1356  0.0  0.0 112816   972 pts/0    S+   08:59   0:00 grep --color=auto nginx
[root@server01 keepalived]#
[root@server01 keepalived]# kill -TERM 746
[root@server01 keepalived]# ps aux |grep nginx
root       1360  0.0  0.0 112812   972 pts/0    R+   09:00   0:00 grep --color=auto nginx

执行下脚本,再看keepalived的状态。 

然后VIP已经切换到server03这台服务器上了。

企业架构LNMP学习笔记26_第1张图片

同样,我们也要在server03这台服务器上添加这个脚本。

scp check_nginx.sh 192.168.17.109:/etc/keepalived/

在多台服务器中配置Keepalived定时触发检测nginx脚本模块:

企业架构LNMP学习笔记26_第2张图片

 企业架构LNMP学习笔记26_第3张图片

在这个过程中,我纠正了一个nginx的一个配置问题:

企业架构LNMP学习笔记26_第4张图片

然后我就使用systemctl status nginx就能正常工作了。不会显示错误信息。

实现web服务器的高可用。

以上案例已经实现了,服务不可用VIP切换到可用服务器。

现在需求用户的服务是连续不间断的,故用户需要通过VIP进行访问。

1)解析域名到VIP;

2)模拟用户访问;

在测试的过程中,发现无法ping 通VIP。通过百度。看到可以将vrrp_strict进行注释即可。当然还有两种配置方法。

企业架构LNMP学习笔记26_第5张图片

然后重启keepalived进程。systemctl restart keepalived。

企业架构LNMP学习笔记26_第6张图片

然后再进行ping测试,发现可以ping通VIP。

企业架构LNMP学习笔记26_第7张图片

企业架构LNMP学习笔记26_第8张图片

另外,我们也可以写nginx自愈的脚本编写。

总结:

具有故障自动恢复能力的可用性。

解析域名,切换到可用的服务器上。web的高可用就实现了。

你可能感兴趣的:(Nginx,架构)