lvs的DR模式和keepalive的脑裂

[复制链接]
发表于 2026-2-25 15:09:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
DR模式:
lvs的三种模式 nat 所在转换
DR 直接路由模式
tun 隧道模式
调理器在整个lvs集群当中是最告急的,在nat模式下,即负责继承哀求,同时根据负载均衡的算法转发流量,相应发送给客户端。
DR模式:调理器依然负责继承哀求,同时也根据负载均衡算法转发流量到RS,相应直接由RS相应给客户端。
直接路由 Direct Routing 是一种二层转发模式。二层转发的是数据帧。根据源mac所在和目标mac所在举行转发。
不会修改数据包源ip和目标ip,根据数据包mac所在举行转发。
DR模式下,lvs也是维护一个假造的ip所在,全部的哀求都是发送到这个vip,既然是走二层转发,当客户端的哀求到达调理之后,根据负载均衡的算法选在一个RS,修改vip服务器的mac变成RS的mac所在,RS处置惩罚完哀求之后,根据报文当中客户端的源mac所在直接把相应发送到客户端即可,不必要走调理器了。

1、调理器设置了vip,RS上也设置了vip所在。
vip所在辩论,调理器和RS都在同一网段,ARP通讯的紊乱,由于是整个局域网广播,全部的装备都收到了。
怎么把lo这个回环的相应把它屏蔽掉,只有本机的物理ip所在相应。
修改内核参数:
arp_igrone=1
体系的物理ip所在才会相应哀求。lo不会相应ARP哀求。
2、返回报文时,vip所在还在,怎么样能让客户端来汲取到相应。
arp_announce=2
体系倒霉用ip数据包的源所在来相应ARP哀求,直接发送物理接口的ip所在。

节点服务器的设置:

DR模式的实现:
nginx1 RS1 192.168.233.100
nginx2 RS2 192.168.233.110
vip 192.168.233.200
test1 调理器 192.168.233.10
test2 客户端 192.168.233.20
route add -host 192.168.233.100 dev lo:0
设置ip所在为192.168.233.100的

关闭 调理器(test1),客户端(test2),rs1(nginx1),rs2(nginx2)的防火墙和防御机制
  1. [root@test1 ~]# systemctl stop firewalld
  2. [root@test1 ~]# setenforce 0
复制代码
 调理器加载内核 安装 ipvsadm 工具
  1. [root@test1 ~]# modprobe ip_vs
  2. [root@test1 ~]# yum -y install ipvsadm*
复制代码
创建vip所在
  1. [root@test1 ~]# cd /etc/sysconfig/network-scripts/
  2. [root@test1 network-scripts]# vim ifcfg-ens33:0
  3. DEVICE=ens33:0
  4. ONBOOT=YES
  5. IPADDR=192.168.233.200
  6. NETMASK=255.255.255.255
  7. [root@test1 network-scripts]# ifup ens33:0
复制代码
修改调理器的相应参数
  1. [root@test1 network-scripts]# vim /etc/sysctl.conf
  2. net.ipv4.ip_forward=0
  3. #关闭数据包转发功能
  4. net.ipv4.conf.all.send_redirects=0
  5. #禁止系统发送icmp重定向的消息
  6. net.ipv4.conf.default.send_redirects=0
  7. #禁止默认网络接口发送ICMP重定向的消息
  8. net.ipv4.conf.ens33.send_redirects=0
  9. #禁止ens33设备,禁止发送ICMP重定向消息
复制代码
指定vip和负载均衡的算法
  1. [root@test1 opt]# ipvsadm -C
  2. [root@test1 opt]# ipvsadm -A -t 192.168.233.200:80 -s rr
  3. #指定vip和负载均衡的算法
复制代码
添加真实服务器指定模式和备份
  1. [root@test1 opt]# ipvsadm -a -t 192.168.233.200:80 -r 192.168.233.100:80 -g
  2. [root@test1 opt]# ipvsadm -a -t 192.168.233.200:80 -r 192.168.233.110:80 -g
  3. [root@test1 opt]# ipvsadm-save /etc/sysconfig/ipvsadm
  4. [root@test1 opt]# systemctl restart ipvsadm
复制代码
设置2台真实服务器(nginx1 nginx2)   
设置2台服务器的访问页面为nginx1和nginx2
  1. [root@nginx1 ~]# vim /usr/local/nginx/html/index.html
  2.                  nginx1
  3. [root@nginx1 ~]# systemctl restart nginx
  4. [root@nginx2 ~]# vim /usr/local/nginx/html/index.html
  5.                  nginx2
  6. [root@nginx2 ~]# systemctl restart nginx
复制代码
自己访问自己测试一下
给2台服务器回环所在做一个回环接口
  1. [root@nginx1 ~]# cd /etc/sysconfig/network-scripts/
  2. [root@nginx1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
  3. [root@nginx1 network-scripts]# vim ifcfg-lo:0
  4. DEVICE=lo:0
  5. IPADDR=192.168.233.200
  6. NETMASK=255.255.255.255
  7. ONBOOT=yes
  8. [root@nginx1 network-scripts]# ifup lo:0
复制代码
设置ip所在为192.168.233.100的值添加到回环接口,做为lvs的vip,通过路由的模式转发到RS,能让vip辨认到真实的服务器
  1. [root@nginx1 network-scripts]# route add -host 192.168.233.200 dev lo:0
复制代码
调解真实服务器的内核相应
  1. [root@nginx1 ~]# vim /etc/sysctl.conf
  2. net.ipv4.conf.lo.arp_ignore = 1
  3. #设置回环接口忽略来自任何接口的ARP请求
  4. net.ipv4.conf.lo.arp_announce = 2
  5. #设置回环地址仅仅公告本地的ip地址,但是不响应ARP请求
  6. net.ipv4.conf.all.arp_ignore = 1
  7. #设置所有接口忽略来自任何接口的ARP请求
  8. net.ipv4.conf.all.arp_announce = 2
  9. #设置所有接口仅仅公告本地的ip地址,但是不响应ARP请求
复制代码
测试效果

lvs的三种工作模式:
NAT DR TUN
优点: 所在转换 性能最好 WAN,可以实现较远间隔的数据包传送
设置简单 专用通道
缺点: 性能瓶颈 不支持跨网段 必要开通vpn(费钱)
RS的要求: 无穷制 必须要克制非物理接口的ARP相应 要支持隧道模式
RS的数量 10-20台 100台 100台
口试题:
简述lvs的三种模式和他们的区别
口试题:
keepalive的脑裂怎么办理?

lvs集群当中的高可用架构,只是针对调理器的高可用。
基于vrrp来实现调理器的主和备。
高可用的HA架构
主调理器和备调理器(多台)
在主调理器正常工作的时间,备完全出于冗余状态(待定)。不加入集群的运转,只有当主调理器出现故障时,备才会负担主调理器的工作,主调理器规复功能之后,主继承成为集群的入口,备继承出于冗余状态(取决于优先级)
keeplive基于vrrp协议来实现lvs高可用的方案。
1、组播所在:
224.0.0.18根据组播所在来举行通讯,主和备之间发送报文,确定对方是否存活。
2.根据优先级的巨细来确定主和备的位置
3、故障切换,主挂了,备来继承工作,主规复了,备继承等候。
4、主和备之间的切换是vip所在的切换
keepalive是专门为了lvs而出现的,但不是lvs专用的。

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表