LVS-DR

[复制链接]
发表于 2026-1-22 00:07:28 | 显示全部楼层 |阅读模式

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

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

×
目次
一、LVS—DR
1.简介
2.数据包流向分析
2.1客户端发送哀求
2.2数据通过二层数据链路层传输 
2.3IPVS处理处罚哀求 
2.4真实服务器处理处罚哀求 
2.5相应数据包传送
2.6总结 
3.DR模式的特点
二、LVS—DR中碰到的ARP题目
1.题目一
2.题目二
三、DR模式LVS负载均衡聚集摆设
1.设置DR服务器 
2.摆设共享存储(NFS服务器)
3.设置节点服务器 
4.测试LVS集群 


一、LVS—DR

1.简介

   LVS-DR (Direct Routing,直接路由模式)是 Linux Virtual Server(LVS) 提供的一种负载均衡
模式,用于在高并发、高流量场景下分发客户端哀求到多台后端服务器。其紧张特点是通过直接路由的方式将客户端哀求发送给真实服务器,而且真实服务器直接将相应发送回客户端,而不颠末负载均衡器。如许克制了负载均衡器成为瓶颈,从而极大进步了体系的处理处罚本事
  2.数据包流向分析

2.1客户端发送哀求

   客户端向负载均衡器(Director Server)发送哀求
哀求数据包的源 IP 地点是客户端 IP(CIP),目的 IP 地点是负载均衡器的捏造 IP(VIP)
哀求数据包到达负载均衡器的内核空间
  2.2数据通过二层数据链路层传输 

   负载均衡器和真实服务器(Real Server)位于同一网络中,数据包通过二层(数据链路层)直接传输
负载均衡器和真实服务器的通讯依赖于数据链路层的交换
  2.3IPVS处理处罚哀求 

   负载均衡器的内核空间检测到数据包的目的 IP 是 VIP
IPVS(IP Virtual Server)在内核空间将数据包与集群服务举行匹配,确认哀求的服务是否是集群服务
  
IPVS将数据包重新封装:
源 MAC 地点修改为负载均衡器的 MAC 地点
目的 MAC 地点修改为真实服务器的 MAC 地点
源 IP 地点和目的 IP 地点保持稳固(仍然是 CIP 和 VIP)
修改后的数据包通过二层数据链路层发送给真实服务器
  2.4真实服务器处理处罚哀求 

   真实服务器罗致到数据包时,检测到目的 MAC 地点是其自身的 MAC 地点
真实服务器处理处罚哀求后天生相应数据包
相应数据包的源 IP 地点为 VIP(与哀求的数据包雷同),目的 IP 地点为客户端 IP(CIP)
真实服务器将相应数据包通过 lo(回环)接口 发送到物理网卡,然后向外发送相应
  2.5相应数据包传送

   真实服务器直接将相应数据包发送到客户端
由于相应数据包的目的 MAC 地点是客户端的,相应数据直接到达客户端,而不颠末负载均衡器
  2.6总结 

   客户端 → 负载均衡器:客户端哀求的数据包目的 IP 是 VIP,到达负载均衡器
负载均衡器 → 真实服务器:负载均衡器修改数据包的源 MAC 地点为自身的 MAC 地点,目的 MAC 地点为真实服务器的 MAC 地点。数据包通过二层网络传输到真实服务器
真实服务器 → 客户端:真实服务器处理处罚哀求,天生相应数据包,源 IP 地点为 VIP,目的 IP 地点为 CIP。相应数据包直接从真实服务器发送到客户端
  
  注:
  MAC 地点修改:
  负载均衡器通过修改数据包的 MAC 地点,将哀求正确地路由到目的真实服务器
同一网络要求:
  负载均衡器和真实服务器必须在同一局域网内,由于 LVS-DR 模式依赖于直接路由机制
ARP 设置:
  为了克制真实服务器相应 VIP 的 ARP 哀求,必须在真实服务器上设置 ARP 计谋
  3.DR模式的特点

   (1)Director server 和 Real server 必须在同一个物理网络中
