zoukankan      html  css  js  c++  java
  • nginx1.14.0版本高可用——keepalived双机热备

    nginx不支持主从,所以我们需要使用keepalive支持高可用。

    keepalived重要知识点

    在局域网内,每个主机上各安装一个keepalived,注意关闭防火墙firewalld,然后设定一个VIP(虚拟IP),主keepalived会获得授权在自己的主机上设置一个虚拟IP提供给应用层使用。

    一旦此keepalived用shell脚本监测到此机器上的nginx挂掉之后,立刻kill掉自己,同时也注销VIP。

    局域网内另一个keepalived感知(需关闭防火墙才能互相感知)到主keepalived挂掉,会把虚拟IP在自己所在机器上虚拟一个,此操作叫IP漂移。从而达到应用层对某个nginx挂掉无感知。

    安装keepalived

    yum -y update

    yum -y remove keepalived

    yum install keepalived –y
    使用yum安装的会有一个默认配置文件模板
    路径为/etc/keepalived/keepalived.conf
    启动keepalived服务
    systemctl start keepalived  

    如果是这样就是启动成功了:

    如果是这样就是启动失败,要检查是否是conf文件没改正确:

    keepalived配置——发送邮件设置

    global_defs {
       notification_email {              收件邮箱列表
         acassen@firewall.loc
         failover@firewall.loc
         sysadmin@firewall.loc
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.200.1              发件邮箱设置
       smtp_connect_timeout 30
       router_id LVS_DEVEL
       vrrp_skip_check_adv_addr
       vrrp_strict
       vrrp_garp_interval 0
       vrrp_gna_interval 0
    }

    keepalived 配置——获取网卡名称

    查看本机网卡: IP a

    keepalived.conf 配置——VIP配置 (virtual IP)

    ! Configuration File for keepalived
    
    global_defs {
       router_id LVS_DEVEL
    }
    
    vrrp_script chk_nginx {
        script "/etc/keepalived/chk_nginx.sh"           监测nginx是否存活脚本,如果否,keepalived将kill掉自己
        interval 2
        weight -5
        fall 2
        rise 1
    }
    
    vrrp_instance VI_1 {
        state MASTER               字符串标识,可以随便写,比如backup
        interface eno16777736
        virtual_router_id 51
        priority 100     指定keepalived的优先级,最高优先级为主,可以设置所在机器的虚拟IP,其它从keepalived则不能。
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.10.200  指定一个虚拟IP :  VIP,后续做IP漂移。这个IP也是应用访问的IP
    #192.168.10.210 可以设置多个虚拟IP
       } 
      track_script {
        chk_nginx 此虚拟IP检测存活对象的脚本,这里检测nginx
      }

    }

     chk_nginx.sh脚本

    A=`ps -C nginx --no-header |wc -l`     检测nginx存活数,如果是0,则是nginx已经挂掉了
    if [ $A -eq 0 ]  ;   then     
    echo 'nginx server is died'     
    killall keepalived         kill掉自己
    fi

    keepalived启动、停止、查看存活状态命令

    systemctl start keepalived.service       启动

    systemctl stop keepalived.service       停止

    systemctl status keepalived.service     查看状态

    nginx启动、停止、查看运行状态

    cd nginx目录

    ./sbin/nginx -t   检查nginx.conf脚本语法是否正常

    ./sbin/nginx     启动

    ./sbin/nginx -s stop     停止      Stop 是快速关闭,不管有没有正在处理的请求。
    ./sbin/nginx -s quit     退出       Quit 是一个优雅的关闭方式,Nginx在退出前完成已经接受的连接请求。

    ./sbin/nginx -s reload   重启

    ps -ef|grep nginx       查看运行状态

    ps -C nginx --no-header |wc -l   查看存活数。一般情况下,2是正常数,因为一个nginx启动会有两个nginx进程?
  • 相关阅读:
    P3704 [SDOI2017]数字表格
    CF 700 E. Cool Slogans
    杜教筛学习笔记
    [BOI2004]Sequence 数字序列(左偏树)
    [WC2007]剪刀石头布(最大流)
    [NOI2009]变换序列(二分图匹配)
    文理分科(最小割)
    上帝与集合的正确用法(欧拉定理)
    [HAOI2008]圆上的整点(数论)
    主席树学习笔记
  • 原文地址:https://www.cnblogs.com/zhuwenjoyce/p/10563825.html
Copyright © 2011-2022 走看看