Centos7 Keepalived
前置配置
两台Centos7虚拟机
主机规划
IP | 主机名 | 节点 |
---|---|---|
192.168.237.151 | master | 主节点 |
192.168.237.152 | backup | 从节点 |
1.基础配置
1.1 修改主机名
master节点
[root@localhost ~]# hostnamectl set-hostname master
[root@localhost ~]# bash
backup节点
[root@localhost ~]# hostnamectl set-hostname backup
[root@localhost ~]# bash
1.2 关闭防火墙与selinux
[root@master ~]# systemctl stop firewalld
[root@master ~]# setenforce 0
[root@backup ~]# systemctl stop firewalld
[root@backup ~]# setenforce 0
1.3 安装Keepalived
[root@master ~]# yum -y install keepalived
[root@backup ~]# yum -y install keepalived
1.4 安装nginx
[root@master ~]# yum clean all
[root@master ~]# yum install -y epel-release
[root@master ~]# yum -y install nginx
[root@backup ~]# yum clean all
[root@backup ~]# yum install -y epel-release
[root@backup ~]# yum -y install nginx
1.5 配置Keepalived
[root@master keepalived]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email { # 设置报警邮件地址可以设置多个
test@qq.com
}
notification_email_from root@qq.com #发送邮件通知的地址
smtp_server 127.0.0.1 # smtpserver 地址
smtp_connect_timeout 30 # 连接smtpserver的超时时间
router_id LVS_DEVEL # 主机标识用于邮件通知
}
vrrp_script check_nginx {
script "/usr/local/sbin/check_ng.sh" # 脚本地址
interval 3 # 检查时间间隔3秒
}
vrrp_instance VI_1 {
state MASTER # 指定keepalived节点的初始状态
interface ens33 # vrrp实例绑定的接口
virtual_router_id 51 # 指定VRRP实例ID,范围是0-255.
priority 100 # 权重,主角色和从角色的权重是不同的,一般主比从大
advert_int 1 # MASTER与BACKUP主机同步检查的时间间隔,单位为秒
authentication { # 认证相关信息
auth_type PASS # 认证类型 PASS简单密码认证(推荐),AH:IPSEC认证(不推荐)
auth_pass 123456789 # 指定认证所使用的密码。最多8位。
}
virtual_ipaddress { # 设置虚拟IP地址
192.168.237.100
}
track_script { # 加载脚本
check_nginx
}
}
添加监控脚本
[root@master keepalived]# vim /usr/local/sbin/check_ng.sh
#!/bin/bash
d=`date --date today +%Y%m%d_%H:%M:%S`
n=`ps -C nginx --no-heading|wc -l`
if [ $n -eq "0" ]; then
systemctl restart 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
给此脚本文件授权
[root@master keepalived]# chmod a+x /usr/local/sbin/check_ng.sh
1.6 验证是否配置成功
[root@master keepalived]# systemctl start keepalived
[root@master keepalived]# netstat -tunpl | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 11530/nginx: master
tcp6 0 0 :::80 :::* LISTEN 11530/nginx: master
#如果nginx自动启动就表示配置成功
1.7 配置backup 节点上的Keepalived
[root@backup ~]# cd /etc/keepalived/
[root@backup keepalived]# vim keepalived.conf
global_defs {
notification_email { # 设置报警邮件地址可以设置多个
test@qq.com
}
notification_email_from root@qq.com #发送邮件通知的地址
smtp_server 127.0.0.1 # smtpserver 地址
smtp_connect_timeout 30 # 连接smtpserver的超时时间
router_id LVS_DEVEL # 主机标识用于邮件通知
}
vrrp_script check_nginx {
script "/usr/local/sbin/check_ng.sh" # 脚本地址
interval 3 # 检查时间间隔3秒
}
vrrp_instance VI_1 {
state BACKUP # 指定keepalived节点的初始状态
interface ens33 # vrrp实例绑定的接口
virtual_router_id 51 # 指定VRRP实例ID,范围是0-255.
priority 90 # 权重,主角色和从角色的权重是不同的,一般主比从大
advert_int 1 # MASTER与BACKUP主机同步检查的时间间隔,
authentication { # 认证相关信息
auth_type PASS # 认证类型 PASS简单密码认证(推荐),AH:IPSEC认证(不推荐)
auth_pass 123456789 # 指定认证所使用的密码。最多8位。
}
virtual_ipaddress { # 设置虚拟IP地址
192.168.237.100
}
track_script { # 加载脚本
check_nginx
}
}
[root@backup keepalived]# vim /usr/local/sbin/check_ng.sh
#!/bin/bash
d=`date --date today +%Y%m%d_%H:%M:%S`
n=`ps -C nginx --no-heading|wc -l`
if [ $n -eq "0" ]; then
systemctl restart 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
给脚本文件授权并开启服务
[root@backup keepalived]# chmod a+x /usr/local/sbin/check_ng.sh
[root@backup keepalived]# systemctl start keepalived
2. 验证Keepalived
2.1 验证
[root@master keepalived]# vim /usr/share/nginx/html/index.html
This is master
[root@master keepalived]# curl 192.168.237.151
this is master
[root@master keepalived]# curl 192.168.237.100
this is master
[root@backup keepalived]# vim /usr/share/nginx/html/index.html
This is backup
[root@backup keepalived]# curl 192.168.237.152
This is backup
[root@backup keepalived]# curl 192.168.237.100
this is master
2.2 测试如果主节点宕机,是否会有虚拟IP正常访问地址备用节点
[root@master keepalived]# systemctl stop keepalived
[root@master keepalived]# curl 192.168.237.100
This is backup
这边显示可以访问。
也可以在浏览器访问验证