LVS-DR 模式依赖于数据链路层(Layer 2)直接转发数据包,因此要求负载均衡器
(Director Server)和全部的真实服务器(Real Server)位于同一局域网中,不能凌驾子网或差别的网络
(2)Real server 可以使用私有地点或公网地点
Real Server 可以设置成私有 |P 地点(RIP),也可以是公网 IP 地点。假如 Real Server 使用公网 IP 地点,则可以直接通过互联网访问该服务器,而无需通过 Director Server 转发
(3)Director server 作为聚集的访问入口,但不作为网关使用
Director Server 负责将客户端的哀求分发给 Real Server,但它不会充当 Real Server 的网
关。哀求报文通过 Director Server 进入,但相应报文不会通过 Director Server
(4)全部的哀求报文颠末 Director server,但复兴相应报文不能颠末 Director Server
客户端的哀求会通过负载均衡器,由它将哀求分发给指定的Real Server,然而,Real
Server 的相应数据会直接发给客户端,绕过 Director Server。这种筹划进步了体系的性能和服从,克制了 Director Server 成为瓶颈
(5)Real server 的网关不允许指向 Director server lP
Real Server 的默认网关不能设置为 Director Server 的IP地点,由于 LVS-DR 的核心头脑是相应报文不颠末 Director Server。全部的相应数据应该直接通过真实服务器的物理网络接口发送给客户端
(6)Real server 上的 lo 接口设置 VIP 的 IP 地点
在 Real Server 上,必要在回环接口(`1o`)上绑定 VIP。如许,当哀求到达 Real Server时,服务器可以大概罗致目的 IP 为 VIP 的数据包并正确处理处罚
  二、LVS—DR中碰到的ARP题目

1.题目一

   在LVS-DR负载均衡集群中,负载均衡器与节点服务器都要设置雷同的VIP地点
  在局域网中具有雷同的IP地点,势必会造成各服务器ARP通讯的素乱
  办理思绪 
   (1)当ARP广播发送到LVS-DR集群时,由于负载均衡器和节点服务器都是毗连到雷同的网络上,它们都会罗致到ARP广播
(2)只有前端的负载均衡器举行相应,其他节点服务器不应该相应ARP广播
  办理方法
   对节点服务器举行处理处罚,使其不相应针对VIP的ARP哀求
  使用虚接口lo:0承载VIP地点
设置内核参数arp ignore=1:体系只相应目的IP为当地IP的ARP哀求
  2.题目二

   Real Server返回报文(源IP是VIP)经路由器转发,重新封装报文时,必要先获取路由器的MAC地点
  发送ARP哀求时,Linux默认使用IP包的源IP地点(即VIP)作为ARP哀求包中的源IP地点,而不使用发送接口的IP地点
  路由器收到ARP哀求后,将更新ARP表项
  原有的VIP对应Director的MAC地点会被更新为VIP对应Real Server的MAC地点
  路由器根据ARP表项,会将新来的哀求报文转发给Real Server,导致Director的VIP失效
  办理思绪
   对节点服务器举行处理处罚,设置内核参数arp announce=2:体系不使用IP包的源地点来设置ARP哀求的源地点,而选择发送接口的IP地点
  办理方法
  1. net.ipv4.conf.lo.arp_ignore =1
  2. net.ipv4.conf.lo.arp_announce =2
  3. net.ipv4.conf.al.arp_ignore =1
  4. net.ipv4.conf.al.arp_announce =2
