部署keepalived+LVS

本文档详细介绍了如何使用keepalived和LVS构建高可用的集群服务器,包括主机配置、软件环境、拓扑结构以及部署步骤。通过设置LVS进行web服务器轮询调度,并利用keepalived实现故障时的自动切换,确保服务的连续性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明

本文章介绍使用keepalived+LVS的方式搭建高可用的集群服务器





主机配置列表

主机名IP地址角色
client192.168.4.10/24客户端
LVS1192.168.4.5/24
192.168.4.15(VIP)
主调度服务器
主keepalived服务器
LVS2192.168.4.6/24
192.168.4.15(VIP)
备调度服务器
备keepalived服务器
web1192.168.4.100/24web服务器
web2192.168.4.200/24web服务器




软件环境

软件名称版本
Centos7.5
httpd2.4.6
keepalive1.3.5
ipvsadm1.27




拓扑图

在这里插入图片描述





介绍

  1. proxy1、proxy2安装LVS软件,实现web服务器的轮询调度
  2. proxy1、proxy2安装keepalived软件,实现LVS的高可用集群
  3. web1、web2安装httpd软件,提供测试界面
  4. web1、web2的回环网卡上配置VIP地址,实现LVS的DR工作模式
  5. web1、web2配置网络内核参数,不回应ARP广播,不对外宣告网络
  6. client访问VIP
    • 可以轮询到web1、web2的测试界面,说明主调度器正常工作,此时VIP在主调度器上,此时VIP在主调度器上
    • 关闭主调度器,模拟调度器宕机,client访问VIP,可以轮询到web1、web2的测试界面,同时查看VIP是否出现在备调度器上,如果出现,说明keepalived实现了故障时自动切换,此时VIP地址在备调度器上
    • 重新打开主调度器,client访问VIP,可以轮询到web1、web2的测试界面,同时查看VIP是否出现在主调度器上,如果出现,说明可以实现故障恢复后主调度器可以重新获取VIP成为主服务器,此时VIP出现在主调度器上




部署步骤

1.web1修改IP地址为192.168.4.100/24,关闭防火墙,关闭selinux,安装httpd软件,写入测试界面

[root@web1 ~]# sed -i '/IPADDR/c IPADDR=192.168.4.100' /etc/sysconfig/network-scripts/ifcfg-eth0 && systemctl restart network #修改IP地址,重启网卡
[root@web1 ~]# ip a s #查看IP

[root@web1 ~]# systemctl stop firewalld && systemctl disable firewalld #关闭防火墙,禁止开机自启

