LVS/DR实战篇 (三)

一、LVS/DR的工作原理

1. 重将请求报文的目标MAC地址设定为挑选出的RS的MAC地址

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

2. LVS-DR模型的特性

  • 特点1:保证前端路由将目标地址为VIP报文统统发给Director Server,而不是RS
  • RS可以使用私有地址;也可以是公网地址,如果使用公网地址,此时可以通过互联网对RIP进行直接访问
  • RS跟Director Server必须在同一个物理网络中
  • 所有的请求报文经由Director Server,但响应报文必须不能进过Director Server
  • 不支持地址转换,也不支持端口映射
  • RS可以是大多数常见的操作系统
  • RS的网关绝不允许指向DIP(因为我们不允许他经过director)
  • RS上的lo接口配置VIP的IP地址
  • 缺陷:RS和DS必须在同一机房中

3. 特点1的解决方案:

  • 在前端路由器做静态地址路由绑定,将对于VIP的地址仅路由到Director Server
  • 存在问题:用户未必有路由操作权限,因为有可能是运营商提供的,所以这个方法未必实用
  • arptables:在arp的层次上实现在ARP解析时做防火墙规则,过滤RS响应ARP请求。这是由iptables提供的
  • 修改RS上内核参数(arp_ignore和arp_announce)将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP地址解析请求。

二、LVS/DR环境

 

这种方式入站,出站访问数据被分别处理,因此LVS负载调度器和所有的节点服务器都需要配置有VIP地址,以便响应对整个群集的访问。考虚到数据存储的安全性,共享存储设备会放在内部的专用网络中。

VIP(虚拟IP地址):172.16.16.172/24

调度器:eth0  172.16.16.173/24   eth1:  192.168.7.173/24

WEB节点1:  eth0: 172.16.16.177/24    eth1:  192.168.7.177/24

WEB节点2:  eth0: 172.16.16.178/24    eth1:  192.168.7.178/24

NFS共享存储:eth0: 192.168.7.250/24

三、实验

1)配置lvs调度器上的网卡和vip

vim /etc/ifconfig/network-scripts/ifcfg-eth0
IPADDR=192.168.7.173
.....
cp ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0
IPADDR=172.16.16.172
.....
2)调度器上调整proc/相应参数

对于DR群集模式来说,应该关闭linux内核的ICMP重定向参数响应。
注:ICMP重定向报文是ICMP控制报文中的一种。在特定的情况下,当路由器检测到一台机器使用非优化路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。此类报文有可能用以攻击,所以系统应该拒绝接受ICMP重定向。
vim /etc/sysclt.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth1.send_redirects = 0
//注:参数的含义是发送重定向,0表示关闭此项功能。此处修改是为了安全考虑关闭重定向功能。如果具有 eth1、eth2 等多个接口,必须对所有接口执行该操作
执行sysctl  -p使修改生效

3)配置LVS负载策略

注:此处和LVS/NAT实战(二)的步骤一样省略。(位置在我上章的博客里)-----只需把 ipvsadm.........-m 改为-g即可

4)web服务器配置(nginx)

注: nginx的安装方法在上章内容中,在此省略。在LVS/DR中加上以下内容

4-1)配置web上的vip(每个节点都要配置)

在每个节点服务器,同样需要具有VIP地址172.16.16.172,但此地址仅用作发送WEB响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。因此使用虚拟接口lo:0来承载VIP地址,并为本机添加一条路由记录,将访问VIP的数据限制在本地以避免通信紊乱。

vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=172.16.16.172
NETMASK=255.255.255.255   //必须全部为1
ONBOOT=yes
 
//添加本地路由
route add -host 172.16.16.172 dev lo:0
echo "/"sbin/route add -host 172.16.16.172 dev lo:0 >> /etc/rc.local

4-2) 在web节点上调整proc/响应参数

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
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//以下内容是上面的解释
//{net.ipv4.conf.default.arp_ignore = 1 
net.ipv4.conf.all.arp_ignore = 1 
net.ipv4.conf.lo.arp_ignore = 1
arp_ignore:定义了网卡在响应外部ARP请求时候的响应级别
0:默认值,不管哪块网卡接收到了ARP请求,只要发现本机有这个MAC都给与响应
1:总是使用最合适的网卡来响应,一个主机有多块网卡,其中一块网卡接收到了ARP请求,发现所请求的MAC是本机另一块网卡的,这个时候接收到ARP请求的这块网卡就一定不响应,只有发现请求的MAC是自己的才给与响应。}
{net.ipv4.conf.default.arp_announce =2 
net.ipv4.conf.all.arp_announce =2
net.ipv4.conf.lo.arp_announce = 2
定义了网卡在向外宣告自己的MAC-IP时候的限制级别 
有三个值:
0:默认值,不管哪块网卡接收到了ARP请求,只要发现本机有这个MAC都给与响应
1:尽量避免响应ARP请求中MAC不是本网卡的,一个主机有多块网卡,其中一块网卡接收到了ARP请求,发现所请求的MAC是本机另一块网卡的,这个时候接收到ARP请求的这块网卡就尽量避免响应
2:总是使用最合适的网卡来响应,一个主机有多块网卡,其中一块网卡接收到了ARP请求,发现所请求的MAC是本机另一块网卡的,这个时候接收到ARP请求的这块网卡就一定不响应,只有发现请求的MAC是自己的才给与响应。}

5)NFS共享存储在上章有具体讲解在此省略

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值