千家信息网

搭建LVS的DR模式和配置keepalived+LVS

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章给大家分享的是搭建LVS的DR模式和配置keepalived+LVS的方法。小编觉得挺实用的,因此分享给大家学习。如下资料是关于keepalived和lvs-DR的内容。什么是Keepaliv
千家信息网最后更新 2025年01月31日搭建LVS的DR模式和配置keepalived+LVS

这篇文章给大家分享的是搭建LVS的DR模式和配置keepalived+LVS的方法。小编觉得挺实用的,因此分享给大家学习。如下资料是关于keepalived和lvs-DR的内容。

什么是Keepalived

keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能
VRRP,虚拟路由冗杂协议,是针对路由器的一种备份解决方案

keepalived可以实现多机热备,每个热备组可有多台服务器,最常用的就是双机热备
双击热备的故障切换是由虚拟IP地址的飘逸来实现,适用于各种应用服务器

LVS-DR的ARP问题

在LVS-DR的负载均衡群集中,负载均衡器与节点服务器都要配置相同的VIP地址在局域网中具有相同的IP地址,势必会造成服务器APR通信的紊乱当一个ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会接收到ARP广播此时只有前端的负载均衡器进行响应。其他节点服务器不应该响应ARP广播

LVS-DR的ARP问题解决方案

对节点服务器进行处理,使其不响应针对VIP的ARP请求使用虚接口lo:0承载VIP地址设置内核参数arp_ignore=1:系统只响应目的IP为本地IP的ARP请求

下面我们来做实验

实验规划

我们需要五台虚拟机
DR1 主服务器 192.168.100.201
DR4 备份服务器 192.168.100.202
web 5 192.168.100.221
web 7 192.168.100.222
vip 192.168.100.10
clent 192.168.100.50

把需要的LVS模块,keepalived,http分别装好

#1,4[root@localhost ~]# yum install ipvsadm keepalived -y#5,7[root@localhost ~]# yum install httpd -y

第一台主负载均衡调度器选择仅主机模式,配置网卡

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO=static #静态DEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33UUID=849aa04e-1874-490f-8cb0-b2fde4b9a6f8DEVICE=ens33ONBOOT=yesIPADDR=192.168.100.201 #地址NETMASK=255.255.255.0 #子网 掩码GATEWAY=192.168.100.1 #网关[root@localhost ~]# systemctl restart network #ch重启网络服务[root@localhost ~]# ifconfig #查看固定地址是否生效

第二台4备份负载均衡调度器,绑定仅主机模式,配置网卡

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33UUID=c3f0a196-6819-4702-9b54-7cad18402591DEVICE=ens33ONBOOT=yesIPADDR=192.168.100.202NETMASK=255.255.255.0GATEWAY=192.168.100.1[root@localhost ~]# systemctl restart network[root@localhost ~]# ifconfig

第三台5web服务器绑定仅主机模式,配置网卡

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33UUID=a6cf69fe-eb42-4a99-9239-0da4cdeae0c7DEVICE=ens33ONBOOT=yesIPADDR=192.168.100.221NETMASK=255.255.255.0GATEWAY=192.168.100.1[root@localhost ~]# systemctl restart network[root@localhost ~]# ifconfig

第四台7web服务器绑定仅主机模式,配置网卡

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=ens33UUID=447e510f-fea3-4b6c-8f47-d0c6319ead28DEVICE=ens33ONBOOT=yesIPADDR=192.168.100.222NETMASK=255.255.255.0GATEWAY=192.168.100.1[root@localhost ~]# systemctl restart network[root@localhost ~]# ifconfig

配置第一台1主服务器

[root@localhost ~]# vim /etc/sysctl.confnet.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@localhost ~]# sysctl -p #生效net.ipv4.ip_forward = 1net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.ens33.send_redirects = 0

创建虚拟网卡

