nginx 高可用搭建

centos7 +nginx +keepalived

记录keepalived 踩坑记录

1,yum方式安装的keepalived 配置文件路径 /etc/keepalived/keepalived.config

keepalived默认的日志路径:/var/log/messages

观察日志的追加内容:tail -f logPath

! Configuration File for keepalived

global_defs {

   notification_email {#这些配置作用于当keepalived出现问题时候的邮件地址 和接受地址
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   script_user root #脚本的所有者,默认是keepalived
   enable_script_security #启用脚本安全检查
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
#计算机的唯一表示,保证在局域网下的唯一性,MASTER和BACKUP 一致
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   
  # vrrp_strict   # 如果不注释掉则会导致虚拟IP访问不到
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

#自动杀死keepalived的脚本文件,实现nginx宕机之后keepalived自杀,从而使得从机接收不到广播消息,进而替代主机,这项配置需要置于vrrp_instance VI_1之前 
vrrp_script chk_nginx 
{	**//这个{要另起一行**
    script "/usr/local/src/nginx_check.sh"  
    interval 3
}

vrrp_instance VI_1 {
#从机需要修改为BACKUP
    state MASTER
#网卡设置
    interface ens33
#主机和从机需要保持一致
    virtual_router_id 52
//检测脚本名
track_script {
        chk_nginx
    }
    #主机的较大,从机的较小
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
#对外提供的虚拟IP地址,需要保证在同一个网段下
        192.168.117.80    
    }
}

BACKUP配置

! Configuration File for 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
   script_user root
   enable_script_security
#计算机的唯一表示,保证在局域网下的唯一性,MASTER和BACKUP保持一致
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
  # vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

#自动杀死keepalived的脚本文件,实现nginx宕机之后keepalived自杀,从而使得从机接收不到广播消息,进而替代主#机/usr/local/src/nginx_check.sh
vrrp_script chk_nginx 
{	**//这个{要另起一行**
    script "/usr/local/src/nginx_check.sh"  
    interval 3
}

vrrp_instance VI_1 {
#从机需要修改为BACKUP
    state BACKUP
#网卡设置
    interface ens33
#主机和从机需要保持一致,需要保证局域网下唯一性
    virtual_router_id 52
#主机的较大,从机的较小
track_script {
        chk_nginx
    }

    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
#对外提供的虚拟IP地址
        192.168.117.80
        
    }
}

2,检测脚本

#!/bin/sh
nginxpid=$(ps -C nginx --no-header|wc -l)
if [ $nginxpid -eq 0 ];then
#keepalived尝试重新启动一次,如果还是失败则会杀死keepalived,进而将所有权转移到BACKUP从节点
    /usr/local/webserver/nginx/sbin/nginx
    echo "call  keepalived script ${nginxpid}"
    sleep 3
    nginxpid=$(ps -C nginx --no-header|wc -l)
    if [ $nginxpid -eq 0 ];then
        echo "stop keepalived.service"
        systemctl stop keepalived
    fi
fi
~    

踩坑点:
脚本的文件是通过touch 创建 vim 编辑生成,由于没有可执行权限,造成MASTER上的nginx服务进程死亡之后,检测脚本无法自动执行
对文件夹下所有文件赋予可执行权限:chmod u+x *.sh
对文件赋予可执行权限:chmod u+x 1.sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值