[root@web1 ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config  #关闭selinux,重启服务器后生效

[root@web1 ~]# yum -y install httpd #安装httpd软件
[root@web1 ~]# echo "192.168.4.100-web1" > /var/www/html/index.html #写入测试界面
[root@web1 ~]# systemctl start httpd && systemctl enable httpd #启动httpd服务,设置开机自启

[root@web1 ~]# reboot #重启服务器,让selinux生效


2.web1修改网络内核参数

[root@web1 ~]# vim /etc/sysctl.conf #修改网络内核参数文件
net.ipv4.conf.all.arp_ignore = 1  #配置全部网卡不回应arp广播,不包括lo网卡
net.ipv4.conf.lo.arp_ignore = 1   #配置lo网卡不回应arp广播
net.ipv4.conf.lo.arp_announce = 2  #配置lo网卡不对外宣告网络
net.ipv4.conf.all.arp_announce = 2  #配置全部网卡不对外宣告网络,不包括lo网卡

[root@web1 ~]# sysctl -p #刷新让参数生效

说明

  • arp_ignore表示当有arp广播问谁是192.168.4.15时,本机忽略该ARP广播,不做任何回应(防止进站冲突),默认是0不忽略,1表示忽略
  • arp_announce本机不要向外宣告自己的lo回环地址是192.168.4.15(防止出站冲突),2表示不向外宣告,默认值是0表示对外宣告
  • 回环网卡没有物理网线连接,所以才能伪装成VIP


3.web1在回环网卡上添加集群的VIP192.168.4.15/32

[root@web1 ~]# cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0 #复制第二个IP的配置文件
[root@web1 ~]# 	 #修改配置文件
DEVICE=lo:0 #设备名称
IPADDR=192.168.4.15 #IP地址
NETMASK=255.255.255.255  #子网掩码
NETWORK=192.168.4.15 #网络地址
BROADCAST=192.168.4.15 #广播地址
ONBOOT=yes #开机时是否自动激活网卡
NAME=lo:0 #网卡名称

[root@web1 ~]# systemctl restart network #重启网卡
[root@web1 ~]# ip a s #查看回环网卡上的第2个IP

说明

  • 配置的VIP地址,必须是32位,网络地址和IP地址一样,广播地址和IP地址一样,配置完成后,需要修改网络内核参数之后,再重启网卡,如果先修改的网络内核参数,则可以直接重启网卡
  • 回环网卡没有物理网线连接,所以才能伪装成VIP


4.web2修改IP地址为192.168.4.200/24,关闭防火墙,关闭selinux,安装httpd软件,写入测试界面

[root@web2 ~]# sed -i '/IPADDR/c IPADDR=192.168.4.200' /etc/sysconfig/network-scripts/ifcfg-eth0 && systemctl restart network #修改IP地址,重启网卡

[root@web2 ~]# systemctl stop firewalld && systemctl disable firewalld #关闭防火墙,禁止开机自启

[root@web2 ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config #关闭selinux,重启服务器后生效

[root@web2 ~]# yum -y install httpd #安装httpd软件
[root@web2 ~]# echo "192.168.4.200-web2" > /var/www/html/index.html #写入测试界面
[root@web2 ~]# systemctl start httpd && systemctl enable httpd #启动httpd服务,设置开机自启

[root@web2 ~]# reboot #重启服务器,让selinux生效


5.web2修改网络内核参数

[root@web2 ~]# vim /etc/sysctl.conf #修改网络内核参数文件
net.ipv4.conf.all.arp_ignore = 1  #配置全部网卡不回应arp广播,不包括lo网卡
net.ipv4.conf.lo.arp_ignore = 1   #配置lo网卡不回应arp广播
net.ipv4.conf.lo.arp_announce = 2  #配置lo网卡不对外宣告网络
net.ipv4.conf.all.arp_announce = 2  #配置全部网卡不对外宣告网络,不包括lo网卡

[root@web2 ~]# sysctl -p #刷新让参数生效

说明

  • arp_ignore表示当有arp广播问谁是192.168.4.15时,本机忽略该ARP广播,不做任何回应(防止进站冲突),默认是0不忽略,1表示忽略
  • arp_announce本机不要向外宣告自己的lo回环地址是192.168.4.15(防止出站冲突),2表示不向外宣告,默认值是0表示对外宣告
  • 回环网卡没有物理网线连接,所以才能伪装成VIP


6.web2在回环网卡上添加集群的VIP192.168.4.15/32

[root@web2 ~]# cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0 #复制第二个IP的配置文件
[root@web2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0 #修改配置文件
DEVICE=lo:0 #设备名称
IPADDR=192.168.4.15 #IP地址
NETMASK=255.255.255.255  #子网掩码
NETWORK=192.168.4.15 #网络地址
BROADCAST=192.168.4.15 #广播地址
ONBOOT=yes #开机时是否自动激活网卡
NAME=lo:0 #网卡名称

[root@web2 ~]# systemctl restart network #重启网卡
[root@web2 ~]# ip a s #查看回环网卡上的第2个IP

说明

  • 配置的VIP地址,必须是32位,网络地址和IP地址一样,广播地址和IP地址一样,配置完成后,需要修改网络内核参数之后,再重启网卡,如果先修改的网络内核参数,则可以直接重启网卡
  • 回环网卡没有物理网线连接,所以才能伪装成VIP


7.LVS1配置DIP192.168.4.5/24,关闭防火墙,关闭selinux,安装LVS软件,安装keepalived软件

[root@LVS1 ~]# sed -i '/IPADDR/c IPADDR=192.168.4.5' /etc/sysconfig/network-scripts/ifcfg-eth0 #修改IP地址
[root@LVS1 ~]# systemctl restart network #重启网卡

[root@LVS1 ~]# systemctl stop firewalld && systemctl disable firewalld #关闭防火墙,禁止开机自启

[root@LVS1 ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config #关闭selinux,重启服务器后生效

[root@LVS1 ~]# yum -y install ipvsadm.x86_64 #安装lvs软件

[root@LVS1 ~]# yum -y install keepalived.x86_64 #安装keepalived软件

[root@LVS1 ~]# reboot #重启服务器,让selinux生效


8.LVS1修改keepalived配置文件

[root@LVS1 ~]# vim /etc/keepalived/keepalived.conf
 12    router_id LVS1 #设置路由ID号,方便区分
 13    vrrp_iptables #清除防火墙的拦截规则(手动添加该行)
 21     state MASTER #主服务器为MASTER(备服务器需要修改为BACKUP)
 22     interface eth0 #VIP添加在哪个网卡,根据实际网卡修改
 23     virtual_router_id 51 #主备服务器VRID号必须一致
 24     priority 100 #服务器优先级,优先级高优先获取VIP,此处为主服务器
 30     virtual_ipaddress {
 31         192.168.4.15/24 #VIP,谁是主服务器谁获得
 32     }
 35 virtual_server 192.168.4.15 80 { #设置LVS规则
 36     delay_loop 6 #默认健康检查延时6秒
 37     lb_algo rr #设置LVS调度算法为RR
 38     lb_kind DR #设置LVS的的模式为DR
 39     #persistence_timeout 50 #作用是保持连接,开启后客户端在50秒内访问同一服务,注释掉
 40     protocol TCP #使用TCP协议
 41 
 42     real_server 192.168.4.100 80 { #设置WEB1服务器真实IP
 43         weight 1 #设置权重为1
 44         TCP_CHECK { #后台的real _server做健康检查
 45             connect_timeout 3 #健康检查的超时时间为3秒
 46             nb_get_retry 3 #健康检查的重试次数为3次
 47             delay_before_retry 3 #健康检查的间隔时间为3秒
 48         }
 49     }
 50     real_server 192.168.4.200 80 { #设置WEB2服务器真实IP
 51         weight 1 #设置权重为1
 52         TCP_CHECK {  #后台的real _server做健康检查
 53             connect_timeout 3 #健康检查的超时时间为3秒
 54             nb_get_retry 3 #健康检查的重试次数为3次
 55             delay_before_retry 3 #健康检查的间隔时间为3秒
 56         }
 57     }
 58 }
剩余的行直接删除掉

[root@LVS1 ~]# systemctl start keepalived.service && systemctl enable keepalived.service #启动keepalived服务,并设置开机自启


9.LVS2配置DIP192.168.4.6/24,关闭防火墙,关闭selinux,安装LVS软件,安装keepalived软件

[root@LVS2 ~]# sed -i '/IPADDR/c IPADDR=192.168.4.6' /etc/sysconfig/network-scripts/ifcfg-eth0 && systemctl restart network #修改IP地址,重启网卡

[root@LVS2 ~]# systemctl stop firewalld && systemctl disable firewalld #关闭防火墙,禁止开机自启

[root@LVS2 ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config #关闭selinux,重启服务器后生效

[root@LVS2 ~]# yum -y install ipvsadm.x86_64 #安装LVS软件

[root@LVS2 ~]# yum -y install keepalived.x86_64 #安装keepalived软件

[root@LVS2 ~]# reboot #重启服务器,让selinux生效


10.LVS2修改keepalived配置文件

[root@LVS2 ~]# vim /etc/keepalived/keepalived.conf 
 12    router_id LVS2 #设置路由ID号,方便区分
 13    vrrp_iptables #清除防火墙的拦截规则(手动添加该行)
 21     state BACKUP #备服务器为BACKUP,(主服务器需要修改为MASTER)
 22     interface eth0  #VIP添加在哪个网卡,根据实际网卡修改
 23     virtual_router_id 51 #主备服务器VRID号必须一致
 24     priority 80 #服务器优先级,优先级高优先获取VIP,此处为备服务器
 30     virtual_ipaddress {
 31         192.168.4.15/24 #VIP,谁是主服务器谁获得
 32     }
 35 virtual_server 192.168.4.15 80 { #设置LVS规则
 36     delay_loop 6 #默认健康检查延时6秒
 37     lb_algo rr #设置LVS调度算法为RR
 38     lb_kind DR #设置LVS的的模式为DR
 39     #persistence_timeout 50 #作用是保持连接,开启后客户端在50秒内访问同一服务,注释掉
 40     protocol TCP  #使用TCP协议
 41     
 42     real_server 192.168.4.100 80 { #设置WEB1服务器真实IP
 43         weight 1 #设置权重为1
 44         TCP_CHECK { #后台的real _server做健康检查
 45             connect_timeout 3 #健康检查的超时时间为3秒
 46             nb_get_retry 3 #健康检查的重试次数为3次
 47             delay_before_retry 3 #健康检查的间隔时间为3秒
 48         }   
 49     }       
 50     real_server 192.168.4.200 80 { #设置WEB2服务器真实IP
 51         weight 1 #设置权重为1
 52         TCP_CHECK { #后台的real _server做健康检查
 53             connect_timeout 3 #健康检查的超时时间为3秒
 54             nb_get_retry 3 #健康检查的重试次数为3次
 55             delay_before_retry 3  #健康检查的间隔时间为3秒
 56         }
 57     }
 58 }
剩余的行直接删除掉

[root@LVS2 ~]# systemctl start keepalived.service && systemctl enable keepalived.service #启动keepalived服务,并设置开机自启


11.client访问VIP,可以轮询到web1、web2的测试界面,说明主调度器正常工作,此时VIP在主调度器上,此时VIP在主调度器上



12.关闭主调度器,模拟调度器宕机,client访问VIP,可以轮询到web1、web2的测试界面,同时查看VIP是否出现在备调度器上,如果出现,说明keepalived实现了故障时自动切换,此时VIP地址在备调度器上



13.重新打开主调度器,client访问VIP,可以轮询到web1、web2的测试界面,同时查看VIP是否出现在主调度器上,如果出现,说明可以实现故障恢复后主调度器可以重新获取VIP成为主服务器,此时VIP出现在主调度器上

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值