[root@localhost ~]# cd /etc/sysconfig/network-scripts/[root@localhost network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33:0[root@localhost network-scripts]# vim ifcfg-ens33:0100ddDEVICE=ens33:0ONBOOT=yesIPADDR=192.168.100.10NETMASK=255.255.255.0[root@localhost network-scripts]# ifup ens33:0 #开启网卡,这个网关是用来做虚拟IP的,相当于一给访问入口[root@localhost network-scripts]# ifconfig[root@localhost network-scripts]# cd /etc/init.d/[root@localhost init.d]# vim dr.sh#!/bin/bashGW=192.168.100.1VIP=192.168.100.10RIP1=192.168.100.221RIP2=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        /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        /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 "ipvsadm 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 1        esac        exit 0   [root@localhost init.d]# service dr.sh startipvsadm starting --------------------[ok][root@localhost init.d]# systemctl status ipvsadm

配置第一台5web服务器

[root@localhost ~]# systemctl start httpd.service [root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# setenforce 0[root@localhost ~]# cd /var/www/html/[root@localhost html]# echo "this is accp web" > index.html[root@localhost html]# cd /etc/sysconfig/network-scripts/[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0[root@localhost network-scripts]# vim ifcfg-lo:0DEVICE=lo:0IPADDR=192.168.100.10NETMASK=255.255.255.0ONBOOT=yes[root@localhost network-scripts]# cd /etc/init.d/[root@localhost init.d]# vim web.sh#写一个脚本让它能响应调度服务器的控制,服务的启动和关闭#!/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                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                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@localhost init.d]# chmod +x web.sh[root@localhost init.d]# service web.sh startRealServer Start OK [root@localhost init.d]# ifup lo:0 #开启虚拟网卡[root@localhost network-scripts]# ifconfiglo:0: flags=73  mtu 65536        inet 192.168.100.10  netmask 255.255.255.0        loop  txqueuelen 1  (Local Loopback)[root@localhost network-scripts]# firefox "http://127.0.0.1/" & #用火狐浏览器去访问回访地址,放在后台运行[2] 17973

配置第二台7web服务器

[root@localhost ~]# systemctl start httpd[root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# setenforce 0[root@localhost ~]# cd /var/www/html/[root@localhost html]# echo "this is kgv web" > index.html[root@localhost html]# cd /etc/sysconfig/network-scripts/[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0[root@localhost network-scripts]# vim ifcfg-lo:0DEVICE=lo:0IPADDR=192.168.100.10NETMASK=255.255.255.0ONBOOT=yes[root@localhost network-scripts]# cd /etc/init.d/[root@localhost init.d]# vim web.sh#!/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                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                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@localhost init.d]# chmod +x web.sh [root@localhost init.d]# ifup lo:0[root@localhost init.d]# service web.sh startRealServer Start OK [root@localhost init.d]# firefox "http://127.0.0.1/" &[1] 17916

去客户端去测试一下,先设置同一网段的地址

去1主服务器测试能不能Ping通两个web服务器

[root@localhost init.d]# ping 192.168.100.221PING 192.168.100.221 (192.168.100.221) 56(84) bytes of data.64 bytes from 192.168.100.221: icmp_seq=1 ttl=64 time=0.416 ms64 bytes from 192.168.100.221: icmp_seq=2 ttl=64 time=0.420 ms[root@localhost init.d]# ping 192.168.100.222PING 192.168.100.222 (192.168.100.222) 56(84) bytes of data.64 bytes from 192.168.100.222: icmp_seq=1 ttl=64 time=0.348 ms64 bytes from 192.168.100.222: icmp_seq=2 ttl=64 time=0.490 ms

再去客户端测试一下,我们的LVS没问题

(我们刷新一下就跳出第二个网页了)


去主服务器1配置keepalive

[root@localhost keepalived]# vim keepalived.conf 10    smtp_server 127.0.0.1 12    router_id LVS_0122     virtual_router_id 10 27         auth_pass abc12330         192.168.100.10  #把原来的删掉我们只需要一个36 virtual_server 192.168.100.10 80 { 39     lb_kind DR45         TCP_CHECK {43     real_server 192.168.100.221 80 { 44         weight 1 45         TCP_CHECK { 46             connect_port 80 47             connect_timeout 3 48             nb_get_retry 3 49             delay_before_retry 3 50         }    51     }          52     real_server 192.168.100.222 80 { 53         weight 1 54         TCP_CHECK { 55             connect_port 80 56             connect_timeout 3[root@localhost keepalived]# systemctl start keepalived.service [root@localhost keepalived]# systemctl status keepalived.service #查看状态,如果没起来在开启一次[root@localhost keepalived]# ip addr show dev ens33:0 #查看网卡有没有被启动起来2: ens33:  mtu 1500 qdisc pfifo_fast state UP qlen 1000    link/ether 00:0c:29:c9:dd:05 brd ff:ff:ff:ff:ff:ff    inet 192.168.100.201/24 brd 192.168.100.255 scope global ens33       valid_lft forever preferred_lft forever    inet 192.168.100.10/24 brd 192.168.100.255 scope global secondary ens33:0       valid_lft forever preferred_lft forever    inet6 fe80::e3c7:14af:6e4d:7216/64 scope link        valid_lft forever preferred_lft forever

