一、环境说明
web1 10.0.0.3
web2 10.0.0.4
keepalived主 10.0.0.10
keepalived 10.0.0.12
二、web准备环境
二、安装keepalived
10和12分别执行安装keepalived的命令
yum install -y keepalive
三、配置
1、启动
[root@ld01 ~]# systemctl enable keepalived.service
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.
[root@ld01 ~]# systemctl start keepalived.service
2、查看VIP
3、说明
配置文件中!和#号都表示注释
GLOBAL 全局定义
VRRPD CONFIGURATION VRRP实例部分 VIP
LVS CONFIGURATION keepalived管理配置
--添加虚拟IP(ifconfig无法识别):ip addr add 10.0.0.66/24 dev eth0
生产环境不能添加虚拟ip,得用真实的公网ip,将其设置为VIP,把域名解析到VIP上(之前阿里云有VIP,但是后来阿里云出现了自己的高可用产品后,取消了VIP服务)
--添加虚拟ip(ifconfig可识别):ip addr add 10.0.0.67/24 dev eth0 label eth0:1
4、修改配置
[root@ld01 ~]# ip a|grep 10.0.0.10
inet 10.0.0.10/24 brd 10.0.0.255 scope global eth0
[root@ld01 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id lb01 ##修改成主机名(其实修改成什么都可以,只要不和另一个一样就行)
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 { #不做修改
state MASTER #状态主备,MASTER为主
interface eth0
virtual_router_id 51 #不改
priority 100 #优先级,主的一定要比备大
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3/24 dev eth0 label eth0:1 #vip
}
}
-----------------------------------------------------------------------------
[root@lb02 ~]# ip a|grep 10.0.0.12
inet 10.0.0.12/24 brd 10.0.0.255 scope global eth0
[root@lb02 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id lb02
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3/24 dev eth0 label eth0:1
}
}
----------------------------------------------
2台主机执行:
systemctl restart network
systemctl restart keepalived
----------------------------
四、实现高可用功能
在主节点关闭keepalive服务,然后查看10.0.0.3的ip是否飘逸过去,如果飘逸过去说明成功;
五、脚本+keepalived实现高可用功能
当检测到nginx关闭之后,自动关闭主节点keepalived,从而实现主备切换
1、 mkdir -p /server/scripts/
2、 [root@ld01 service]# cat /server/scripts/chk_lb.sh (记得授权+X)
#!/bin/bash
ss=`netstat -lntp|grep nginx|wc -l`
if [ $ss -eq 0 ];then
echo "nginx is down"
#systemctl stop keepalived
systemctl stop keepalived.service
fi
3、 keepalived调用脚本 (俩台主机全部都配置)
[root@ld01 service]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id lb01
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_lb {
script /server/scripts/chk_lb.sh
interval 2
timeout 10
weight 1
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.3/24 dev eth0 label eth0:1
}
track_script {
chk_lb
}
}
----------------------------
现在关闭nginx,keepalived也就自动关闭了;
有问题请加博主微信进行沟通!
全部评论