部署LVS-DR群集

 

 

 

 

 

 

 

 

一、LVS-DR工作原理

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

LVS-DR模式,Director Server 作为群集的访问入口,不作为网关使用。

节点Director Server Real Server 需要在同一个网络中,返回给客户端的数据不需要经过Director Server

为了对整个群集的访问,Dreector ServerReal Server都需要配置VIP地址

1 LVS-DR数据包流向分析

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

ip:客户端ip,目标ip:虚拟ip,源MAC:客户端MAC地址,目标MAC:负载均衡器的MAC地址

 Director根据负载均衡算法选择RealServer_1(真实服务器),不修改也不封装IP报文,而是将数据帧的MAC地址改为RealServer_1MAC地址,然后在局域网上发送。

ip:虚拟ip,目标ip:真实虚拟ip,源MAC:负载均衡器MAC,目标MAC:真实服务器MAC

 RealServer_1收到这个帧,解封装后发现目标IP与本机匹配(RealSERVERS事先绑定了VIP),于是处理这个报文,随后重新封装报文,发送到局域网。

ip:虚拟ip,目标ip:客户机ip,源MAC:真实ens33网卡MAC,目标MAC:客户端MAC

注意:如果跨网段,则报文通过路由器经由internet返回给用户

 

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

 

详细流程分析

客户端通过路由器将访问请求发送到内网当中,需要通过APR将源地址解析为MAC地址进行访问,但是由于内网中DS(负载调度器)和RS(真实服务器)都配置了VIP,他们都可收到APR请求,并返回自己的MAC,这时候客户端的数据不知道往哪个上面发送,那就需要通过在真实服务器上配置  “路由紧固” + “只响应目标为本机ens33网卡信息的请求参数” ,因为DR上配置的是虚拟子接口,可以接收到信息,而RS,配置的是环回地址,无法收到ARP请求,那么这样就只有DS收到请求。收到请求后,客户端通过封装DS的MAC地址,进行二层转发。

DS收到请求后,通过调度算法选择需要转发的RS站点,因为都在局域网内此时转发只是二层的转发,那怎么发给RS站点呢?二层转发是局域MAC地址转发的,通过ARP获得RS的MAC地址,将获得的MAC地址封装为目标MAC地址,进行数据转发。

RS收到请求后,它可以直接请请求返回给客户端,不需要再经过DS,因为,它获取到数据包后,把数据包交个自己的ens33网卡,由ens33网卡将数据包转发出去,ens33进行APR广播,这里为了不修改ARP表的内容,在进行ARP广播,使用的源ip为RS的ens33接口ip。广播得到了客户机的MAC地址,再进行将数据转发,转发时,使用的源ip为:环回ip,源MAC为:ens33MAC,目标地址为:客户机地址,目标MAC为客户机MAC。

客户机收到数据包后,发现数据包的源地址为VIP,并不知道是哪一台服务器处理的,下次再发出请求时,直接根据ARP中的表项将数据再次转发到DS

 

 

 

 

 

 2 DR模式的特点

1Director Server(调度器) 和 Real Server(节点服务器) 必须在同一个物理网络中。

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

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

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

5Real Server 的网关不允许指向Director Server IP, 即Real Server发送的数据包不允许经过Director Server。(RS的网关地址只能指定真实的路由器网关)

6Real Server 上的 lo 接口配置VIPIP地址。

 

LVS单网段DR模式部署

五台虚拟机(两台web服务虚拟机,一台DR负载均衡调度器,一台客户机,一台NFS共享服务机),具体IP配置如下:

 DR 服务器:192.168.73.105

Web 服务器1192.168.73.106

Web 服务器2192.168.73.107

NFS共享服务机:192.168.73.108

客户端:192.168.73.109

vip192.168.73.66

 

 

配置DR

systemctl stop firewalld
setenforce 0
vim /etc/selinux/config
SELINUX=disabled
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm
 
 

配置虚拟IP

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0                #若隧道模式,复制为ifcfg-tunl0
vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.73.66
NETMASK=255.255.255.255
 
ifup ens33:0
ifconfig ens33: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

配置负载分配

ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
 
ipvsadm -C
ipvsadm -A -t 192.168.73.66:80 -s rr
ipvsadm -a -t 192.168.73.66:80 -r 192.168.73.106:80 -g            #若隧道模式,-g替换为-i
ipvsadm -a -t 192.168.73.66:80 -r 192.168.73.107:80 -g
ipvsadm
 
ipvsadm -ln                    #查看节点状态,Route代表 DR模式

 

 

部署共享存储NFS

systemctl stop firewalld.service
setenforce 0
 
yum -y install nfs-utils rpcbind
mkdir /opt/web1 /opt/web2
chmod 777 /opt/web1 /opt/web2
 
vim /etc/exports
/usr/share *(ro,sync)
/opt/web1 192.168.73.0/24(rw,sync)
/opt/web2 192.168.73.0/24(rw,sync)
 
systemctl start rpcbind.service
systemctl start nfs.service

 

 配置节点服务器

配置虚拟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.73.66
NETMASK=255.255.255.255                        #注意:子网掩码必须全为 1
 
ifup lo:0
ifconfig lo:0
route add -host 192.168.73.66 dev lo:0
 
vim /etc/rc.local
/sbin/route add -host 192.168.73.66 dev lo:0
 
chmod +x /etc/rc.d/rc.local

调整内核ARP,防止IP地址与MAC地址冲突

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
 
或者
(echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
 
sysctl -p)
 
yum -y install nfs-utils rpcbind httpd
systemctl start rpcbind
systemctl start httpd

web1网页测试

 
mount.nfs 192.168.73.108:/opt/web1 /var/www/html
echo '<h1>this is  web1 test !</h1>' > /var/www/html/index.html

 

 web2网页测试

mount.nfs 192.168.73.108:/opt/benet /var/www/html
echo '<h1>this is web2 test!</h1>' > /var/www/html/index.html

 

 关掉主配置保持连接

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

 

 客户机访问VIP地址

 

 

 

 

总结

LVS-DR模式部署总结

NFS服务器的设置

1)安装nfs-utilsrpcbind软件包

2)新建共享目录,并创建站点文件

3)修改共享配置文件,设置共享策略

4)启动两个服务,查看本机的NFS共享信息

调度器设置:

1)加载 ip_vs 模块,安装ipvsadm工具

2)配置虚拟网卡(ens33:0IP地址(VIP

3)条件proc参数,并且关闭路由转发功能

4)使用ipvsadm工具配置负载均衡策略(配置时注意,该转发设置基于VIP设置,而非调度器本身的IP

节点服务器配置

 1)安装httpd服务,并且创建各自的测试网页(真实环境是多个节点服务器挂同一个NFS共享机,并且内容网页相同。)

2)添加虚拟网卡,与调度器不同,节点服务器设置的虚拟网卡为回环的虚拟网卡(lo:0),用于承载VIP,做自身数据处理

  (3)调整内核(/etc/sysctl.conf)的参数设置,以阻止更新 VIP MAC 地址,避免发生冲突。

  (4)添加路由,指定设备为回环的虚拟网卡(也是承载VIP的虚拟网卡)

 

posted @ 2022-11-28 09:04  withfear  阅读(40)  评论(0编辑  收藏  举报
----------------------------------- ©著作权归作者所有:来自51CTO博客作者一品堂_技术学习笔记的原创作品,请联系作者获取转载授权,否则将追究法律责任 博客园随笔中添加目录导航悬浮框博客园随笔中添加目录导航悬浮框 https://blog.51cto.com/ios9/3125785