1.安装keepalived
上传keepalived包
安装keepalived之前需要安装openssl,否则安装不成功,openssl是keepalived运行依赖的类库,这里先把openssl安装包上传
先把环境安装好
安装好环境之后开始安装keepalived
查看安装目录
rmp –ql keepalived
编辑核心配置信息
global_defs {
notification_email { #指定keepalived在发生切换时需要发送email到的对象,一行一个
XXX@XXX.com
}
notification_email_from XXX@XXX.com #指定发件人
#smtp_server XXX.smtp.com #指定smtp服务器地址
#smtp_connect_timeout 30 #指定smtp连接超时时间
router_id LVS_DEVEL #运行keepalived机器的一个标识
}
vrrp_instance VI_1 {
state MASTER #主机标示状态为MASTER 备份机为BACKUP
interface eth1 #设置实例绑定的网卡
virtual_router_id 51 #同一实例下virtual_router_id必须相同
priority 100 #MASTER权重要高于BACKUP 比如BACKUP为99
advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置认证
auth_type PASS #主从服务器验证方式
auth_pass 5555 #密码要一致
}
virtual_ipaddress { #设置vip
192.168.25.190 #可以多个虚拟IP,换行即可
}
}
保存退出
然后启动keepalived
service keepalived start 启动
(service keepalived stop关闭
service keepalived status 查看状态
service keepalived restart 重启)
查看 keepalived的日志信息
tail -f /var/log/messages
查看 eth1 网卡接口上是否有 VIP
Ip add show eth1
如果有则证明都没问题,主机的keepalived就搭建好了
2.搭建备机方案
同主机操作,先安装openssl,再安装keepalived,安装成功后编辑配置文件
/etc/keepalived/keepalived.conf 打开配置文件
备机的配置
global_defs {
notification_email { #指定keepalived在发生切换时需要发送email到的对象,一行一个
XXX@XXX.com
}
notification_email_from XXX@XXX.com #指定发件人
#smtp_server XXX.smtp.com #指定smtp服务器地址
#smtp_connect_timeout 30 #指定smtp连接超时时间
router_id LVS_DEVEL #运行keepalived机器的一个标识
}
vrrp_instance VI_1 {
state BACKUP #主机标示状态为MASTER 备份机为BACKUP
interface eth1 #设置实例绑定的网卡
virtual_router_id 51 #同一实例下virtual_router_id必须相同
priority 99 #MASTER权重要高于BACKUP 比如BACKUP为99
advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置认证
auth_type PASS #主从服务器验证方式
auth_pass 5555
}
virtual_ipaddress { #设置vip
192.168.25.190 #可以多个虚拟IP,换行即可,虚拟ip要跟主机保持一致
}
}
红色字体处为改动过的
保存退出
然后启动keepalived
查看 eth1 网卡接口
Ip add show eth1
此时不会有虚拟ip,只有主机挂掉的时候这里才会有
测试,在浏览器直接输入我们设置的虚拟ip,效果和访问Nginx主机地址效果相同,这样就配置成功了
3.注意问题及解决方案
Keepalived 是通过检测 keepalived进程是否存在来判断服务器是否宕机,如果keepalived进程在但是nginx进程不再了,那么keepalived是不会做主备切换,所以我们需要写个脚本来监控nginx进程是否存在,如果nginx不存在就将keepalived进程杀掉。
监控脚本
#!/bin/bash
# 如果进程中没有nginx则将keepalived进程kill掉
A=`ps -C nginx --no-header |wc -l` ## 查看是否有 nginx进程 把值赋给变量A
if [ $A -eq 0 ];then ## 如果没有进程值得为零
service keepalived stop ## 则结束 keepalived 进程
fi
配置监控脚本
切换目录cd /etc/keepalived/
然后创建脚本程序文件执行命令touch check_nginx.sh
然后修改它的权限为可执行chmod 700 check_nginx.sh
然后向里面存放脚本代码vim check_nginx.sh
将上面的脚本程序代码粘贴进来保存退出
执行脚本的配置
在主机上配置
global_defs {
notification_email { #指定keepalived在发生切换时需要发送email到的对象,一行一个
XXX@XXX.com
}
notification_email_from XXX@XXX.com #指定发件人
#smtp_server XXX.smtp.com #指定smtp服务器地址
#smtp_connect_timeout 30 #指定smtp连接超时时间
router_id LVS_DEVEL #运行keepalived机器的一个标识
}
vrrp_script check_nginx {
script"/etc/keepalived/check_nginx.sh" ##监控脚本
interval 2 ##时间间隔,2秒
weight 2 ##权重
}
vrrp_instance VI_1 {
state MASTER #主机标示状态为MASTER 备份机为BACKUP
interface eth1 #设置实例绑定的网卡
virtual_router_id 51 #同一实例下virtual_router_id必须相同
priority 100 #MASTER权重要高于BACKUP 比如BACKUP为99
advert_int 1 #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置认证
auth_type PASS #主从服务器验证方式
auth_pass 5555 #密码要一致
}
track_script {
check_nginx #监控脚本
}
virtual_ipaddress { #设置vip
192.168.25.190 #可以多个虚拟IP,换行即可
}
}
红色字体为修改添加的代码,保存退出,重启keepalived,此时如果停止nginx,keepalived也会同时停止