LVS -DR - 实践

目录

LVS—DR集群

请求与响应流程

数据包流向分析

特点与优势

LVS-DR模式特点

典型应用场景

路由模式(LVS—DR)


LVS—DR集群

LVS(Linux Virtual Server)的DR(Direct Routing,直接路由)模式是一种高性能的负载均衡技术,其核心原理是通过修改数据包的MAC地址搭建请求分发,同时让后端服务器直接响应客户端,避免响应流量经过负载均衡器。

请求与响应流程

  • 请求路径
    1. 客户端发送请求到VIP,数据包到达负载均衡器。
    2. 负载均衡器根据调度算法选择后端服务器,修改数据包的目标MAC地址为后端服务器的MAC地址,但源IP和目标IP(VIP)保持不变
    3. 修改后的数据包利用二层网络(数据链路层)直接转发到后端服务器。
  • 响应路径
    1. 后端服务器接收到请求后,发现目标IP(VIP)与本地配置的VIP匹配,处理请求并生成响应。
    2. 后端服务器直接将响应报文发送给客户端,源IP为VIP,目标IP为客户端IP,响应报文绕过负载均衡器。

数据包流向分析

  • 客户端发送请求到 Director Server,请求的数据报文(源 IP是 CIP,目标IP 是 VIP)到达内核空间。
  • Director Server 和 Real Server 在同一个网络中,资料通过二层数据链路层来传输。
  • 集群服务就重新封装数据包。修改源MAC地址为Director Server 的 MAC 地址,修改目标 MAC 地址为 Real Server 的 MAC 地址,源 IP 地址与目标 IP 地址没有改变,之后将数据包发送给 Real Server。就是内核空间判断数据包的目标IP是本机 VIP,此时 IPVS 比对数据包请求的服务是否是集群服务,
  • 到达 Real Server 的请求报文的 MAC 地址是自身的 MAC 地址,就接收此报文。数据包重新封装报文(源 IP 地址为 VIP,目标IP为 CIP),将响应报文通过 10 接口传送给物理网卡然后向外发出。
  • Real Server 直接将响应报文传送到客户端。

特点与优势

  • 高性能
    响应流量不经过负载均衡器,显著减轻其压力,适用于高并发、低延迟场景。
  • 网络要求
    负载均衡器和后端服务器必须在同一局域网(二层网络),因为DR模式利用修改MAC地址实现转发。
  • 不支持端口映射
    后端服务器需直接监听VIP对应的端口,无法修改端口号。
  • 无需开启IP转发
    后端服务器无需配置IP转发功能(ip_forward=0)。

LVS-DR模式特点

  • Director Server 和 Real Server 必须在同一个物理网络中。
  • Real Server 可以使用私有地址,也可以运用公网地址。如果使用公网地址,可以依据互联网对 RIP 进行直接访问。
  • 所有的请求报文经由 Director Server,但回复响应报文不能经过 DirectorServer.
  • Real Server 的网关不允许指向 Director Server IP,即不允许数据包经寸 Director Server.
  • Real Server 上的 1o 接口配备 VIP 的 IP 地址。

典型应用场景

  • Web服务
    如Nginx、Apache等,借助DR模式达成高并发访问的负载均衡。
  • 数据库服务
    对延迟敏感的数据库集群,可通过DR模式优化响应速度。
  • 大规模集群
    协助上百台后端服务器,适合大型互联网应用。

路由模式(LVS—DR)

案例环境:

一台调度器、两台WEB服务器、一台客户端

