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 #重连间隔时间 } } }
到此这篇关于keepalived监控nginx进程的实现示例的文章就介绍到这了,更多相关keepalived监控nginx进程内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论