LVS-DR实例部署

目录

前言

一、DR工作原理

二、数据流向

三、DR特性

四、ARP问题分析

问题1

解决方法

问题2

解决方法

解决以上问题的内核配置如下

问题3

五、DR实例部署

需求

调度服务器配置

 配置网卡并重启网络

调整/proc的响应参数​编辑

 刷新策略并查看.然后加载模块​编辑

清空ipvsadm并 配置负载分配策略​编辑

 加载并查询​编辑

 Web 服务器

添加网卡lo:0并配置 

创建站点文件

​编辑 开机执行命令​编辑

 调整/proc响应参数 

客户机登录网页测试


前言

DR模式(Direct Routing):采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络,负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道

一、DR工作原理

Director Server作为群集的访问入口,但不作为网关使用,后端服务器池中的Real Server与Director Server在同一个物理网络中,发送给客户机的数据包不需要经过Director Server。为了响应对整个群集的访问,DS(前端负载均衡节点服务器)与RS(后端真实服务器)都需要配置有VIP地址

每个Real Server上都有两个IP:VIP(负载均衡对外提供访问的 IP 地址)和RIP(负载均衡后端的真实服务器 IP 地址),但是VIP是隐藏的,就是不能提供解析等功能,只是用来做请求回复的源IP的,Director上只需要一个网卡,然后利用别名来配置两个IP:VIP和DIP(负载均衡与后端服务器通信的 IP 地址),在DIR接收到客户端的请求后,DIR根据负载算法选择一台rs sever的网卡mac作为客户端请求包中的目标mac,通过arp转交给后端RS serve处理,后端再通过自己的路由网关回复给客户端

二、数据流向

  1. 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
  2. PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
  3. IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。 此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址
  4. 由于DS(调度服务器)和RS(节点真实服务器)在同一个网络中,所以是通过二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server。
  5. RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。 此时的源IP地址为VIP,目标IP为CIP
  6. 响应报文最终送达至客户端

三、DR特性

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

四、ARP问题分析

问题1

在LVS-DR负载均衡集群中,负载均衡与节点服务器都要配置相同的VIP地址,势必会造成各服务器ARP通信紊乱,ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会接收ARP广播,只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播


解决方法

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


问题2

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


解决方法

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

解决以上问题的内核配置如下

修改 /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

问题3

为什么RS设置lo:0而不设置ens33:0?

答:

因为“负载调度机”转发时并不会改写数据包的目的IP,所以“节点服务器”收到的数据包的目的IP仍是“负载调度器”的虚拟服务IP。为了保证“节点服务器”能够正确处理该数据包,而不是丢弃,必须在“节点服务器”的环回网卡上绑定“负载调度器”的虚拟服务IP。这样“节点服务器”会认为这个虚拟服务IP是自己的IP,自己是能够处理这个数据包的。否则“节点服务器”会直接丢弃该数据包!

“节点服务器”上的业务进程必须监听在环回网卡的虚拟服务IP上,且端口必须和“负载调度机”上的虚拟服务端口一致。因为“负载调度机”不会改写数据包的目的端口,所以“节点服务器”服务的监听端口必须和虚拟服务端口一致,否则“节点服务器”会直接拒绝该数据包。

“节点服务器”处理完请求后,响应直接回给客户端,不再经过“负载调度机”。因为“节点服务器”收到的请求数据包的源IP是客户端的IP,所以理所当然“节点服务器”的响应会直接回给客户端,而不会再经过“负载调度机”。这时候要求“节点服务器”和客户端之间的网络是可达的。

“负载调度机”和“节点服务器”须位于同一个子网。因为“负载调度机”在转发过程中需要改写数据包的MAC为“节点服务器”的MAC地址,所以要能够查询到“节点服务器”的MAC。而要获取到“节点服务器”的MAC,则需要保证二者位于一个子网,否则“负载调度机”只能获取到“节点服务器”网关的MAC地址。
 

五、DR实例部署

需求

为了进一步提高公司网站的负载能力,公司决定扩展现有的网站平台,基于LVS构筑负载均衡群集,考虑到群集的访问效率,管理员准备采用LVS群集的DR模式,共享存储设备存放在内部网络中。

调度服务器配置

##环境简介
DR Server:192.168.223.10
Web Server1:192.168.223.13
Web Server2:192.168.223.17
VIP:192.168.223.100
Client:192.168.223.200

##关闭防火墙和增强机制
[root@DR ~]# systemctl stop firewalld
[root@DR ~]# systemctl disable firewalld
[root@DR ~]# setenforce 0
setenforce: SELinux is disabled


##安装ipvsadm工具
[root@DR ~]# yum install -y ipvsadm

##配置虚拟IP地址
[root@DR ~]# cd /etc/sysconfig/network-scripts/

 配置网卡并重启网络

 

##调整/proc的响应参数
[root@DR network-scripts]# vim /etc/sysctl.conf

##刷新配置
[root@DR network-scripts]# sysctl -p

##加载模块并查看信息
[root@DR network-scripts]# modprobe ip_vs
[root@DR network-scripts]# cat /proc/net/ip_vs

##保存负载的策略,并重新启动服务
[root@DR network-scripts]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@DR network-scripts]# systemctl restart ipvsadm.service

##清空策略
[root@DR network-scripts]# ipvsadm -C      

##制定策略  
##-a:添加真实服务器;-t:指定VIP地址及TCP端口;-r:指定RIP地址及TCP端口;-g:指定DR模式
[root@DR network-scripts]# ipvsadm -A -t 192.168.223.100:80 -s rr
[root@DR network-scripts]# ipvsadm -a -t 192.168.223.100:80 -r 192.168.223.13:80 -g
[root@DR network-scripts]# ipvsadm -a -t 192.168.223.100:80 -r 192.168.223.17:80 -g

##查看并保存策略

[root@DR network-scripts]# ipvsadm -ln
[root@DR network-scripts]# ipvsadm-save > /etc/sysconfig/ipvsadm

调整/proc的响应参数

 刷新策略并查看.然后加载模块

清空ipvsadm并 配置负载分配策略

 加载并查询

 Web 服务器

这里配置列两台Web服务器,操作的同步的就不做重复说明了

##关闭防火墙和增强机制
[root@Web ~]# systemctl stop firewalld
[root@Web ~]# setenforce 0

##安装httpd服务并开启
[root@Web ~]# yum install -y httpd
[root@Web ~]# systemctl start httpd

##创建一个站点文件
[root@Web ~]# echo "This is Web Server 1" > /var/www/html/index.html


##添加回环网卡并配置IP地址和掩码
[root@Web network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.223.100
NETMASK=255.255.255.255
NETWORK=127.0.0.0
ONBOOT=yes

##重启网络
[root@Web network-scripts]# systemctl restart network

##添加路由
[root@Web html]# route add -host 192.168.223.100 dev lo:0

##添加执行权限
[root@Web html]# chmod +x /etc/rc.d/rc.local

##调整proc相应参数
[root@Web html]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

[root@Web html]sysctl -p

添加网卡lo:0并配置 

创建站点文件

开机执行命令

 调整/proc响应参数 

  ​​设置路由

客户机登录网页测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值