一、Keepalived安装:
1.下载,用XFtp上传到centos7系统/root目录:
下载:
https://www.keepalived.org/download.html
解压:
[root@VM-0-11-centos ~]# tar zxf keepalived-2.2.4.tar.gz
2.安装:
(1)安装依赖:
[root@VM-0-11-centos keepalived-2.2.4]# yum -y install libnl libnl-devel
[root@VM-0-11-centos keepalived-2.2.4]# yum -y install openssl-devel
[root@VM-0-11-centos keepalived-2.2.4]# yum -y install gcc-c++
(2)用configure创建makeFile文件(cd到/root/keepalived-2.2.4目录):
[root@VM-0-11-centos keepalived-2.2.4]# ./configure --prefix=/usr/local/keepalived --sysconf=/etc
(3)编译源码:
[root@VM-0-11-centos keepalived-2.2.4]# make
(4)安装:
[root@VM-0-11-centos keepalived-2.2.4]# make install
(5)查看安装目录:
[root@VM-0-11-centos keepalived-2.2.4]# whereis keepalived
二、Keepalived配置双机主备:
说明:需要2台云服务器,主机不宕机时,备机不会被使用(存在资源浪费)。
1.MASTER主机配置(双机主备):
(1)修改keepalived.conf(cd到/etc/keepalived目录)
[root@VM-0-11-centos keepalived]# vi keepalived.conf
内容如下:
global_defs {
router_id keep_101 #设置路由id(主机唯一标识)
}
vrrp_instance VI_1 {
state MASTER #设置为MASTER主机(备机为BACKUP)
interface eth0 #设置绑定的网卡,此处网卡为eth0
virtual_router_id 51 #主机和备机此值要一样
priority 100 #设置权重,MASTER主机值要大于BACKUP备机值
advert_int 1 #主机与备机同步检查间隔,单位为秒
#设置认证权限
authentication {
auth_type PASS #认证类型为密码
auth_pass 1234 #具体密码
}
virtual_ipaddress {
192.168.200.101 #虚拟IP,主/备机此处保持一致,默认绑定主机,主机宕机时绑定备机
}
}
2.BACKUP备机配置(双机主备):
(1)修改keepalived.conf(cd到/etc/keepalived目录)
[root@VM-0-11-centos keepalived]# vi keepalived.conf
内容如下:
global_defs {
router_id keep_102 #设置路由id(备机唯一标识)
}
vrrp_instance VI_1 {
state BACKUP #设置为BACKUP备机
interface eth0 #设置绑定的网卡,此处网卡为eth0
virtual_router_id 51 #备机此值要和主机一样
priority 80 #设置权重,BACKUP备机值要低于MASTER主机值
advert_int 1 #备机与主机同步检查间隔,单位为秒
#设置认证权限
authentication {
auth_type PASS #认证类型为密码
auth_pass 1234 #具体密码
}
virtual_ipaddress {
192.168.200.101 #虚拟IP,备/主机此处保持一致,主机宕机时绑定备机
}
}
3.启动/停止/重启keepalived:
(1)启动:
[root@VM-0-11-centos keepalived]# systemctl start keepalived
(2)停止:
[root@VM-0-11-centos keepalived]# systemctl stop keepalived
(3)重启:
[root@VM-0-11-centos keepalived]# systemctl restart keepalived
(4)查看进程:
[root@VM-0-11-centos keepalived]# ps -ef|grep keepalived
4.将keepalived注册为系统服务:
(1)将init.d目录下的keepalived文件拷贝到/etc/init.d目录下(cd到/root/keepalived-2.2.4/keepalived/etc目录):
[root@VM-0-11-centos etc]# cp init.d/keepalived /etc/init.d/
(2)将sysconfig目录下的keepalived文件拷贝到/etc/sysconfig目录下(cd到/root/keepalived-2.2.4/keepalived/etc目录):
[root@VM-0-11-centos etc]# cp sysconfig/keepalived /etc/sysconfig/
(3)重新加载:
[root@VM-0-11-centos etc]# systemctl daemon-reload
(4)启动keepalived服务:
[root@VM-0-11-centos etc]# systemctl start keepalived.service
5.用keepalived定时检查并重启宕机的nginx:
(1)新增检查脚本keepalived_check.sh(cd到/etc/keepalived目录):
[root@VM-0-11-centos keepalived]# vi keepalived_check.sh
内容如下:
#!/bin/bash
N=`ps -C nginx --no-header | wc -l` #获取nginx进程数,N为自定义变量
if [ $N -eq 0 ];then #检查nginx进程数是否为0(宕机),是则重启
/usr/local/nginx/sbin/nginx #重启nginx
sleep 3 #等待3秒
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then #检查nginx,没有启动成功时停止keepalived,自动启动备用机
killall keepalived #停止keepalived
fi
fi
(2)给脚本添加权限:
[root@VM-0-11-centos keepalived]# chmod +x keepalived_check.sh
测试启动:
[root@VM-0-11-centos keepalived]# ./keepalived_check.sh
(3)定时执行脚本:
修改keepalived.conf(cd到/etc/keepalived目录):
[root@VM-0-11-centos keepalived]# vi keepalived.conf
内容如下:
...
vrrp_script nginx_check { #nginx_check为自定义方法名
script "/etc/keepalived/keepalived_check.sh" #运行keepalived_check.sh脚本
interval 2 #定期执行间隔时间,单位为秒
weight 5 #脚本运行成功vrrp_instance VI_1的priority(权重)属性值+5
#weight -5 #脚本运行失败vrrp_instance VI_1的priority(权重)属性值-5
}
vrrp_instance VI_1 {
...
track_script {
nginx_check #调用上述定义的nginx_check方法
}
}
...
(4)重启生效:
[root@VM-0-11-centos keepalived]# systemctl restart keepalived
三、Keepalived配置双主热备:
说明:需要2台云服务器,主/备机同时使用。
1.第1台MASTER+BACKUP配置(双主热备):
(1)修改keepalived.conf(cd到/etc/keepalived目录):
[root@VM-0-11-centos keepalived]# vi keepalived.conf
内容如下:
global_defs {
router_id keep_101 #设置路由id(主机唯一标识)
}
vrrp_instance VI_1 { #与第2台VI_1配套
state MASTER #设置为第1台MASTER主机,与第2台BACKUP对应
interface eth0 #设置绑定的网卡,此处网卡为eth0
virtual_router_id 51 #第1个虚拟路由id,此处和第2台VI_1的virtual_router_id一样
priority 100 #设置权重,MASTER主机值要大于BACKUP备机值
advert_int 1 #主机与备机同步检查间隔,单位为秒
authentication { #设置认证权限
auth_type PASS #认证类型为密码
auth_pass 1234 #具体密码
}
virtual_ipaddress {
192.168.200.101 #第1个虚拟IP,此处和第2台VI_1的virtual_ipaddress一样,默认绑定第1台MASTER,第1台MASTER宕机时绑定第2台BACKUP
}
}
vrrp_instance VI_2 { #与第2台VI_2配套
state BACKUP #设置为第1台BACKUP备机,与第2台MASTER对应
interface eth0 #设置绑定的网卡,此处网卡为eth0
virtual_router_id 52 #第2个虚拟路由id,此处和第2台VI_2的virtual_router_id一样
priority 80 #设置权重,BACKUP备机值要低于MASTER主机值
advert_int 1 #备机与主机同步检查间隔,单位为秒
authentication { #设置认证权限
auth_type PASS #认证类型为密码
auth_pass 1234 #具体密码
}
virtual_ipaddress {
192.168.200.102 #第2个虚拟IP,此处和第2台VI_2的virtual_ipaddress一样,默认绑定第2台MASTER,第2台MASTER宕机时绑定第1台BACKUP
}
}
2.第2台BACKUP+MASTER配置(双主热备):
(1)修改keepalived.conf(cd到/etc/keepalived目录)
[root@VM-0-11-centos keepalived]# vi keepalived.conf
内容如下:
global_defs {
router_id keep_102 #设置路由id(备机唯一标识)
}
vrrp_instance VI_1 { #与第1台VI_1配套
state BACKUP #设置为第2台BACKUP备机,与第1台MASTER对应
interface eth0 #设置绑定的网卡,此处网卡为eth0
virtual_router_id 51 #第1个虚拟路由id,此处和第1台VI_1的virtual_router_id一样
priority 80 #设置权重,BACKUP备机值要低于MASTER主机值
advert_int 1 #备机与主机同步检查间隔,单位为秒
authentication { #设置认证权限
auth_type PASS #认证类型为密码
auth_pass 1234 #具体密码
}
virtual_ipaddress {
192.168.200.101 #第1个虚拟IP,此处和第1台VI_1的virtual_ipaddress一样,第1台MASTER宕机时绑定第2台BACKUP
}
}
vrrp_instance VI_2 { #与第1台VI_2配套
state MASTER #设置为MASTER主机(备机为BACKUP),与第1台BACKUP对应
interface eth0 #设置绑定的网卡,此处网卡为eth0
virtual_router_id 52 #虚拟路由id,主机VI_1和备机VI_1此处要一样
priority 100 #设置权重,MASTER主机值要大于BACKUP备机值
advert_int 1 #主机与备机同步检查间隔,单位为秒
authentication { #设置认证权限
auth_type PASS #认证类型为密码
auth_pass 1234 #具体密码
}
virtual_ipaddress {
192.168.200.102 #第2个虚拟IP,此处和第1台VI_2的virtual_ipaddress一样,第2台MASTER宕机时绑定第1台BACKUP
}
}
3.在两台服务器中重启keepalived生效:
[root@VM-0-11-centos keepalived]# systemctl restart keepalived