同样的配置第二台备份的4服务器

[root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# setenforce 0[root@localhost ~]# vim /etc/sysctl.confnet.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@localhost ~]# sysctl -p #生效net.ipv4.ip_forward = 1net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.ens33.send_redirects = 0

创建虚拟网卡

[root@localhost ~]# cd /etc/sysconfig/network-scripts/[root@localhost network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33:0[root@localhost network-scripts]# vim ifcfg-ens33:0100ddDEVICE=ens33:0ONBOOT=yesIPADDR=192.168.100.10NETMASK=255.255.255.0[root@localhost network-scripts]# service network restartRestarting network (via systemctl):                        [  确定  ][root@localhost network-scripts]# ifup ens33:0 #开启网卡,这个网关是用来做虚拟IP的,相当于一给访问入口[root@localhost network-scripts]# ifconfig[root@localhost network-scripts]# cd /etc/init.d/[root@localhost init.d]# vim dr.sh#!/bin/bashGW=192.168.100.1VIP=192.168.100.10RIP1=192.168.100.221RIP2=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        /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        /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 "ipvsadm 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 1        esac        exit 0[root@localhost init.d]# chmod +x dr.sh[root@localhost init.d]# service dr.sh startipvsadm starting --------------------[ok][root@localhost init.d]# cd /etc/keepalived/[root@localhost keepalived]# vim keepalived.conf  10    smtp_server 127.0.0.1 12    router_id LVS_02 20     state BACKUP 22     virtual_router_id 10 23     priority 9927         auth_pass abc12330         192.168.100.10[root@localhost keepalived]# systemctl start keepalived.service [root@localhost keepalived]# systemctl status keepalived.service #查看状态,如果没起来在开启一次

我们把主服务器1关掉,去客户端去测试一下是不是还能Ping通


[root@localhost keepalived]# ifdown ens33:0
C:\Users\CHEN>ping 192.168.100.10正在 Ping 192.168.100.10 具有 32 字节的数据:来自 192.168.100.10 的回复: 字节=32 时间<1ms TTL=64来自 192.168.100.10 的回复: 字节=32 时间<1ms TTL=64来自 192.168.100.10 的回复: 字节=32 时间<1ms TTL=64来自 192.168.100.10 的回复: 字节=32 时间<1ms TTL=6

以上就是搭建LVS的DR模式和配置keepalived+LVS的方法介绍,详细使用情况还得要大家自己使用过才能知道具体要领。如果想阅读更多相关内容的文章,欢迎关注行业资讯频道!

服务 服务器 配置 网卡 地址 模式 均衡 备份 字节 主机 时间 节点 测试 相同 功能 客户 客户端 网关 问题 二台 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 计算机网络技术 视频 数据库 模型设计工具 常州高性能服务器供应商家 数据库删了数据提交后还能恢复么 软件开发 助理 岗位职责 湖州炬燃网络技术有限公司 数据库与非数据库的根本区别 福建秒懂软件开发有限公司 博弈网络技术追回是真的么 黄埔软件开发专业哪家好 2022软件开发岗位需求 数据库文件流量指标 网络安全素质大赛 网上购物系统的设计与实现数据库 高级数据库测试题 南阳管理软件开发 黄浦区制造软件开发解决方案 软件开发后期维护包括哪些 28岁可以学习软件开发吗 怎样修改linux服务器时间 服务器 安卓源码 山东网络技术资费 移动通信网络技术培训体会 tcl液晶电视服务器维修 国内的5g网络技术用的是哪家的 网络安全视频少儿 运转灵活优质软件开发 广州盈冲互联网科技公司 软件开发项目流程ppt 浦口区智能化软件开发创新服务
0