Lvs--部署DR集群

一.Lvs有三种负载均衡的模式:

    VS/NAT(nat模式)

    VS/DR   (路由模式)

    VS/TUN (隧道模式)

(1)NAT模式(VS-NAT)

原理:首先负载均衡器接收到客户端请求包时,根据调度算法决定将请求发送给哪个后端的真实               服务器(RS)

      然后负载均衡器就把客户端的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址         (RIP)。真实服务器响应完请求后,查看默认路由,把响应后的数据发送给负载均衡器,

     负载均衡器在接收到到响应包后,把包的源地址改成虚拟地址(VIP),然后发送回给客户端。

优点:集群中的服务器可以使用任何支持TCP/IP的操作系统,只要负载均衡器有一个合法的IP地址。

缺点:扩展性有限,当服务器节点增长过多时,由于所有的请求和应答都需要经过负载均衡器,因此负载均衡器将成为整个系统的瓶颈。

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

简称 DR 模式

原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定请求发送给哪个后端的真实          服务器(RS)。

       然后负载均衡器就把客户端发送的请求数据包的目标MAC地址改成后端真实服务器的MAC地         址(R-MAC)。

        真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经           过负载均衡器。

优点:负载均衡器只负责将请求包分发给后端服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不在是系统的瓶颈,也能处理很巨大的请求量。

缺点:需要负载均衡器与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。

DR模式的特点:

  1. Director和各RS都配置有VIP

  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
/proc/sys/net/ipv4/conf/all/arp_announce

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

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

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

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

  4. 无需开启 ip_forward

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

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

原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。

然负后载均衡器就把客户端发送的请求报文封装一层IP隧道(T-IP)转发到真实服务器(RS)。

真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器。

优点:负载均衡器在只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量。

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

二.LVS工作模式总结和比较

NAT TUN DR
优点 端口转换 WAN 性能最好
缺点 性能瓶颈 服务器支持隧道模式 不支持跨网段
真实服务器要求 any Tunneling Non-arp device
支持网络 private(私网) LAN/WAN(私网/公网) LAN(私网)
真实服务器数量 low (10~20) High (100) High (100)
真实服务器网关 lvs内网地址 Own router(网工定义) Own router(网工定义)

三.部署LVS-DR集群 实验

环境简介
DR 服务器:192.168.91.88
web 服务器1:192.168.91.87
web 服务器2:192.168.91.86
vip(虚拟回环):192.168.91.180
客户端:192.168.91.188

(1)配置负载调度器

虚拟IP地址(VIP:192.168.6.180)

关闭防火墙

调整/proc响应参数

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

vim  /etc/sysctl.conf

net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

 刷新配置

sysctl -p

 加载ipvs内核模块

 通过重定向将当前规则重定向到系统默认的规则存放位置(重启服务会自动恢复里面的规则)

ipvsadm-save > /etc/sysconfig/ipvsadm

(如果停止服务,会自动将该文件清空,可通过查看这个文件查看/usr/lib/systemd/system/ipvsadm.service )

添加规则  

( 添加真实服务器-a   指定VIP地址及TCP端口-t    指定RIP地址及TCP端口 -r   指定DR模式-g)

查看 

(2)节点服务器

(另一程序占用  rm -rf /var/run/yum.pid) 

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

vim /etc/sysctl.conf

net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

定义对目标地址为本地IP的ARP询问不同的应答模式0 
0 - (默认值): 回应任何网络接口上对任何本地IP地址的arp查询请求 
1 - 只回答目标IP地址是来访网络接口本地地址的ARP查询请求 
2 -只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内 

说明:

( arp_ignore参数的作用是控制系统在收到外部的arp请求时,是否要返回arp响应。

  arp_ignore参数常用的取值主要有0,1,2,3~8较少用到:

0:响应任意网卡上接收到的对本机IP地址的arp请求(包括环回网卡上的地址),而不管该目的IP是否在接收网卡上。

1:只响应目的IP地址为接收网卡上的本地地址的arp请求。

2:只响应目的IP地址为接收网卡上的本地地址的arp请求,并且arp请求的源IP必须和接收网卡同网段。

3:如果ARP请求数据包所请求的IP地址对应的本地地址其作用域(scope)为主机(host),则不回应ARP响应数据包,如果作用域为全局(global)或链路(link),则回应ARP响应数据包。

4~7:保留未使用

8:不回应所有的arp请求

  sysctl.conf中包含all和eth/lo(具体网卡)的arp_ignore参数,取其中较大的值生效。

arp_announce的作用是控制系统在对外发送arp请求时,如何选择arp请求数据包的源IP地址。

  arp_announce参数常用的取值有0,1,2。

0:允许使用任意网卡上的IP地址作为arp请求的源IP,通常就是使用数据包a的源IP。

1:尽量避免使用不属于该发送网卡子网的本地地址作为发送arp请求的源IP地址。

2:忽略IP数据包的源IP地址,选择该发送网卡上最合适的本地地址作为arp请求的源IP地址。
  sysctl.conf中包含all和eth/lo(具体网卡)的arp_ignore参数,取其中较大的值生效。)

可用命令查看sysctl -a |grep arp   (过滤参数)

复制到配置文件修改

或者sysctl -a |grep arp >>/etc/sysctl.conf直接导到配置文件下修改

 

跟上面操作一样

 

机器4测试效果

相关推荐

  1. 部署LVS-DR

    2024-03-14 13:40:02       34 阅读
  2. 部署LVS-DR

    2024-03-14 13:40:02       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-14 13:40:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-14 13:40:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-14 13:40:02       87 阅读
  4. Python语言-面向对象

    2024-03-14 13:40:02       96 阅读

热门阅读

  1. LVS集群

    LVS集群

    2024-03-14 13:40:02      36 阅读
  2. python之第三方模块

    2024-03-14 13:40:02       37 阅读
  3. js 保留小数点几位

    2024-03-14 13:40:02       43 阅读
  4. sql中如何添加数据

    2024-03-14 13:40:02       44 阅读
  5. Redis-发布与订阅

    2024-03-14 13:40:02       45 阅读
  6. linux Shell 命令行-07-func 函数

    2024-03-14 13:40:02       45 阅读
  7. 汉诺塔-python递归

    2024-03-14 13:40:02       47 阅读
  8. C while 和 do while 区别

    2024-03-14 13:40:02       39 阅读