• LVS集群 ----------------(直接路由 )DR模式部署 (二)


    一、LVS集群的三种工作模式

    • lvs-nat:修改请求报文的目标IP,多目标IP的DNAT

    • lvs-dr:操纵封装新的MAC地址(直接路由)  

    • lvs-tun:隧道模式

    lvs-dr 是 LVS集群的 默认工作模式

    NAT通过网络地址转换实现的虚拟服务器,大并发访问时,调度器的性能成为瓶颈lvs压力不适用

    DR:使用路由技术实现虚拟服务器,节点服务器需要配置VIP,注意MAC地址广播

    TUN:通过隧道方式实现虚拟服务器。

    参考上一篇文章

    二、LVS工作模式比较

    LVs的工作模式及其工作过程:


    LVS 有三种负载均衡的模式,分别是VS/NAT(nat 模式)、VS/DR(路由模式)、VS/TUN(隧道模式)

    1、NAT模式(VS-NAT)


    原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的工P地址(RIP)。真实服务器响应完请求后,查看默认路由,把响应后的数据包发送给负载均衡器,负载均衡器在接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。
    优点:集群中的服务器可以使用任何支持TCP/IP的操作系统,只要负载均衡器有一个合法的IP地址。
    缺点:扩展性有限,当服务器节点增长过多时,由于所有的请求和应答都需要经过负载均衡器,因此负载均衡器将成为整个系统的瓶颈。


    2、直接路由模式(VS-DR)


    原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的日标mac地址改成后端真实服务器的MAC地址(R-MAC)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均器。
    优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量。
    缺点:需要负载均衡器与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。

    3、IP隧道模式(VS-TUN)


    原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求报文封装一层IP隧道(T-IP)转发到真实服务器(RS)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均器。
    优点:负载均衡器只负责将请求包分发给后端节点服务器,而Rs将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量。

    缺点:隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持"IP Tunneling"。

    三、lvs ----------直接路由 (DR模式)

    直接路由(Direct Routing):简称 DR 模式,采用半开放式的网络结构,与 TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络。

    负载调度器与各节点服务器通过本地网络连接,不需要建立专用的 IP 隧道

    直接路由,LVS默认模式,应用最广泛,通过请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变

    DR模式两种解决方法:

    绑定ARP绑定Ivs 代理服务器(碰不到客户端,一般不用)
    关闭ARP 广播 真实服务器(一般采用它)

    LVS调度服务器也可以使用公网ip,也可以买公网ip

    DR模式的特点:

    1. Director(调度器)和各RS(真实服务器)都配置有VIP(虚拟ip)

    2. 确保前端路由器将目标IP为VIP的请求报文发往Director

    • 在前端网关做静态绑定VIP和Director的MAC地址

    • 在RS上使用arptables工具

    arptables -A IN -d $VIP -j DROP
    arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP

    在RS上修改内核参数以限制arp通告及应答级别

    /proc/sys/net/ipv4/conf/all/arp_ignore  忽略arp广播
    /proc/sys/net/ipv4/conf/all/arp_announce  关闭无敌arp

    RS(真实服务器)的RIP(真实ip)可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不能指向DIP,以确保响应报文不会经由Director

    1. RS和Director要在同一个物理网络

    2. 请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client

    3. 不支持端口映射(端口不能修改

    4. 无需开启 ip_forward(路由转发)

    5. RS可使用大多数OS系统

    操作系统(Operating System,缩写为OS)是一种控制和管理计算机硬件与软件资源的计算机程序

    拓朴图:

    回环网卡上配置虚拟ip,四台机器共用一个虚拟ip,在Linux中,回环网卡是指用于本地回环测试的虚拟网络接口,通常被标识为lo

    四台机器都关闭防火墙、防护

    7-1配置负载调度器

    1. net.ipv4.ip_forward = 0
    2. net.ipv4.conf.all.send_redirects = 0
    3. net.ipv4.conf.default.send_redirects = 0
    4. net.ipv4.conf.ens33.send_redirects = 0

    #调整/proc响应参数  对于 DR 群集模式来说,由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭 Linux 内核的重定向参数响应服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能

    1. [root@zzzcentos1 ~]#systemctl stop firewalld
    2. [root@zzzcentos1 ~]#setenforce 0
    3. [root@zzzcentos1 ~]#ifconfig ens33:0 192.168.246.188/32
    4. [root@zzzcentos1 ~]#ip a
    5. [root@zzzcentos1 ~]#vim /etc/sysctl.conf #调整/proc响应参数
    6. net.ipv4.ip_forward = 0
    7. net.ipv4.conf.all.send_redirects = 0
    8. net.ipv4.conf.default.send_redirects = 0
    9. net.ipv4.conf.ens33.send_redirects = 0
    10. #末行加入
    11. [root@zzzcentos1 ~]#sysctl -p
    12. [root@zzzcentos1 ~]#modprobe ip_vs ##加载模块
    13. [root@zzzcentos1 ~]#cat /proc/net/ip_vs
    14. IP Virtual Server version 1.2.1 (size=4096)
    15. Prot LocalAddress:Port Scheduler Flags
    16. -> RemoteAddress:Port Forward Weight ActiveConn InActConn
    17. [root@zzzcentos1 ~]#yum install ipvsadm.x86_64 -y
    18. [root@zzzcentos1 ~]#ipvsadm-save >/etc/sysconfig/ipvsadm
    19. [root@zzzcentos1 ~]#systemctl start ipvsadm.service
    20. [root@zzzcentos1 ~]#systemctl status ipvsadm.service
    21. ● ipvsadm.service - Initialise the Linux Virtual Server
    22. Loaded: loaded (/usr/lib/systemd/system/ipvsadm.service; disabled; vendor preset: disabled)
    23. Active: active (exited) since 三 2024-03-06 15:18:53 CST; 20s ago
    24. Process: 2969 ExecStart=/bin/bash -c exec /sbin/ipvsadm-restore < /etc/sysconfig/ipvsadm (code=exited, status=0/SUCCESS)
    25. Main PID: 2969 (code=exited, status=0/SUCCESS)
    26. 306 15:18:53 zzzcentos1 systemd[1]: Starting Initialise the Linux Virtual Server...
    27. 306 15:18:53 zzzcentos1 systemd[1]: Started Initialise the Linux Virtual Server.
    28. [root@zzzcentos1 ~]#ipvsadm -A -t 192.168.246.188:80 -s rr
    29. [root@zzzcentos1 ~]#
    30. [root@zzzcentos1 ~]#ipvsadm -a -t 192.168.246.188:80 -r 192.168.246.8:80 -g
    31. [root@zzzcentos1 ~]#ipvsadm -a -t 192.168.246.188:80 -r 192.168.246.9:80 -g
    32. [root@zzzcentos1 ~]#
    33. [root@zzzcentos1 ~]#ipvsadm -ln
    34. IP Virtual Server version 1.2.1 (size=4096)
    35. Prot LocalAddress:Port Scheduler Flags
    36. -> RemoteAddress:Port Forward Weight ActiveConn InActConn
    37. TCP 192.168.246.188:80 rr
    38. -> 192.168.246.8:80 Route 1 0 0
    39. -> 192.168.246.9:80 Route 1 0 0
    40. [root@zzzcentos1 ~]#

    7-2 真实服务器配置

    1. net.ipv4.conf.all.arp_ignore = 1
    2. net.ipv4.conf.all.arp_announce = 2
    3. net.ipv4.conf.default.arp_ignore = 1
    4. net.ipv4.conf.default.arp_announce = 2
    5. net.ipv4.conf.lo.arp_ignore = 1
    6. net.ipv4.conf.lo.arp_announce = 2

    1. [root@zzzcentos2 ~]#systemctl stop firewalld
    2. [root@zzzcentos2 ~]#setenforce 0
    3. [root@zzzcentos2 ~]#yum install httpd -y
    4. [root@zzzcentos2 ~]#systemctl start httpd
    5. [root@zzzcentos2 ~]#ifconfig lo:0 192.168.246.188/32
    6. [root@zzzcentos2 ~]#ip a
    7. [root@zzzcentos2 ~]#cd /var/www/html/
    8. [root@zzzcentos2 html]#echo 7-2nihao > index.html
    9. [root@zzzcentos2 html]#cat index.html
    10. 7-2nihao
    11. [root@zzzcentos2 html]#sysctl -a |grep arp
    12. [root@zzzcentos2 html]#vim /etc/sysctl.conf
    13. #在末行加入
    14. net.ipv4.conf.all.arp_ignore = 1
    15. net.ipv4.conf.all.arp_announce = 2
    16. net.ipv4.conf.default.arp_ignore = 1
    17. net.ipv4.conf.default.arp_announce = 2
    18. net.ipv4.conf.lo.arp_ignore = 1
    19. net.ipv4.conf.lo.arp_announce = 2
    20. [root@zzzcentos2 html]#sysctl -p

    7-3真实服务器配置

    1. [root@zzzcentos3 ~]#systemctl start httpd
    2. [root@zzzcentos3 ~]#ifconfig lo:0 192.168.246.188/32
    3. [root@zzzcentos3 ~]#cd /var/www/html/
    4. [root@zzzcentos3 html]#echo 7-3 nihao > index.html
    5. [root@zzzcentos3 html]#cat index.html
    6. 7-3 nihao
    7. [root@zzzcentos3 html]#vim /etc/sysctl.conf
    8. [root@zzzcentos3 html]#sysctl -p
    9. net.ipv4.conf.all.arp_ignore = 1
    10. net.ipv4.conf.all.arp_announce = 2
    11. net.ipv4.conf.default.arp_ignore = 1
    12. net.ipv4.conf.default.arp_announce = 2
    13. net.ipv4.conf.lo.arp_ignore = 1
    14. net.ipv4.conf.lo.arp_announce = 2
    15. [root@zzzcentos3 html]#

    7-4客户机检测:

    四、 arp_announce   arp_ignore

    vim /etc/sysctl.conf

    #添加系统只响应目的IP为本地IP的ARP请求
    #系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP

    1. net.ipv4.conf.all.arp_ignore = 1
    2. net.ipv4.conf.all.arp_announce = 2
    3. net.ipv4.conf.default.arp_ignore = 1
    4. net.ipv4.conf.default.arp_announce = 2
    5. net.ipv4.conf.lo.arp_ignore = 1
    6. net.ipv4.conf.lo.arp_announce = 2


    五、ARP协议

    arp作用:①把ip地址转化为mac地址

                     ② 检测地址是否冲突

    arp中没有源ip和目的ip,是发送方ip和接受方ip

    arp中没有源ip和目的ip,是发送方ip和接收方ip

  • 相关阅读:
    软件测试/测试开发丨基于人工智能的代码分析与 Bug 检测实战
    java计算机毕业设计医院门诊预约系统源程序+mysql+系统+lw文档+远程调试
    我的创作纪念日
    Docker 上 gitlab私有化部署及邮箱配置
    【Fabric】libfabric
    Java版工程行业管理系统源码-专业的工程管理软件- 工程项目各模块及其功能点清单
    排序:如何用快排思想在O(n)内查找第K大元素?
    (Java数据结构)泛型
    Linux环境更换阿里源(CentOS+Ubuntu)
    Leetcode 1584. 连接所有点的最小费用(手撸普利姆算法)
  • 原文地址:https://blog.csdn.net/zzzxxx520369/article/details/136503081