部署LVS-DR群集

目录

一,LVS-DR工作原理

1,LVS-DR数据包流向分析

二、DR模式特点即优缺点

1.DR模式特点

2.LVS-DR的优缺点

三、ARP解析问题

四、部署LVS-DR集群 

1.实验准备

2.环境准备

3.配置负载调度器LVS(192.168.100.11)

3.1安装ipvsadm工具

 3.2配置虚拟IP地址(VIP:192.168.100.100)

3.3调整内核(proc)响应参数

 3.4配置负载分配策略

4.部署共享存储NFS(192.168.100.14)

4.1安装nfs和rpcbind

 4.2创建共享目录,并设置权限

 4.3输入网页内容

 4.4设置共享目录并发布共享

 4.5发布共享

5.配置节点服务器(web01 和 web02)

5.5开启相关服务,并挂载共享目录

6.客户端测试


一,LVS-DR工作原理


LVS-DR(Linux Virtual Server Director Server)工作模式,是生产环境中最常用的一种工作模式

LVS-DR模式,Director Server 作为群集的访问入口,不作为网关使用。
节点Director Server 与Real Server 需要在同一个网络中,返回给客户端的数据不需要经过Director Server。
为了对整个群集的访问,Dreector Server和Real Server都需要配置VIP地址

1,LVS-DR数据包流向分析

 


1、Clinent向目标VIP发出请求,Director(负载均衡器)接收

源ip:客户端ip,目标ip:虚拟ip,源MAC:客户端MAC地址,目标MAC:负载均衡器的MAC地址
2、Director根据负载均衡算法选择RealServer_1(真实服务器),不修改也不封装IP报文,而是将数据帧的MAC地址改为RealServer_1的MAC地址,然后在局域网上发送。

源ip:虚拟ip,目标ip:真实虚拟ip,源MAC:负载均衡器MAC,目标MAC:真实服务器MAC
3、RealServer_1收到这个帧,解封装后发现目标IP与本机匹配(RealSERVERS事先绑定了VIP),于是处理这个报文,随后重新封装报文,发送到局域网。

源ip:虚拟ip,目标ip:客户机ip,源MAC:真实ens33网卡MAC,目标MAC:客户端MAC
注意:如果跨网段,则报文通过路由器经由internet返回给用户

4、Client将收到回复报文,Client认为得到正常的服务,而不会知道是那一台服务器处理的。

①客户端向目标VIP发送请求, 负载均衡器接收
②负载均衡器根据负载均衡算法选择后端真实服务器,不修改也不封装IP报文,而是将数据帧的
MAC地址改为后端真实服务器的MAC地址,然后在局域网上发送
①后端真实服务器收到这个帧,解封装后发现目标IP与本机匹配(事先绑定了VIP),于是处理
这个报文。
田随后重新封装报文,将响应报文通过1o接口传送给物理网卡然后向外发出客户端将收到回复报文
客户端认为得到正常的服务,而不会知道是哪一-台服务器处理的如果跨网段,则报文通过路由器经由internet返回给用户

 5,LVS-DR中的ARP问题

1、在LVS-DR负载均衡集样中,负载均衡与节点服务器都要配置相同的VIP地址。
2、在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的系乱。
当ARPE播发送到VS-DR集群时,因为负载均衡器和节点服务器都是连接到相同网络上,它们都会接收到ARP广播。只有前端的负
载均衡器进行响应,其他节点服务器不应该响应ARP广播。
3、对节点服务器进行处理,使其不响应针对VIP的ARP请求。
使用虚接口1o:0 承载VIP地址设置内核参数arp_ ignore=1:系统只响应目的IP为本地IP的ARP请求
4、 Rea1Serter返回报文(源IP是VIP)经路由器转发, 重新封装报文时,需要先获取路由器的MAC地址
5、发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使
用发送接口的IP地址如: ens33
6、路由器收到ARP请求后,将更新ARP表项
7、原有的VIP对应Director的MAC地址会被更新为VIP对应RealServer的MAC地址
 
8、路由器根据ARP表项, 会将新来的请求报文转发给Realserver, 导致Di rector的VIP失效
解决方法:对节点服务器进行处理,设置内核参数arp_announce=2:系统不使用IP包的源地址来设置ARP请求的源地址,而选择发
送接口的IP地址

二、DR模式特点即优缺点

1.DR模式特点

Director Server和Real Server必须在同一物理网络中
Real Server可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对RIP进行直接访问
Director Server作为集群的访问入口,但不能作为网关使用
所有的请求报文经由Director Server IP,即Real Server发送的数据包不允许经过Director Server
Real Server上的io接口配置VIP的IP地址

2.LVS-DR的优缺点

优点:
负载均衡器只负责将数据包分发给物理服务器,而物理服务器将应答包直接分发给用户。所以,负责均衡器能处理很巨大的请求量,这种方式,一台负载均衡能为超过100台物理服务器服务,负载均衡器不再是系统的瓶颈。使用LVS-DR方式,如果你的负载均衡器拥有100M的全双工网卡的话,就能使得整个Virtual Server能达到1G的拓土良,甚至更高
缺点
这种方式需要所有的DIR和RIP都在同一广播域;不支持异地容灾
 

三、ARP解析问题

1.问题一:IP地址冲突
在LVS-DR负载均衡集群中,负载均衡与节点服务器要配置相同的VIP地址,在局域网中具有相同的IP地址。势必会造成各服务器ARP通信的紊乱

