5.部署LVS-DR群集

文章目录

  • 部署LVS-DR群集
    • LVS-DR数据包流向分析
    • LVS-DR中的ARP问题
      • 问题一
      • 问题二
    • LVS-DR部署
      • 调度器配置
      • 节点服务器配置
      • NFS服务器配置
    • ipvsadm

部署LVS-DR群集

LVS-DR数据包流向分析

为方便进行原理分析,将Client与群集机器放在同一网络中,数据包流经的路线如下:

  1. Client向目标VIP发出请求,Director (负载均衡器)接收
  2. Director根据负载均衡算法选择RealServer_1,不修改也不封装IP报文,而是将数据帧的MAC地址改为RealServer_1的MAC地址,然后在局域网上发送
  3. RealServer_1收到这个帧,解封装后发现目标IP与本机匹配(RealServer事先绑定了VIP), 于是处理这个报文。随后重新封装报文,将响应报文通过lo接口传送给物理网卡然后向外发出。
  4. Client将收到回复报文。Client认为得到正常的服务,而不会知道是哪一台服务器处理的

数据包流向分析:

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

5.部署LVS-DR群集_第1张图片

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地址。在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱。
  • 当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会接收到ARP广播
  • 只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播
对节点服务器进行处理,使其不响应针对VIP的ARP请求

用虚接口lo:0承载VIP地址

设置内核参数arp_ ignore=1: 系统只响应目的IP为本地IP的ARP请求(物理网卡的IP地址)

问题二

RealServer返回报文(源IP是VIP)经路由器转发,重新封装报文时,需要先获取路由器的MAC地址,发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址,路由器收到ARP请求后,将更新ARP表项,原有的VIP对应Director的MAC地址会被更新为VIP对应RealServer的MAC地址。路由器根据ARP表项,会将新来的请求报文转发给RealServer,导致Director的VIP失效

对节点服务器进行处理,设置内核参数arp_announce=2:
系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
vim /etc/sysctl.conf


......
net.ipv4.conf.lo.arp_ignore = 1	  
#系统只响应目的IP为本地IP的ARP请求

net.ipv4.conf.lo.arp_announce = 2  
#系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址


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

sysctl -p




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

LVS-DR部署

客户端:
调度器:192.168.242.66
节点服务器1:192.168.242.67
节点服务器2:192.168.242.68
VIP:192.168.242.188
NFS服务器:192.168.242.69

调度器配置

systemctl stop firewalld.service
systemctl disable firewalld
setenforce 0

在虚接口配置VIP地址

cd /etc/sysconfig/network-scripts/

cp ifcfg-ens32 ifcfg-ens32:0

vim ifcfg-ens32:0
DEVICE=ens32:0
ONBOOT=yes
IPADDR=192.168.242.188
NETMASK=255.255.255.255

ifup ens32:0
ifconfig ens32:0

配置内核

##由于 LVS 负载调度器和各节点需要共用 VIP 地址,需要关闭 icmp 的重定向,不充当路由器。

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

配置负载分配策略

##配置负载分配策略

yum -y install ipvsadm

modprobe ip_vs
cat /proc/net/ip_vs


ipvsadm-save > /etc/sysconfig/ipvsadm

systemctl start ipvsadm

ipvsadm -C
ipvsadm -A -t 192.168.242.188:80 -s rr
ipvsadm -a -t 192.168.242.188:80 -r 192.168.242.67:80 -g -w 1		
ipvsadm -a -t 192.168.242.188:80 -r 192.168.242.68:80 -g -w 1
ipvsadm

ipvsadm -ln					#查看节点状态,Route代表 DR模式

节点服务器配置

节点服务器1:192.168.242.67
节点服务器2:192.168.242.68

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

vim /etc/selinux/config
SELINUX=disabled


yum -y install nfs-utils rpcbind httpd
systemctl start rpcbind

mount 192.168.242.69:/opt/ggl /var/www/html/

vim /etc/httpd/conf/httpd.conf
KeepAlive off

systemctl restart httpd

设置虚拟IP

##Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。
##因此使用虚接口 lo∶0 来承载 VIP 地址,并为本机添加一条路由记录,将访问 VIP 的数据限制在本地,以避免通信紊乱。


cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0

vim ifcfg-lo:0

DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.242.188
NETMASK=255.255.255.255					#注意:子网掩码必须全为 1

ifup lo:0
ifconfig lo:0

route add -host 192.168.242.188 dev lo:0
route -n

vim /etc/rc.d/rc.local
route add -host 192.168.242.188 dev lo:0

chmod +x /etc/rc.d/rc.local

配置内核参数

vim /etc/sysctl.conf

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

sysctl -p

NFS服务器配置

## 设置NFS服务器
IP为192.168.242.69

systemctl stop firewalld
systemctl disable firewalld
setenforce 0


yum -y install nfs-utils rpcbind

mkdir /opt/ggl 
mkdir /opt/abc
chmod 777 /opt/ggl 
chmod 777 /opt/abc
echo '

this is first web

' > /opt/ggl/index.html echo '

this is second web

' > /opt/abc/index.html vim /etc/exports /opt/ggl 192.168.242.0/24(rw,sync) /opt/abc 192.168.242.0/24(rw,sync) systemctl start rpcbind systemctl start nfs systemctl enable rpcbind systemctl enable nfs showmount -e ##发布分享 exportfs -rv

ipvsadm

ipvsadm -d -t 192.168.242.188:80 -r 192.168.242.67:80
##删除一个节点服务器

ipvasdm -D -t 192.168.242.188:80
##删除全部配置

ipvasdm-save > /opt/ipvsadm
##保存ipvsadm规则

ipvsadm-restore < /opt/ipvsadm
##恢复ipvsadm规则

systemctl stop ipvsadm
##关闭ipvsadm服务,效果跟清空一样

你可能感兴趣的:(7.负载均衡,lvs,网络,服务器)