一:环境准备
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关闭,看是否能正常访问