搭建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:0C:\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
浦口区智能化软件开发创新服务