keepalived+DR实现原理及工作模式
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,负载均衡(Cloud Load Balancer)是对多台云服务器进行流量分发的服务。负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。负载均衡服务通过设置虚拟
千家信息网最后更新 2025年01月24日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.20
1,在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 0
3,修改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 0
4,配置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安全错误
数据库的锁怎样保障安全
从化市软件开发好吗
绵阳成都软件开发app
楠兔网络技术工作室
计算机网络技术毕业后的起薪多少
华为rh2288v5服务器
数据库连接池使用方法
金蝶k3新建帐套无法创建数据库
育碧服务器有多烂
苏州光学作图软件开发
库存网络技术案例
服务器双网卡绑定局域网
sql数据库网站教材
开展网络安全保障工作
数据库直接访问
嵌入式软件开发属于程序员吗
vm虚拟服务器管理
网络安全为人民有几点
web开发服务器有哪些类型
e居管家的服务器地址
内蒙古常昇网络技术
数据库 db
超级计算机服务器配置
华为rh2288v5服务器
云服务器站点管理软件
监控软件开发公司哪家好
游戏数据库技术支持
用网络安全证书可以开公司吗
cbm数据库的单词通配符
数据库添加分组依据
网络安全为人民有几点