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模式的特点:
-
Director和各RS都配置有VIP
-
确保前端路由器将目标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
-
RS和Director要在同一个物理网络
-
请求报文要经由Director,但响应报文不经由Director,而由RS直接发往Client
-
不支持端口映射(端口不能修改)
-
无需开启 ip_forward
-
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测试效果