调度器设置VIP

  1. [root@localhost ~]# cd /etc/sysconfig/network-scripts/
  2. [root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens33:0 将33网卡配置信息复制出来
  3. [root@localhost network-scripts]# vim ifcfg-ens33:0
  4. TYPE=Ethernet
  5. PROXY_METHOD=none
  6. BROWSER_ONLY=no
  7. BOOTPROTO=static
  8. IPADDR=192.168.10.172#设置VIP
  9. NETMASK=255.255.255.0
  10. GATEWAY=192.168.10.254
  11. DNS1=114.114.114.114
  12. DNS2=8.8.8.8
  13. DEFROUTE=yes
  14. IPV4_FAILURE_FATAL=no
  15. IPV6INIT=yes
  16. IPV6_AUTOCONF=yes
  17. IPV6_DEFROUTE=yes
  18. IPV6_FAILURE_FATAL=no
  19. IPV6_ADDR_GEN_MODE=eui64
  20. NAME=ens33:0 #修改名称
  21. DEVICE=ens33:0 #同上
  22. ONBOOT=yes

重载网卡信息

  1. [root@localhost network-scripts]# nmcli c reload #重载
  2. [root@localhost network-scripts]# nmcli c up ens33

否生效 就是查看

  1. [root@localhost ~]# ifconfig #查看是否生效
  2. ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu1500
  3. inet 192.168.10.101netmask255.255.255.0broadcast192.168.10.255
  4. inet6 fe80::20c:29ff:fe14:7990prefixlen64scopeid0x20<link>
  5. ether 00:0c:29:14:79:90txqueuelen1000(Ethernet)
  6. RX packets56161 bytes 78551237 (74.9 MiB)
  7. RX errors0dropped0overruns0 frame 0
  8. TX packets6659 bytes 546400 (533.5 KiB)
  9. TX errors0dropped0overruns0carrier0collisions0
  10. ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu1500
  11. inet 192.168.10.172netmask255.255.255.0broadcast192.168.10.255
  12. ether 00:0c:29:14:79:90txqueuelen1000(Ethernet)

 下载ipvsadm并关闭防火墙及内核

  1. [root@localhost ~]# dnf -y install ipvsadm
  2. [root@localhost ~]# systemctl stop firewalld #关闭防火墙
  3. [root@localhost ~]# setenforce 0 #关闭系统内核

添加虚拟服务器

  1. [root@localhost ~]# ipvsadm -A -t 192.168.10.172:80 -s wrr #添加虚拟服务器
  2. [root@localhost ~]# ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.102 -g -w 1 #添加真实服务器
  3. [root@localhost ~]# ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.103 -g -w 2 #同上
  4. [root@localhost ~]# ipvsadm -ln #查看规则

设置两台Web服务

配置内容都一样只有网站内容不同

下载httpd

[root@localhost ~]# dnf -y install httpd

关闭防火墙及环境内核

  1. [root@localhost ~]# systemctl stop firewalld #关闭防火墙
  2. [root@localhost ~]# setenforce 0 #关闭内核

配置网站内容

  1. [root@localhost ~]# echo"2222222">/var/www/html/index.html #02网站内容
  2. [root@localhost ~]# echo"333333">/var/www/html/index.html #03网站内容

启动httpd服务

[root@localhost ~]# systemctl satart httpd #启动httpd

部署回环口ip

[root@localhost ~]# ip addr add 192.168.10.172/32 dev lo label lo:0 #回环口ip

修改配置文件让系统开机自行运行命令

  1. [root@bogon ~]# vim /etc/rc.local
  2. ip addr add192.168.10.172/32dev lo label lo:0
  3. ip route add local192.168.10.172/32dev lo
  4. [root@bogon ~]# chmod +x /etc/rc.local #给执行权限

修改配置文件

  1. [root@bogon ~]# vim /etc/sysctl.conf
  2. 末尾添加
  3. net.ipv4.conf.all.arp_ignore =1
  4. net.ipv4.conf.all.arp_announce =2
  5. net.ipv4.conf.default.arp_ignore =1
  6. net.ipv4.conf.default.arp_announce =2
  7. net.ipv4.conf.lo.arp_ignore =1
  8. net.ipv4.conf.lo.arp_announce =2

若是不生效就重启

reboot

05访问VIP

  1. [root@bogon ~]# curl 192.168.10.172
  2. 333333
  3. [root@bogon ~]# curl 192.168.10.172
  4. 333333
  5. [root@bogon ~]# curl 192.168.10.172
  6. 2222222

posted on 2025-06-05 14:57  ljbguanli  阅读(38)  评论(0)    收藏  举报