暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何使用keepalived监控nginx进程?

棉花糖老丫 2024-10-22
99

1、说明

        keepalived本身只是监控自身的进程是否挂掉,如果机器并没有挂机,只是nginx挂了,那么keepalived是不会做切换主备的,所以我们需要写个脚本来监控nginx进程是否存在。

2、上传脚本

上传脚本check_nginx.sh到/etc/keepalived目录。

    #!/bin/bash
    # 如果进程中没有nginx则将keepalived进程kill掉
    A=`ps -C nginx --no-header |wc -l` ## 查看是否有 nginx进程 把值赋给变量A
    if [ $A -eq 0 ];then ## 如果没有进程值得为 零
    service keepalived stop ## 则结束 keepalived 进程
    fi

    设置check_nginx.sh脚本可执行权限:

    chmod 755 check_nginx.sh  或者 chmod +x check_nginx.sh

    如果执行脚本出错,需要使用dos2unix工具转化下格式:

    安装dos2unix:  yum -y install dos2unix

    使用:dos2unix check_nginx.sh


    3、修改keepalived.conf

    3.1 定义监控脚本

      vrrp_script check_nginx {
      script "/etc/keepalived/check_nginx.sh" ##监控脚本
      interval 2 ##时间间隔,2秒
      weight 2 ##权重
      }

      3.2 在实例中加入启用监控

        vrrp_instance VI_1 {
        state BACKUP #标示状态为MASTER 备份机为BACKUP
        interface eth0 #设置实例绑定的网卡
        virtual_router_id 51 #同一实例下virtual_router_id必须相同
        priority 100 #MASTER权重要高于BACKUP 比如BACKUP为99
        advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
        authentication { #设置认证
        auth_type PASS #主从服务器验证方式
        auth_pass 8888
        }
        virtual_ipaddress { #设置vip
        192.168.0.55 #可以多个虚拟IP,换行即可
        }
        track_script {
        check_nginx #监控脚本
        }
        }


        4、keepalived.conf配置示例

          ! Configuration File for keepalived
          #全局配置
          global_defs {
          notification_email { #指定keepalived在发生切换时需要发送email到的对象,一行一个
          acassen@firewall.loc
          failover@firewall.loc
          sysadmin@firewall.loc
          }
          notification_email_from Alexandre.Cassen@firewall.loc #指定发件人
          #smtp_server 192.168.200.1 #指定smtp服务器地址
          #smtp_connect_timeout 30 #指定smtp连接超时时间
          router_id LVS_DEVEL #运行keepalived机器的一个标识
          }


          vrrp_instance VI_1 {
          state MASTER #标示状态为MASTER 备份机为BACKUP
          interface eth0 #设置实例绑定的网卡
          virtual_router_id 51 #同一实例下virtual_router_id必须相同
          priority 100 #MASTER权重要高于BACKUP 比如BACKUP为99
          advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
          authentication { #设置认证
          auth_type PASS #主从服务器验证方式
          auth_pass 1111
          }
          virtual_ipaddress { #设置vip
          192.168.0.55 #可以多个虚拟IP,换行即可
          }
          }




          #虚拟服务器 80端口的配置
          virtual_server 192.168.0.55 80 {
          delay_loop 6 #(每隔10秒查询realserver状态)
          lb_algo rr #lvs调度算法rr|wrr|lc|wlc|lblc|sh|dh
          lb_kind DR #负载均衡转发规则NAT|DR|RUN
          #nat_mask 255.255.255.0 #掩码
          persistence_timeout 50 #会话保持时间(同一IP的连接60秒内被分配到同一台realserver)
          protocol TCP #使用的协议




          #实际服务器的IP和端口
          real_server 192.168.0.48 80 {
          weight 1 #默认为1,0为失效
          HTTP_GET { #使用http get检测方式
          url {
          path /index.html
          #digest ff20ad2481f97b1754ef3e12ecd3a9cc #http://192.168.0.48/index.html的digest值
          status_code 200 #http://192.168.0.48/index.html的返回状态码
          }
          connect_timeout 3 #连接超时时间
          nb_get_retry 3 #重连次数
          delay_before_retry 3 #重连间隔时间
          }
          }
          }


          文章转载自棉花糖老丫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论