• 企业架构LNMP学习笔记26


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

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

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

    实现过程分析:

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

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

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

    Nginx服务可用检测脚本:

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

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

    1. [root@server01 keepalived]# cat check_nginx.sh
    2. #!/bin/bash
    3. nginx_status=`ps -C nginx --no-header | wc -l`
    4. if [ $nginx_status -eq 0 ]; then
    5. systemctl stop keepalived;
    6. fi

    赋予权限:

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

    测试下脚本可用性:

    启动nginx和Keepalived

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

    1. [root@server01 keepalived]# ps aux |grep nginx
    2. 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
    3. www 748 0.0 0.0 46616 2012 ? S 08:39 0:00 nginx: worker process
    4. www 749 0.0 0.0 46616 2012 ? S 08:39 0:00 nginx: worker process
    5. root 1356 0.0 0.0 112816 972 pts/0 S+ 08:59 0:00 grep --color=auto nginx
    6. [root@server01 keepalived]#
    7. [root@server01 keepalived]# kill -TERM 746
    8. [root@server01 keepalived]# ps aux |grep nginx
    9. root 1360 0.0 0.0 112812 972 pts/0 R+ 09:00 0:00 grep --color=auto nginx

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

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

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

    scp check_nginx.sh 192.168.17.109:/etc/keepalived/

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

     

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

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

    实现web服务器的高可用。

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

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

    1)解析域名到VIP;

    2)模拟用户访问;

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

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

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

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

    总结:

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

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

  • 相关阅读:
    c语言-手写JSON解析
    性能最快的代码分析工具,Ruff 正在席卷 Python 圈!
    28. 找出字符串中第一个匹配项的下标 KMP C++
    DDD 洋葱架构才是 yyds!阿里大牛手记(DDD)领域驱动设计应对之道
    Centos7下安装使用K3S
    python基于GCN(图卷积神经网络模型)和LSTM(长短期记忆神经网络模型)开发构建污染物时间序列预测模型
    Kaggle - LLM Science Exam(二):Open Book QA&debertav3-large详解
    Thinking in JAVA:深入理解Java编程之道
    记录一下成功部署 Splunk UBA 集群
    队列:循环队列和双端队列/受限双端队列
  • 原文地址:https://blog.csdn.net/chang_chunhua/article/details/132773038