keepalived+DR实现原理及工作模式
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,负载均衡(Cloud Load Balancer)是对多台云服务器进行流量分发的服务。负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。负载均衡服务通过设置虚拟
千家信息网最后更新 2025年12月02日keepalived+DR实现原理及工作模式
负载均衡(Cloud Load Balancer)是对多台云服务器进行流量分发的服务。负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。负载均衡服务通过设置虚拟服务地址(VIP),将位于同一地域的多台云服务器资源虚拟成一个高性能、高可用的应用服务池。根据应用指定的方式,将来自客户端的网络请求分发到云服务器池中。负载均衡服务会检查云服务器池中云服务器实例的健康状态,自动隔离异常状态的实例,从而解决了云服务器的单点问题,同时提高了应用的整体服务能力。今天给大家介绍下LVS负载均衡群集--keepalived+DR实现原理及工作模式

keepalived实现原理
keepalived采用vrrp热备份协议,实现Linux云服务器的多机热备功能vrrp,虚拟路由冗余协议,是针对路由器的一种备份解决方案keepalivd案列讲解
keepalived可实现多机热备,每个热备组有多台服务器,最常用的就是双机热备双机热备的故障切换是由虚拟IP地址的漂移来实现,适用于各种应用服务器实验原理图

实验环境
虚拟ip 192.168.100.10lvs1调度服务器 192.168.100.100lvs2调度服务器 192.168.100.111web1服务器 192.168.100.200web2服务器 192.168.100.222client测试机 192.168.100.201,在lvs1调度服务器上安装keepalived,ipvsadm服务
[root@lvs1 ~]# yum install keepalived ipvsadm -y[root@lvs1 ~]# vim /etc/sysctl.conf ##配置路由转发功能net.ipv4.ip_forward=1 ##路由功能##proc响应关闭重定向功能net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.ens33.send_redirects = 0[root@lvs1 ~]# sysctl -p ##加载生效[root@lvs1 ~]# cd /etc/sysconfig/network-scripts/[root@lvs1 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33:0 ##复制虚拟网卡的配置文件[root@lvs1 network-scripts]# vim ifcfg-ens33:0DEVICE=ens33:0 ##添加配置文件信息,原有的信息删除ONBOOT=yesIPADDR=192.168.100.10NETMASK=255.255.255.0[root@lvs1 network-scripts]# cd /etc/init.d/ ##创建脚本便于service使用[root@lvs1 init.d]# vim dr.sh#!/bin/bashGW=192.168.100.1VIP=192.168.100.10 ##虚拟ipRIP1=192.168.100.200 ##真实web服务器ipRIP2=192.168.100.222case "$1" instart) /sbin/ipvsadm --save > /etc/sysconfig/ipvsadm ##保存配置 systemctl start ipvsadm ##启动服务 /sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up ##设置ens33:0地址,广播地址,子网掩码,并开启 /sbin/route add -host $VIP dev ens33:0 ##添加路由网段信息 /sbin/ipvsadm -A -t $VIP:80 -s rr ##指定虚拟服务访问入口,指定轮询算法 /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g ##指定真实服务器,dr模式 /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g echo "ipvsadm starting --------------------[ok]" ;;stop) /sbin/ipvsadm -C ##清空缓存 systemctl stop ipvsadm ##关闭服务 ifconfig ens33:0 down ##关闭接口 route del $VIP ##删除路由信息 echo "ipvsamd stoped----------------------[ok]" ;;status) if [ ! -e /var/lock/subsys/ipvsadm ];then ##判断文件存在与否决定状态 echo "ipvsadm stoped---------------" exit 1 else echo "ipvsamd Runing ---------[ok]" fi ;;*) echo "Usage: $0 {start|stop|status}" exit 1esacexit 0[root@lvs1 init.d]# chmod +x dr.sh ##给执行权限2,修改lvs1服务器为仅主机模式,并修改网卡配置
[root@lvs1 init.d]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 ##修改网卡信息BOOTPROTO=staticIPADDR=192.168.100.100NETMASK=255.255.255.0GATEWAY=192.168.100.1[root@lvs1 init.d]# service network restart ##重启网络服务[root@lvs1 init.d]# ifup ens33:0 ##开启虚拟网卡[root@lvs1 init.d]# service dr.sh start ##开启lvs服务ipvsadm starting --------------------[ok][root@lvs1 init.d]# systemctl stop firewalld.service ##关闭防火墙[root@lvs1 init.d]# setenforce 03,修改lvs2调度服务器配置(和lvs1服务器相同配置,修改lvs地址,虚拟ip还是100.10)
[root@lvs2 ~]# yum install keepalived ipvsadm -y[root@lvs2 ~]# vim /etc/sysctl.conf ##配置路由转发功能net.ipv4.ip_forward=1 ##路由功能##proc响应关闭重定向功能net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.ens33.send_redirects = 0[root@lvs2 ~]# sysctl -p ##加载生效[root@lvs2 ~]# cd /etc/sysconfig/network-scripts/[root@lvs2 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33:0 ##复制虚拟网卡的配置文件[root@lvs2 network-scripts]# vim ifcfg-ens33:0DEVICE=ens33:0 ##添加配置文件信息,原有的信息删除ONBOOT=yesIPADDR=192.168.100.10NETMASK=255.255.255.0[root@lvs2 network-scripts]# cd /etc/init.d/ ##创建脚本便于service使用[root@lvs2 init.d]# vim dr.sh#!/bin/bashGW=192.168.100.1VIP=192.168.100.10 ##虚拟ipRIP1=192.168.100.200 ##真实web服务器ipRIP2=192.168.100.222case "$1" instart) /sbin/ipvsadm --save > /etc/sysconfig/ipvsadm ##保存配置 systemctl start ipvsadm ##启动服务 /sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up ##设置ens33:0地址,广播地址,子网掩码,并开启 /sbin/route add -host $VIP dev ens33:0 ##添加路由网段信息 /sbin/ipvsadm -A -t $VIP:80 -s rr ##指定虚拟服务访问入口,指定轮询算法 /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g ##指定真实服务器,dr模式 /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g echo "ipvsadm starting --------------------[ok]" ;;stop) /sbin/ipvsadm -C ##清空缓存 systemctl stop ipvsadm ##关闭服务 ifconfig ens33:0 down ##关闭接口 route del $VIP ##删除路由信息 echo "ipvsamd stoped----------------------[ok]" ;;status) if [ ! -e /var/lock/subsys/ipvsadm ];then ##判断文件存在与否决定状态 echo "ipvsadm stoped---------------" exit 1 else echo "ipvsamd Runing ---------[ok]" fi ;;*) echo "Usage: $0 {start|stop|status}" exit 1esacexit 0[root@lvs2 init.d]# chmod +x dr.sh ##给执行权限[root@lvs2 init.d]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 ##修改网卡信息,切换为仅主机模式BOOTPROTO=staticIPADDR=192.168.100.111NETMASK=255.255.255.0GATEWAY=192.168.100.1[root@lvs2 init.d]# service network restart ##重启网络服务[root@lvs2 init.d]# ifup ens33:0 ##开启虚拟网卡[root@lvs2 init.d]# service dr.sh start ##开启lvs服务ipvsadm starting --------------------[ok][root@lvs2 init.d]# systemctl stop firewalld.service ##关闭防火墙[root@lvs2 init.d]# setenforce 04,配置web1节点服务器
[root@web1 ~]# yum install httpd -y ##安装web服务[root@web1 ~]# systemctl stop firewalld.service ##关闭防火墙[root@web1 ~]# setenforce 0[root@web1 ~]# echo "this is kgc web" > /var/www/html/index.html ##创建网站页面[root@web1 ~]# cd /etc/sysconfig/network-scripts/ [root@web1 network-scripts]# cp -p ifcfg-lo ifcfg-lo:0 ##修改回环网卡的虚拟网卡[root@web1 network-scripts]# vim ifcfg-lo:0DEVICE=lo:0IPADDR=192.168.100.10NETMASK=255.255.255.0ONBOOT=yes[root@web1 network-scripts]# cd /etc/init.d/[root@web1 init.d]# vim web.sh ##编写arp脚本#!/bin/bashVIP=192.168.100.10 case "$1" in start) ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP /sbin/route add -host $VIP dev lo:0 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore ##arp忽略 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 echo "RealServer Start OK " ;; stop) ifconfig lo:0 down route del $VIP /dev/null 2>&1 echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore ##arp开启 echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce echo "RealServer Stopd" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0[root@web1 init.d]# chmod +x web.sh ##给权限5,配置web1网卡(仅主机模式)
[root@web1 init.d]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 ##修改网卡,仅主机模式BOOTPROTO=staticIPADDR=192.168.100.200NETMASK=255.255.255.0GATEWAY=192.168.100.1[root@web1 init.d]# service network restart ##重启网络服务[root@web1 init.d]# service web.sh start ##启动脚本RealServer Start OK [root@web1 init.d]# systemctl start httpd.service ##开启web服务[root@web1 init.d]# ifup lo:0 ##开启回环虚拟网卡6,配置web2节点服务器和web1相同的配置
[root@web2 ~]# yum install httpd -y ##安装web服务[root@web2 ~]# systemctl stop firewalld.service ##关闭防火墙[root@web2 ~]# setenforce 0[root@web2 ~]# echo "this is accp web" > /var/www/html/index.html ##创建网站页面[root@web2 ~]# cd /etc/sysconfig/network-scripts/ [root@web2 network-scripts]# cp -p ifcfg-lo ifcfg-lo:0 ##修改回环网卡的虚拟网卡[root@web2 network-scripts]# vim ifcfg-lo:0DEVICE=lo:0IPADDR=192.168.100.10NETMASK=255.255.255.0ONBOOT=yes[root@web2 network-scripts]# cd /etc/init.d/[root@web2 init.d]# vim web.sh ##编写arp脚本#!/bin/bashVIP=192.168.100.10 case "$1" in start) ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP /sbin/route add -host $VIP dev lo:0 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore ##arp忽略 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 echo "RealServer Start OK " ;; stop) ifconfig lo:0 down route del $VIP /dev/null 2>&1 echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore ##arp开启 echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce echo "RealServer Stopd" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0[root@web2 init.d]# chmod +x web.sh ##给权限##配置web2网卡(仅主机模式)[root@web2 init.d]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 ##修改网卡,仅主机模式BOOTPROTO=staticIPADDR=192.168.100.222NETMASK=255.255.255.0GATEWAY=192.168.100.1[root@web2init.d]# service network restart ##重启网络服务[root@web2init.d]# service web.sh start ##启动脚本RealServer Start OK [root@web2 init.d]# systemctl start httpd.service ##开启web服务[root@web2 init.d]# ifup lo:0 ##开启回环虚拟网卡7,配置lvs1上keepalived部署
[root@lvs1 init.d]# vim /etc/keepalived/keepalived.confglobal_defs { ... smtp_server 127.0.0.1 #指向本地 router_id LVS_01 #指定名称,备份服务器不同名称 ... }vrrp_instance VI_1 { state MASTER #备份服务器是BACKUP virtual_router_id 10 #组号相同 ... auth_pass abc123 #验证密码 priority 100 #优先级备份小于主 ... virtual_ipaddress { 192.168.100.10 } ...virtual_server 192.168.100.10 80 {... real_server 192.168.100.200 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.100.222 80 { weight 1 TCP_CHECK { #tcp connect_port 80 #添加端口 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }[root@lvs1 init.d]# systemctl start keepalived.service [root@lvs1 init.d]# scp /etc/keepalived/keepalived.conf root@192.168.100.111:/etc/keepalived/##复制到lvs2服务器上8,在lvs2服务器上修改keepalived配置文件
[root@lvs2 init.d]# vim /etc/keepalived/keepalived.conf ##修改keepalive配置文件router_id LVS_02 ##router_id不能相同...state BACKUP ##备服务器...priority 90 ##优先级低于主服务器[root@lvs2 init.d]# systemctl start keepalived.service ##启动keepalive服务9,使用client测试机测试(访问不到重启全部服务即可)
如果大家还有什么地方需要了解的可以在官网找我们的专业技术工程师的,技术工程师在行业内拥有十几年的经验了,所以会比小编回答的更加详细专业。官网链接www.yisu.com
服务
服务器
配置
网卡
信息
路由
模式
文件
功能
地址
主机
脚本
应用
均衡
备份
网络
相同
回环
权限
状态
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发 压一个月工资
没有服务器怎么办小程序
软件开发的进项税率是多少
excel录入重复数据库
海南快乐旅程网络技术有限公司
上海智能网络技术直销价格
5.2 使用数据库
安恒招聘网络安全工程师
做软件开发要考什么证书吗
目前最好的网络安全大学
sql误删数据库
oracle数据库io
中职网络技术安全教学计划
餐饮软件开发架构
为我国网络安全做出最大贡献的人
数据库主键能不能为空
gp数据库一亿统计
网络安全科测验试题
个人使用云服务器搭建论坛
数据库系统的三级模式结构分别为
u点家庭服务器管理系统
使用公司服务器会被监控吗
网络安全法与治
DBC2000数据库考试
数据库著作权
网络安全三个要求
查询数据库中同义词
软件开发时期的任务有
起床站点服务器
数据库密文索引技术