注意:
1.某个keepalived服务所在的机器作为当前master时,是无法访问VIP的(curl VIP)
2.出现脑裂会导致无法ping通VIP,脑裂是一种主被互相不能通信导致各自为政的情况
1.环境配置:
keepalived-master:192.168.8.8
keepalived-backup:192.168.8.9
nginx1:192.168.8.10
nginx2:192.168.8.11
配置VIP:192.168.8.6
# 系统均为CentOS Linux release 7.7.1908 (Core) 5.6.6-1.el7.elrepo.x86_64
2.部署软件:
都是用yum安装,比较方便
部署nginx0,192.168.8.10
# 关闭防火墙,也可以配置允许端口访问
systemctl stop firewalld && systemctl disable firewalld
yum install epel-release -y
yum install nginx net-tools -y
systemctl start nginx && systemctl enable nginx
ps aux | grep "nginx"
echo "nginx0 192.168.8.10" > /usr/share/nginx/html/index.html
# ifconfig命令由上面net-tools安装包内所带,设置虚拟ip比较方便容易。
# 应该也可以使用最新的ip命令
# 增加VIP,路由
ifconfig lo:0 192.168.8.6 netmask 255.255.255.255 broadcast 192.168.8.6
/sbin/route add -host 192.168.8.6 dev lo:0
# 查看lo设备商有没有设置的VIP
ip a
# 抑制ARP
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
部署nginx1,192.168.8.11
# 关闭防火墙,也可以配置允许端口访问
systemctl stop firewalld && systemctl disable firewalld
yum install epel-release -y
yum install nginx net-tools -y
systemctl start nginx && systemctl enable nginx
ps aux | grep "nginx"
echo "nginx1 192.168.8.11" > /usr/share/nginx/html/index.html
# ifconfig命令由上面net-tools安装包内所带,设置虚拟ip比较方便容易。
# 应该也可以使用最新的ip命令
# 增加VIP,路由
ifconfig lo:0 192.168.8.6 netmask 255.255.255.255 broadcast 192.168.8.6
/sbin/route add -host 192.168.8.6 dev lo:0
# 查看lo设备商有没有设置的VIP
ip a
# 抑制ARP
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
部署keepalived0+ipvsadm,192.168.8.8
systemctl stop firewalld && systemctl disable firewalld
yum install keepalived ipvsadm -y
修改keepalived配置文件
vi /etc/keepalived/keepalived.conf
配置文件如下:
global_defs {
notification_email {
lizhejie@hotmail.com
}
notification_email_from sns-lvs@gmail.com
smtp_server 192.168.8.1
smtp_connection_timeout 30
router_id LVS_DEVEL # 设置lvs的id,在一个网络内应该是唯一的
}
vrrp_instance VI_1 {
state MASTER #指定Keepalived的角色,MASTER为主,BACKUP为备 记得大写
interface ens32 #网卡id 不同的电脑网卡id会有区别 可以使用:ip a查看
virtual_router_id 51 #虚拟路由编号,主备要一致
priority 100 #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
advert_int 1 #检查间隔,默认为1s
authentication { #这里配置的密码最多为8位,主备要一致,否则无法正常通讯
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.8.6 #定义虚拟IP(VIP)为192.168.7.6,可多设,每行一个
}
}
# 定义对外提供服务的LVS的VIP以及port
virtual_server 192.168.8.6 80 {
delay_loop 6 # 设置健康检查时间,单位是秒
lb_algo rr # 设置负载调度的算法为rr
lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.8.10 80 { # 指定real server0的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.8.11 80 { # 指定real server1的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
部署keepalived1+ipvsadm,192.168.8.9
systemctl stop firewalld && systemctl disable firewalld
yum install keepalived ipvsadm -y
修改keepalived配置文件
vi /etc/keepalived/keepalived.conf
配置文件如下:
global_defs {
notification_email {
lizhejie@hotmail.com
}
notification_email_from sns-lvs@gmail.com
smtp_server 192.168.8.1
smtp_connection_timeout 30
router_id LVS_DEVEL # 设置lvs的id,在一个网络内应该是唯一的
}
vrrp_instance VI_1 {
state BACKUP #指定Keepalived的角色,MASTER为主,BACKUP为备 记得大写
interface ens32 #网卡id 不同的电脑网卡id会有区别 可以使用:ip a查看
virtual_router_id 51 #虚拟路由编号,主备要一致
priority 50 #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
advert_int 1 #检查间隔,默认为1s
authentication { #这里配置的密码最多为8位,主备要一致,否则无法正常通讯
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.8.6 #定义虚拟IP(VIP)为192.168.1.200,可多设,每行一个
}
}
# 定义对外提供服务的LVS的VIP以及port
virtual_server 192.168.8.6 80 {
delay_loop 6 # 设置健康检查时间,单位是秒
lb_algo rr # 设置负载调度的算法为rr
lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.8.10 80 { # 指定real server0的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.8.11 80 { # 指定real server1的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
启动两个keepalived服务
systemctl start keepalived && systemctl enable keepalived
查看VIP状态和LVS转发状态
#查看两台keepalived服务器上的VIP情况
# 当前MASTER节点网卡上会出现VIP,BACKUP上没有VIP
# 关闭MASTER节点keepalived服务后,VIP会漂移到BACKUP节点网卡上
ip a
# 查看转发状态
# 会看到设置的VIP转发到后端的nginx上
ipvsadm -Ln
测试服务成功与否
在宿主机浏览器地址栏键入VIP进行浏览
#chrome可能需要浏览一次清除缓存,火狐可以强制刷新。可以看到出现的结果不一样