前言
1、编译环境
系统:CentOS
Master IP:172.16.10.200
Backup IP:172.16.10.201
VIP:172.16.10.254
2、脚本使用说明
1、sh install_keepalived.sh 虚拟地址 运行VRRP的网卡 监听的端口 主备状态
如:在ens32接口上运行VRRP协议,状态为MASTER,VIP地址为172.16.10.254,并监听443端口是否正常运行
sh install_keepalived.sh 172.16.10.254 ens32 443 MASTER
一、MASTER部署
###1、直接执行
sh install_keepalived.sh 172.16.10.254 ens32 443 MASTER
2、出现以下界面即编译安装成功,安装目录为/usr/local/keepalived/,配置文件位置为/usr/local/etc/keepalived/keepalived.conf
二、BACKUP部署
1、运行
sh install_keepalived.sh 172.16.10.254 ens32 443 BACKUP
2、出现以下界面即编译安装完成
三、抓包分析
正常状态下的Master会向网络中不断发送通告报文
注意事项:
1、 运行VRRP协议需要防火墙允许224.0.0.18出入站
2、 如果想修改keepalived配置可通过运行keepalived_conf.sh修改
如:sh keepalived_conf.sh 172.16.10.254 ens32 22 MASTER
四、代码区
安装脚本
#!/bin/sh
VIP="$1"
eth="$2"
ports="$3"
status="$4"
wget https://www.keepalived.org/software/keepalived-2.2.7.tar.gz
tar -zxf keepalived-2.2.7.tar.gz
cd keepalived-2.2.7
yum install gcc-c++ openssl-devel -y
./configure --prefix=/usr/local/keepalived
make&&make install
ln -s /usr/local/keepalived/sbin/keepalived /usr/local/sbin/
mkdir /usr/local/etc/keepalived/
if [ "$status" = "MASTER" ];then
pri="150"
else
pri="120"
fi
mkdir /usr/local/etc/keepalived/
echo > /usr/local/etc/keepalived/keepalived.conf
cat >/usr/local/etc/keepalived/keepalived.conf<<EOF
vrrp_script chk_port {
script "</dev/tcp/127.0.0.1/$ports"
interval 1
weight -50
}
vrrp_instance VI_1 {
state $status
interface $eth
garp_master_delay 10
virtual_router_id 51
priority $pri
advert_int 1
virtual_ipaddress {
$ip_addr
}
track_script {
chk_port
}
}
EOF
systemctl enable keepalived&&systemctl restart keepalived&&systemctl status keepalived
复制保存为install_keepalived.sh,然后sh install_keepalived.sh
改配置脚本
#!/bin/sh
VIP="$1"
eth="$2"
ports="$3"
status="$4"
if [ "$status" = "MASTER" ];then
pri="150"
else
pri="120"
fi
mkdir /usr/local/etc/keepalived/
echo > /usr/local/etc/keepalived/keepalived.conf
cat >/usr/local/etc/keepalived/keepalived.conf<<EOF
vrrp_script chk_port {
script "</dev/tcp/127.0.0.1/$ports"
interval 1
weight -50
}
vrrp_instance VI_1 {
state $status
interface $eth
garp_master_delay 10
virtual_router_id 51
priority $pri
advert_int 1
virtual_ipaddress {
$ip_addr
}
track_script {
chk_port
}
}
EOF
systemctl enable keepalived&&systemctl restart keepalived&&systemctl status keepalived
复制保存为keepalived_conf.sh,用法详见注意事项