1.准备两台机器
A机器:192.168.153.101
B机器:192.168.153.102
A级器作为master,B机器作为backup
配置文件的时候 VIP定为 :192.168.153.100
2.两台机器都安装:keepalived
yum install -y keepalived
3.两台机器上都安装nginx
yum install -y nginx
注意:有时直接yum安装不了,需要安装yum扩展源:yum install -y epel-release
下面是在A机器上操作的
1.更改A机器上的更改keepalived配置文件
默认的配置文件路径在/etc/keepalived/keepalived.conf
清空文件内容
/etc/keepalived/keepalived.conf
编辑配置文件
vim /etc/keepalived/keepalived.conf
添加加以下内容:
global_defs {
notification_email {
aming@aminglinux.com
}
notification_email_from root@aminglinux.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_nginx {
script "/usr/local/sbin/check_ng.sh"
interval 3
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass aminglinux>com
}
virtual_ipaddress {
192.168.153.100
}
track_script {
chk_nginx
}
}
这里需要注意的是:"virtual_ipaddress"也就是所谓的vip我们设置为192.168.153.100
2.定义监控脚本
脚本路径在keepalived配置文件中有定义,路径为/usr/local/sbin/check_ng.sh
编辑配置文件:
vim /usr/local/sbin/check_ng.sh
增加以下内容:
#!/bin/bash
#时间变量,用于记录日志
d=date --date today +%Y%m%d_%H:%M:%S
#计算nginx进程数量
n=ps -C nginx --no-heading|wc -l
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq “0” ]; then
/etc/init.d/nginx start
n2=ps -C nginx --no-heading|wc -l
if [ d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived
fi
fi
3.脚本创建完之后,还需要改变脚本的权限(不更改权限,就无法自动加载脚本,那就无法启动keepalived服务)
chmod 755 /usr/local/sbin/check_ng.sh
4.启动keepalived服务,并查看是否启动成功
systemctl start keepalived
ps aux |grep keepalived
启动不成功,有可能是防火墙未关闭或者规则限制导致的
systemctl stop firewalld 关闭firewalld
iptables -nvL查看防火墙
setenforce 0 临时关闭selinux
getenforce命令查看是否为Permissive
这时再来启动keepalived,就会看到keepalived进程服务了
以下是B机器上的配置
1.自定义B机器keepalived配置文件,更改虚拟IP和主一样的,首先清空B机器keepalived里面自带的配置文件
配置文件路径:/etc/keepalived/keepalived.conf
清空:
/etc/keepalived/keepalived.conf
编辑配置文件:
vim /etc/keepalived/keepalived.conf
增加以下内容:
global_defs {
notification_email {
aming@aminglinux.com
}
notification_email_from root@aminglinux.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_nginx {
script "/usr/local/sbin/check_ng.sh"
interval 3
}
vrrp_instance VI_1 {
state BACKUP //这里 和master不一样的名字
interface ens333 //网卡和当前机器一致,否则无法启动keepalived服务
virtual_router_id 51 //和主机器 保持一致
priority 90 //权重,要比主机器小的数值
advert_int 1
authentication {
auth_type PASS
auth_pass aminglinux>com
}
virtual_ipaddress {
192.168.153.100 //这里更改为192.168.153.100
}
track_script {
chk_nginx
}
}
2.定义监控脚本,路径再keepalived里面已定义过
vim /usr/local/sbin/check_ng.sh
增加以下内容:
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
systemctl start nginx
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived
fi
fi
3.改动脚本的权限,设置为755权限
chmod 755 /usr/local/sbin/check_ng.sh
4.启动keepalived服务:
systemctl start keepalived
ps aux |grep keep
这时候就已经实现了 高可用
访问 192.168.153.100 看现在连接的是master主机
执行命令: systemctl stop keealived 就会切换到backup主机
执行命令:systemctl start keealived 又会重新切换回 master主机
这样我们就可以轻松实现了 主备的切换