0
点赞
收藏
分享

微信扫一扫

keepalive+nginx/mysql自动切换

快乐码农Alan007 2022-03-12 阅读 62

一:环境准备

master服务器ip地址:192.168.1.99

slave服务器ip地址:192.168.1.70

两台机器分别安装nginx和keepalived,192.168.207.99作为master,192.168.207.70作为slave

二、keepalived安装

2.1 yum方式

安装依赖包
[root@localhost ~]# yum install -y curl gcc openssl-devel libnl3-devel net-snmp-devel
[root@localhost ~]# yum install -y keepalived
配置文件路径:/etc/keepalived/keepalived.conf
2、初始化及启动
[root@localhost ~]# systemctl start keepalived   //启动keepalived
[root@localhost ~]# systemctl enable keepalived  //加入开机启动keepalived
[root@localhost ~]# systemctl restart keepalived  //重新启动keepalived
[root@localhost ~]# systemctl status keepalived   //查看keepalived状态

2.2 软件包方式

[root@master src]# pwd
/usr/local/src
[root@master src]# wget http://www.keepalived.org/software/keepalived-2.0.7.tar.gz
[root@master src]# tar xvf keepalived-2.0.7.tar.gz
[root@master src]# cd keepalived-2.0.7
[root@master keepalived-2.0.7]# ./configure --prefix=/usr/local/keepalived
[root@master keepalived-2.0.7]# make && make install
安装完成后会在以下路径生成
/usr/local/keepalived/etc/keepalived/keepalived.conf
/usr/local/keepalived/etc/sysconfig/keepalived
/usr/local/keepalived/etc/sbin/keepalive

初始化及启动

## keepalived启动脚本变量引用文件,默认文件路径是/etc/sysconfig/,也可以不做软链接,直接修改启动脚本中文件路径即可(安装目录下)
cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/keepalived 
#将keepalived主程序加入到环境变量(安装目录下)
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived
# keepalived启动脚本(源码目录下,就是解压后的文件位置),放到/etc/init.d/目录下就可以使用service命令便捷调用
 cp /usr/local/src/keepalived-2.0.7/keepalived/etc/init.d/keepalived  /etc/init.d/keepalived
# 将配置文件放到默认路径下
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

加为系统服务:chkconfig --add keepalived

开机启动:chkconfig keepalived on

查看开机启动的服务:chkconfig --list

启动、关闭、重启service keepalived start|stop|restart

三、编辑keepalived.conf配置文件

 cat check_nginx_.sh

chmod +x check_nginx_.sh

#!/bin/bash
 
A=`ps -C nginx --no-header |wc -l`
#判断nginx是否宕机,如果宕机了,尝试重启
if [ $A -eq 0 ];then
        # nginx的启动目录
        /usr/local/nginx/sbin/nginx
        # 等待3秒再次检查nginx,如果没有重启成功,则停止keepalived,使其启动备用机
        sleep 3
        if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
                service keepalived stop
        fi
fi

cat check_mysql.sh

chmod +x check_mysql_.sh

#!/bin/bash
counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)
if [ "${counter}" -eq 0 ]; then
    service keepalived stop
fi

cat keepalived.conf

! Configuration File for keepalived
 
global_defs {
   notification_email {
     jing.lin@turnipsmart.com  # 报警邮件接收人的地址
   }
   notification_email_from jing.lin@turnipsmart.com # 发送报警邮件发件人地址
   smtp_server 127.0.0.1                           # 发送邮件的服务器地址
   smtp_connect_timeout 30                     # 邮件超时时间(可以根据自己的需求进行设定)
   router_id LVS_DEVEL                         # 一个实例的标识地址(可以有多个实例但不能相同)
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
 
vrrp_script monitor_nginx {
 
  script "/opt/check_ngninx.sh"  #根据自己的实际路径放置脚本文件
  interval 2                  # 脚本执行间隔
  Weight -5                   #脚本结果导致的优先级变更:5表示优先级加5;-5表示优先级减5
  fall 2                 
  rise 1 
}

vrrp_script chk_mysql {
    script "/etc/keepalived/chk_mysql_v02.sh"
    interval 15 # 间隔15秒执行一次
    timeout 10 # 10秒超时
    fall 3 # 失败3次才算失败
}

vrrp_script chk_redis {
    script "/etc/keepalived/chk_redis_v03.sh"
    interval 15 # 间隔15秒执行一次
    timeout 10 # 10秒超时
    fall 3 # 失败3次才算失败
}

vrrp_script chk_mongo {
    script "/etc/keepalived/chk_mongo_v01.sh"
    interval 15 # 间隔15秒执行一次
    timeout 10 # 10秒超时
    fall 3 # 失败3次才算失败
}

vrrp_script chk_nginx {
    script "/etc/keepalived/chk_nginx_v01.sh"
    interval 15 # 间隔15秒执行一次
    timeout 10 # 10秒超时
    fall 3 # 失败3次才算失败
}

vrrp_script chk_haproxy {
    script "/etc/keepalived/chk_haproxy_v01.sh"
    interval 15 # 间隔15秒执行一次
    timeout 10 # 10秒超时
    fall 3 # 失败3次才算失败
}


 
vrrp_instance VI_1 {
    state MASTER           # 设置服务器模式master端 从服务器设置为BACKUP
    interface enp2s0       # 实例网卡,也就是提供服务的网卡,可通过ifconfig
    virtual_router_id 51   # 设置vrid 主从服务器设置一样
    priority 101           # 设置本节点的优先级,优先级高的为master
    advert_int 1           # 检查间隔,默认为1秒
    authentication {#编写的明文密码
        auth_type PASS ##采用明文认证机制
        auth_pass 1111@Cmiot#编写的明文密码
    }
    virtual_ipaddress {
        192.168.1.200      # 设置vip,虚拟ip地址
    }
    track_script {#调用脚本
        chk_nginx
    }
}

四、测试

把keepalived停了,查看vip、访问nginx

当然你也可以自己测试,不断输入 ./nginx -s stop 把nginx关闭,看是否能正常访问

举报

相关推荐

0 条评论