部署LVS-DR群集

LVS-DR(Linux Virtual Server - Direct Routing)是Linux虚拟服务器的一种工作模式,常用于实现负载均衡群集。
LVS-DR的工作原理:

Director Server(负载均衡器)作为群集的访问入口,但不作为网关使用。为了响应对整个群集的访问,Director Server与Real Server(真实服务器)都需要配置VIP(虚拟IP地址),且它们需在同一个网络中,返回给客户端的数据不需要经过Director Server。客户端向目标VIP发送请求,负载均衡器接收后,根据负载均衡算法选择后端的真实服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为后端真实服务器的MAC地址,然后在局域网上发送。后端真实服务器收到这个帧,解封装后发现目标IP与本机匹配(事先绑定了VIP),于是处理这个报文,随后重新封装报文,将响应报文通过lo接口传送给物理网卡然后向外发出,客户端将收到回复报文,且客户端认为得到正常的服务,而不会知道是哪一台服务器处理的。如果跨网段,则报文通过路由器经由互联网返回给用户。

LVS-DR的特性包括:

1.Director Server和Real Server必须在同一个物理网络中。

2.Real Server可以使用私有地址,也可以使用公网地址。若使用公网地址,可通过互联网对RIP进行直接访问。

3.Director Server作为群集的访问入口,但不作为网关使用。

4.所有的请求报文经由Director Server,但回复响应报文不能经过Director Server。

5.Real Server的网关不允许指向Director Server IP,即Real Server发送的数据包不允许经过Director Server。

6.Real Server上的lo接口配置VIP的IP地址。

LVS-DR中的ARP问题及解决方法:

在LVS-DR负载均衡集群中,负载均衡器与节点服务器都配置相同的VIP地址,会造成ARP通信紊乱。当ARP广播发送到集群时,负载均衡器和节点服务器都会接收。为解决此问题:

对节点服务器进行处理,使其不响应针对VIP的ARP请求。可使用虚接口lo:0承载VIP地址,并设置内核参数arp_ignore=1,让系统只响应目的IP为本地IP的ARP请求。

Real Server返回报文(源IP是VIP)经路由器转发时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址,这可能导致路由器更新ARP表项,使Director的VIP失效。解决方法是对节点服务器进行处理,设置内核参数arp_announce=2,让系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址。

直接路由模式

直接路由模式(Direct Routing,简称DR模式)是一种常见的网络负载均衡技术。

DR模式的工作原理是:通过在调度器(通常称为 Director Server,简称 DS)上修改请求报文的目标MAC地址,将请求发给真实服务器(通常称为 Real Server,简称 RS),而真实服务器响应后的处理结果直接返回给客户端用户。
DR模式的特点包括:

  1. 所有的请求报文都是由调度器进行调度的。

2.直接由后端服务器把数据返回给客户端,不需要逆向发送数据包,调度器只专注做调度,效率很高。

3.不支持端口映射。

4.RS 和 DS 必须在同一网络,可以不在同一网段,使用交换机即可。

5.MAC 地址在第二层数据链路层,还没有到 IP 所在的网络层。

6.Real Server 的 RIP(后端服务器的 IP 地址)和 Director 的 DIP(调度器和后端服务器通信的 IP)必须处于同一网段中,以便使用 MAC 地址进行通信。

要实现 DR 模式,需要进行如下配置:

1.在调度器上安装相关服务,如 ipvsadm。

2.为调度器设置两个 IP 地址:DIP 配置在接口上,VIP 配置在网卡接口别名上。

3.在各真实服务器上进行如下配置:RIP 配置在接口上,VIP 配置在 lo 的别名上;定义内核参数,禁止响应对 VIP 的 ARP 广播请求;添加一个路由,确保请求目标 IP 是 VIP 时,响应的源地址也显示为 VIP。

4.在调度器上使用相关命令添加集群服务和真实服务器信息。

5.DR 模式的优点是没有 IP 隧道的开销,对真实服务器也没有必须支持 IP 隧道协议的要求,且能极大地提高集群系统的伸缩性,在互联网中使用较多。但它要求调度器与真实服务器在同一个局域网环境。

6.在实际应用中,需注意网络环境的配置和相关参数的设置,以确保 DR 模式的正常工作和性能优化。同时,还需考虑到可能出现的问题,如恶意连接导致某台后端服务器瘫痪等,并采取相应的解决措施。

配置负载调度器

(1)配置虚拟IP地址VIP