复制代码
三、DR模式LVS负载均衡聚集摆设

   实验需求:
  DR服务器:172.16.58.10
  web服务器1:172.16.58.20
  web服务器2:172.16.58.30
  VIP:172.16.58.180
  客户端:172.16.58.40
  1.设置DR服务器 

  1. DR服务器:172.16.58.10
  2. 关闭防火墙以及增强功能
  3. systemctl stop firewalld.service
  4. setenforce 0
  5. 加载IPVS模块
  6. modprobe ip_vs
  7. cat /proc/net/ip_vs
  8. 安装ipvsadm工具
  9. yum -y install ipvsadm
  10. 配置虚拟IP地址:172.16.58.180
  11. cd /etc/sysconfig/network-scripts/
  12. cp ifcfg-ens33 ifcfg-ens33:0
  13. vim ifcfg-ens33:0
  14. DEVICE=ens33:0
  15. ONBOOT=yes
  16. IPADDR=172.16.58.180
  17. NETMASK=255.255.255.255
  18. 启动虚拟IP
  19. ifup ens33:0
  20. ifconfig ens33:0
  21. 调整内核参数
  22. 修改内核响应参数来关闭ICMP重定向
  23. vim /etc/sysctl.conf
  24. net.ipv4.ip_forward = 0
  25. net.ipv4.conf.all.send_redirects = 0
  26. net.ipv4.conf.default.send_redirects = 0
  27. net.ipv4.conf.ens33.send_redirects = 0
  28. 应用修改
  29. sysctl -p
  30. 配置负载分配策略
  31. 启动ipvsadm并配置负载均衡策略
  32. ipvsadm-save > /etc/sysconfig/ipvsadm
  33. systemctl start ipvsadm
  34. ipvsadm -C
  35. ipvsadm -A -t 172.16.58.180:80 -s rr
  36. ipvsadm -a -t 172.16.58.180:80 -r 172.16.88.20:80 -g
  37. ipvsadm -a -t 172.16.58.180:80 -r 172.16.88.30:80 -g
  38. ipvsadm
  39. 查看节点状态
  40. ipvsadm -ln
复制代码
2.摆设共享存储(NFS服务器)

  1. NFS服务器:172.16.58.40
  2. 关闭防火墙以及增强功能
  3. systemctl stop firewalld.service
  4. setenforce 0
  5. 安装NFS和rpcbind服务并且修改权限
  6. yum -y install nfs-utils rpcbind
  7. mkdir /opt/kgc /opt/benet
  8. chmod 777 /opt/kgc /opt/benet
  9. 配置NFS共享目录
  10. vim /etc/exports
  11.  
  12. /usr/share *(ro,sync)
  13. /opt/kgc 172.16.58.0/24(rw,sync)
  14. /opt/benet 172.16.58.0/24(rw,sync)
  15. 启动NFS和rpcbind服务
  16. systemctl start nfs.service
  17. systemctl start rpcbind.service
复制代码
3.设置节点服务器 

  1. 节点服务器:172.16.58.20 、172.16.58.30
  2. 关闭防火墙以及增强功能
  3. systemctl stop firewalld.service
  4. setenforce 0
  5. 配置虚拟IP在lo接口
  6. cd /etc/sysconfig/network-scripts/
  7. cp ifcfg-lo ifcfg-lo:0
  8. vim ifcfg-lo:0
  9. DEVICE=lo:0
  10. ONBOOT=yes
  11. IPADDR=172.16.58.180
  12. NETMASK=255.255.255.255
  13. 启动虚拟IP并配置路由
  14. ifup lo:0
  15. ifconfig lo:0
  16. route add -host 172.16.58.180 dev lo:0
  17. 配置路由在系统启动时自动生效
  18. vim /etc/rc.local
  19. /sbin/route add -host 172.16.58.180 dev lo:0
  20. chmod +x /etc/rc.d/rc.local
  21. 调整内核的ARP响应参数
  22. 修改内核参数以避免ARP冲突
  23. vim /etc/sysctl.conf
  24. net.ipv4.conf.lo.arp_ignore = 1
  25. net.ipv4.conf.lo.arp_announce = 2
  26. net.ipv4.conf.all.arp_ignore = 1
  27. net.ipv4.conf.all.arp_announce = 2
  28. 应用修改
  29. sysctl -p
  30. 安装NFS和HTTPD服务,并挂载NFS共享
  31. yum -y install nfs-utils rpcbind httpd
  32. systemctl start rpcbind
  33. systemctl start httpd
  34. 对于172.16.88.20
  35. mount.nfs 172.16.58.10:/opt/kgc /var/www/html
  36. echo 'this is kgc web!' > /var/www/html/index.html
  37. 对于172.16.88.30
  38. mount.nfs 172.16.58.10:/opt/benet /var/www/html
  39. echo 'this is benet web!' > /var/www/html/index.html
复制代码
4.测试LVS集群 

   在客户端使用欣赏器访问 http://172.16.58.180/
回复

使用道具 举报

登录后关闭弹窗

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