当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会接收到ARP广播
只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播
解决办法:
对节点服务器进行处理,使其不响应针对VIP的ARP请求
用虚拟接口lo:0承载VIP地址
设置内核参数arp_ignore=1:系统只响应目的IP为本地IP(真实网卡IP)的ARP请求
2.问题二:第二次再有访问请求
Real Server返回报文(源IP是VIP)经路由器转发,重新封装报文时,需要先获取路由器的MAC地址,发送ARP请求时,Linux默认使用IP包的源IP地址(VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址,路由器收到ARP请求后,将更新ARP表项,原有的VIP对用Director的MAC地址会被更新为VIP对应的Real Server的MAC地址。路由器根据ARP表项,会将新来的请求报文转发给Real Server,导致Director的VIP失效
解决办法
对节点服务器进行处理,设置内核参数arp_announce=2:系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
 

路由器上绑定了真实服务器1的mac信息
请求到达真实服务器
在真实服务器上修改内核参数
只对所有服务器真实网卡上的地址进行反馈,解析
 

四、部署LVS-DR集群 

1.实验准备

LVS-DR服务器:192.168.100.11
web01:192.168.100.12
web02:192.168.100.13
vip(虚拟回环):192.168.100.100
NFS服务器:192.168.100.14
客户端:192.168.100.110

2.环境准备

部署前关闭所有机器防火墙及核心防护

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

在内网的服务器无法直接通过yum下载,需要配置本地yum仓库,在机器中执行以下脚本

#!/bin/bash
mount /dev/cdrom /mnt
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo  /etc/yum.repos.d/bak
touch /etc/yum.repos.d/local.repo
echo "
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0
" > /etc/yum.repos.d/local.repo
yum clean all
yum makecache

3.配置负载调度器LVS(192.168.100.11)

3.1安装ipvsadm工具

yum -y install ipvsadm

 3.2配置虚拟IP地址(VIP:192.168.100.100)

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0

 ifup ens33:0     #启动虚拟IP
ifconfig

 

3.3调整内核(proc)响应参数

由于LVS负载均衡器和各个节点需要共用vip地址,应该关闭Linux内核的重定向响应参数,不充当路由器,这样当DS收到客户端发来的数据包时,就不会立马转发给后台RS服务器,而是转发给自己的虚拟子接口。

vim /etc/sysctl.conf     #编辑内核proc参数
修改以下内容
net.ipv4.ip_forward = 0  #关闭路由转发功能
net.ipv4.conf.all.send_redirects = 0        #关闭所有send重定向
net.ipv4.conf.default.send_redirects = 0    #关闭默认重定向
net.ipv4.conf.ens33.send_redirects = 0     #关闭网卡重定向
sysctl -p   #查看内核参数

 

 3.4配置负载分配策略

ipvsadm -C     #清空规则
ipvsadm -A -t 192.168.100.100:80 -s rr    #创建虚拟主机,指定ip地址,并指定分流模式为轮询
ipvsadm -a -t 192.168.100.100:80 -r 192.168.100.12:80 -g 
#添加真实服务器ip地址,并指定负载均衡模式为DR
ipvsadm -a -t 192.168.100.100:80 -r 192.168.100.13:80 -g
#添加真实服务器ip地址,并指定负载均衡模式为DR
ipvsadm   #启动策略
ipvsadm-save > /etc/sysconfig/ipvsadm    #保存策略

 

4.部署共享存储NFS(192.168.100.14)

4.1安装nfs和rpcbind

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

 4.2创建共享目录,并设置权限

mkdir /opt/web01 /opt/web02
chmod 777 /opt/web01 /opt/web02

 4.3输入网页内容

echo "this is web01" > /opt/web01/index.html
echo "this is web02" > /opt/web02/index.html

 4.4设置共享目录并发布共享

vim /etc/exports
添加以下内容
/opt/web01 192.168.100.0/24(rw,sync)
/opt/web02 192.168.100.0/24(rw,sync)

 4.5发布共享

exportfs -rv

 

5.配置节点服务器(web01 和 web02)

以下步骤web01和web02都要配置

5.1配置虚拟IP地址(vip:192.168.100.100)

此地址仅作为发送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.100.100
NETMASK=255.255.255.255

ifup lo:0    #启动环回网卡
ifconfig lo:0    #查看环回网卡

 5.2添加vip本地访问路由,设置系统自动识别,并设置执行权限

route add -host 192.168.100.100 dev lo:0
或者下面方式,都可实现路由禁锢,下面为永久添加
vim /etc/rc.local      #Linux在开机启动时,会加载的内容
/sbin/route add -host 192.168.100.100 dev lo:0
chmod +x /etc/rc.d/rc/local

 

 5.3调整内核的ARP响应参数以阻止更新vip的MAC地址,避免冲突

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

 sysctl -p     #立即生效

 5.4安装nfs、rpcbind和httpd服务

yum -y install nfs-utils rpcbind httpd

 以上步骤 web01 和 web02 一样

5.5开启相关服务,并挂载共享目录

web01

systemctl start nfs
systemctl start rpcbind
systemctl start httpd
mount.nfs 192.168.100.14:/opt/web01 /var/www/html
df -hT

 web02

systemctl start nfs
systemctl start rpcbind
systemctl start httpd
mount.nfs 192.168.100.14:/opt/web02 /var/www/html
df -hT

 

6.客户端测试

用一台win10机器(vmnet1网卡)

 访问192.168.100.100

 测试成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值