root@localhost \~\]# cd /etc/sysconfig/network-scripts/ \[root@localhost network-scripts\]# cp ifcfg-ens33 ifcfg-ens33:0 \[root@localhost network-scripts\]# vi ifcfg-ens33:0 TYPE=Ethernet BOOTPROTO=static NAME=ens33:0 DEVICE=ens33:0 ONBOOT=yes IPADDR=192.168.10.172 NETMASK=255.255.255.0 \[root@localhost network-scripts\]# systemctl restart network (2)调整内核参数,禁止转发重定向报文 由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭Linux 内核的重定向 \[root@localhost \~\]# vi /etc/sysctl.conf 在末尾添加: net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.ens33.send_redirects = 0 \[root@localhost \~\]# sysctl -p (3)配置负载分配策略 \[root@localhost \~\]#yum -y install ipvsadm \[root@localhost \~\]#ipvsadm -v \\\\查看版本 \[root@localhost \~\]# setenforce 0 \[root@localhost \~\]# systemctl stop firewalld \[root@localhost \~\]#ipvsadm -C \[root@localhost \~\]# ipvsadm -A -t 192.168.10.172:80 -s rr \[root@localhost \~\]# ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.102 -g -w 1 \[root@localhost \~\]# ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.103 -g -w 1 \[root@localhost \~\]# ipvsadm-save -A -t localhost.localdomain:http -s rr -a -t localhost.localdomain:http -r 192.168.10.102:http -g -w 1 -a -t localhost.localdomain:http -r 192.168.10.103:http -g -w 1 \[root@localhost \~\]# systemctl enable ipvsadm 3:配置web节点服务器 (1)配置虚拟ip地址VIP \[root@localhost \~\]# setenforce 0 \[root@localhost \~\]# systemctl stop firewalld \[root@localhost \~\]#cd /etc/sysconfig/network-scripts/ \[root@localhost network-scripts\]# cp ifcfg-lo ifcfg-lo:0 \[root@localhost network-scripts\]# vi ifcfg-lo:0 修改 DEVICE=lo:0 NETMASK=255.255.255.255 \\\\子网掩码必须为255.255.255.255 IPADDR=192.168.10.172 ONBOOT=yes \[root@localhost network-scripts\]# systemctl restart network \[root@localhost network-scripts\]# ifconfig \[root@localhost network-scripts\]# cd \[root@localhost \~\]# vi /etc/rc.local 添加 /sbin/route add -host 192.168.10.172 dev lo:0 \[root@localhost \~\]# route add -host 192.168.10.172 dev lo:0 (2)调整内核参数 \[root@localhost \~\]# vi /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 注释: arp_ignore =1 当收到arp请求时,只有ARP请求数据包所请求的IP地址属于当前网卡的IP地址,才会回应ARP响应数据包。 arp_announce = 2 当发送arp请求时,忽略IP数据包的源IP地址,总是选择网卡所配置的首选IP地址作为ARP请求数据包的发送方IP地址 目的:因为lo:0的ip地址和调度器的ens33:0的ip地址是一样的,为了不造成ip冲突,要禁止更新VIP的mac地址。 \[root@localhost \~\]# sysctl -p (3)安装httpd创建测试网页 \[root@localhost \~\]# yum -y install httpd yum install nfs-utils \[root@localhost \~\]# mount 192.168.10.105:/opt/wwwroot /var/www/html \[root@localhost \~\]#vi /var/www/html/index.html \LVS负载均衡群集--测试页面01\ (4)启用httpd服务 \[root@localhost \~\]# systemctl start httpd (5)配置第二台web节点 配置方法与第一台完全相同 注意:在实验环境中,为了验证负载过程,第二台web服务器的网站可以可第一个不一样,所以这两个web服务器就没有必要使用NFS,直接在web服务器本地创建测试网页文件即可 4:在client上测试网站 http://192.168.10.172 测试时频繁刷新页面 也可以用脚本测试: \[root@localhost \~\]# for i in $(seq 10); do curl http://192.168.10.172 ;done 5:在LVS调度器上查看LVS策略 \[root@localhost \~\]# ipvsadm -ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -\> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.10.172:80 rr -\> 192.168.10.102:80 Route 1 0 0 -\> 192.168.10.103:80 Route 1 0 0

相关推荐
婷儿z15 天前
LVS负载均衡群集:Nginx+Tomcat负载均衡群集
nginx·负载均衡·lvs
shumeigang17 天前
LVS+Keepalived+nginx
运维·nginx·lvs
行止617 天前
LVS+Keepalived高可用群集
linux·lvs·keepalived
佩奇的技术笔记17 天前
LVS vs Nginx 负载均衡对比:全面解析
nginx·负载均衡·lvs
婷儿z17 天前
LVS+Keepalived高可用群集
linux·服务器·lvs
天空之城夢主18 天前
LVS 负载均衡群集
运维·负载均衡·lvs
遗忘妳18 天前
LVS 负载均衡群集
运维·负载均衡·lvs
塑遂18 天前
LVS+Keepalived高可用群集
网络·智能路由器·lvs
ASDyushui18 天前
LVS+Keepalived高可用群集
网络·智能路由器·lvs
果子⌂18 天前
LVS+Keepalived高可用群集
网络·智能路由器·lvs