目录
准备4台centos服务器和一台客户端
服务器 | 主机名 | IP | 备注 |
客户端 | / | 192.168.2.5 | / |
LVS服务器1 | lvs1 | DIP:[ens33]192.168.2.10/24 VIP:[ens33]192.168.2.100/24 | 关闭selinux和firewalld |
LVS服务器2 | lvs2 | DIP:[ens33]192.168.2.11/24 VIP:[ens33]192.168.2.100/24 | 关闭selinux和firewalld |
Web服务器1 | web1 | DIP:[ens33]192.168.2.20/24 VIP:[ens33]192.168.2.100/32 | 关闭selinux和firewalld |
Web服务器2 | web2 | DIP:[ens33]192.168.2.20/24 VIP:[ens33]192.168.2.100/32 | 关闭selinux和firewalld |
实验目标:在LVS-DR模式的基础上,使用keepalived对LVS服务器的VIP实现高可用。
参考:LVS-DR模式部署_桂安俊@kylinOS的博客-CSDN博客
其中将LVS服务器环境复制一份,建立2台主备LVS服务器,并将LVS服务器的VIP配置删除,下面用keepalived实现LVS服务器的VIP,并实现VIP高可用。
- #lvs1和lvs2服务器都执行
- yum install keepalived -y
-
- systemctl enable keepalived
-
- ipvsadm -C #清空lvs规则
vim /etc/keepalived/keepalived.conf #内容如下
- ! Configuration File for keepalived
-
- global_defs {
- router_id lvs1 #设置路由ID,每个节点设置不一样
- vrrp_iptables #禁止设置防火墙规则,默认会自动添加防火墙拒绝所有
- }
-
- vrrp_instance VI_1 {
- state MASTER #主服务器Master
- interface ens33 #网卡名
- virtual_router_id 51 #主辅VRID号必须一致
- priority 100 #服务器优先级
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass 1111
- }
- virtual_ipaddress {
- 192.168.2.100 #虚拟IP
- }
- }
-
- #LVS规则配置
- virtual_server 192.168.2.100 80 { #LVS VIP和端口
- lb_algo rr #设置LVS调度算法为rr,轮询
- lb_kind DR #设置LVS模式为DR模式
- #persistence_timeout 50 #开启后,客户端在指定时间(单位秒)内始终访问相同服务器,这里为了实验效果先关闭,生产环境应开启
- protocol TCP #设置TCP协议
-
- real_server 192.168.2.20 80 { #设置后端web服务器真实IP和端口
- weight 1 #设置权重为1
- TCP_CHECK { #对后台real_server做健康检查,比如这里检查192.168.2.20的80端口是否正常
- connect_timeout 3 #每次连接超时时间为3秒
- nb_get_retry 3 #如果连不上,就试3次
- delay_before_retry 3 #每隔3秒检查一次
- }
- }
- real_server 192.168.2.30 80 { #设置后端web服务器真实IP和端口
- weight 1 #设置权重为1
- TCP_CHECK { #对后台real_server做健康检查
- connect_timeout 3
- nb_get_retry 3
- delay_before_retry 3
- }
- }
- }
- systemctl restart keepalived
-
- ip a s ens33 #查看vip
ipvsadm -Ln #查看lvs集群
vim /etc/keepalived/keepalived.conf #内容如下
- ! Configuration File for keepalived
-
- global_defs {
- router_id lvs2 #修改,与lvs1不同
- vrrp_iptables
- }
-
- vrrp_instance VI_1 {
- state BACKUP #设置为backup
- interface ens33
- virtual_router_id 51 #和lvs1保持一致
- priority 50 #备机优先级比主master低一点
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass 1111
- }
- virtual_ipaddress {
- 192.168.2.100
- }
- }
-
- virtual_server 192.168.2.100 80 {
- lb_algo rr
- lb_kind DR
- #persistence_timeout 50
- protocol TCP
-
- real_server 192.168.2.20 80 {
- weight 1
- TCP_CHECK {
- connect_timeout 3
- nb_get_retry 3
- delay_before_retry 3
- }
- }
- real_server 192.168.2.30 80 {
- weight 1
- TCP_CHECK {
- connect_timeout 3
- nb_get_retry 3
- delay_before_retry 3
- }
- }
- }
- systemctl restart keepalived
-
- ipvsadm -Ln
将192.168.2.100所在服务器关机,查看VIP漂移到备机,并正常提供LVS负载均衡服务
注1:lvs也是自带健康检查的,如果web1宕机,lvs集群会自动剔除web1,当web1恢复正常后,lvs会将web1重新加入lvs集群。
注2:如果使用客户端浏览器测试轮询,应使用火狐浏览器(ctrl+f5强制刷新),使用谷歌和360浏览器测试发现不会轮询,始终访问的一个IP。