lvs负载均衡群集搭建(DR)
1:之前有讲过使用NAT技术的lvs的群集搭建接下来使用DR的直接路由模式来搭建负载均衡群集
2:在DR模式中。lvs负载调度器作为群集的访问入口,但不作为网关使用,服务器池中的所有节点来自internet。发送给客户端的web相应数据包不需要经过负载调度器;这种方式入站、出站访问数据分别被处理,因此lvs负载调度器和所有节点服务器都需要配置VIP地址,以便响应整个群集的访问。
VIP地址192.168.1.254
负载均衡服务器 web1服务器 web2服务器 nfs服务器
192.168.2.1 192.168.2.2 192.168.2.3 192.168.2.4
总体步骤与知识点准备:
说明:此模式lvs负载调度器作为群集的访问入口,但不作为网关使用,服务器池中的所有
节点都各自接入internet,发送给客户机(互联网)的web响应数据包不需要经过lvs负载调度器
一、步骤:
1.配置负载调度器:①配置虚拟ip(VIP)地址,vip必须和物理网络在一个子网)②应该关闭linux内核重定向参数响,调整/proc响应③配置负载分配策略
(1)首先配置调度器的VIP地址
(2)关闭Linux的内核重定项参数
修改配置文件 vim /etc/sysctl.conf
(3)配置负载均衡调度器
通过yum安装 ipvsadm 配置负载分发
2.配置节点服务器:使用dr模式时候,节点服务器也需要配置vip地址,并调整内核的arp响应参数以阻止更新VIP的mac地址,避免发生冲突
①配置虚拟ip(VIP)地址)②调整/proc响应参数
(1)配置web的vip地址,以web1为例
(2)调整/proc的相应参数
(3)为web节点配置不同的网页内容;从客户端进行验证
3:由于在单个web主页上进行配置,过于繁琐,而且在保持统一性容易出错,所以讲所有的web网页内容保存在同一的nfs服务器中
(1)创建共享目录
(2)nfs的共享目录配置文件为 /etc/exports
(3)重启nfs和rpcbind两个服务
(4)将nfs服务器的共享目录挂在到web服务器的网页根目录之下
(5) 客户端进行网页测试
二、知识点讲解
1.为什么需要lvs vip跟realserver 在同一个网段:
DR 模式因为只修改 package的 MAC地址通过ARP广播的形势找到realserver,所以 要求LVS 的VIP 和realserver的IP 必须在同一个网段内,也就是在挂载VIP 时先确认LVS的工作模式,如果是DR模式需要先确认这个IP 只是否能挂在这个LVS下面。
2.内核重定向:在lvs负载调度器和各节点需要共用VIP地址,并且应该关闭linux内核重定向参数响应
需要路由器向源发送ICMP重定向的情况有两种:
★ 当路由器从某个接口收到数据包后,还要将数据包从同一个接口发往目的地,就是路由器收到数据包的接口正是去往目的地的出口时,则会向源发送ICMP重定向,通告对方直接将数据包发向自己的下一跳即可,不要再发给自己。
★ 数据包的源IP和自己转发时的下一跳IP地址是同网段时,则会向源发送ICMP重定向,通告对方直接将数据包发向自己的下一跳。
注:路由器在向数据源发送ICMP重定向的同时,也会正常转发收到的数据包,并不会中断网络。
过程分析如下:
1). server2如果要与internet通讯,首先是要把报文发送给server1的,因为server2的网关指向server1的。
2). server1收到报文并检查它的路由表,发现router是发送改报文的下一跳。当它把报文发送给router时,server1检测到这个报文的发送出去的接口与接收到的接口是相同的,这样ICMP重定向就触发了。
3). server1认为server2应该把默认路由指向router,所以就发送ICMP重定向报文给server2,
3.在真实的节点服务器上要给lo:0设置vip,并调整内核的arp响应参数以阻止更新VIP的mac地址,避免发生冲突
在配置LVS负载均衡架构的时候需要在RealServer上抑制ARP,具体是arp_ignore=1,arp_announce=2
arp_ignore: (回应ARP)
0:回应任何网口上收到的对任何本机IP地址的ARP查询请求(默认)
1:只回应Target IP是接收网口的IP的ARP查询请求
2:只回应Target IP是接收网口的IP的ARP查询请求,且Sender IP必须与该网口属于同一网段
4-7:保留未使用
8:不回应所有的arp查询
arp_announce: (选择ARP宣告时候使用的Sender IP)
0:使用发送(或转发)的数据包的源IP作为发送ARP请求的Sender IP(默认) ;(可使用ping -I 验证)
1:IP数据包的目的IP属于本地某个接口的网段时,Sender IP则使用IP数据包源IP,不属于则按2处理;
2:忽略数据包的源IP,使用能与目标主机会话的最佳地址来作为发送ARP的Sender IP,优先选择对外接口的主IP;(loopback不是对外接口)
注:ARP表没有网关对应的条目时,在发送IP数据包前会触发 arp_announce;
Sender MAC跟系统无关,Sender MAC=源MAC,源MAC由物理地址决定,网络攻击除外。
三、具体实现过程
1.配置负载调度器
1)配置虚拟ip地址(vip),采用虚接口的方式(eth0:),为网卡eth0绑定vip地址,以便响应群集访问---vip必须和物理网络在一个子网
#cd /etc/sysconfig/network-scripts/
#cp ifcfg-eth0 ifcfg-eth0:0
#vim ifcfg-eth0:0
DEVICE=eth0:0
ONBOOT=yes
IPADDR=192.168.2.254
NETMASK=255.255.255.0
2)调整/proc响应参数。关闭内核的重定向参数响应
#vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
#sysctl -p
3)配置负载分配策略
#service ipvsadm stop //清除原有策略
#ipvsadm -A -t 192.168.2.254:80 -s rr
#ipvsadm -a -t 192.168.2.254:80 -r 192.168.2.2 -g -w 1
#ipvsadm -a -t 192.168.2.254:80 -r 192.168.2.3 -g -w 1
#service ipvsadm save //保存策略
#service ipvsadm start
2.配置节点服务器
(1)配置虚拟ip地址
#cd /etc/sysconfig/network-scripts/
#cp ifcfg-lo ifcfg-lo:0
#vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.2.254
NETMASK=255.255.255.255 ---必须为32位掩码
ONBOOT=yes
#ifup lo:0
#route add -host 192.168.2.254 dev lo:0 //为本机添加一条路由记录,将访问vip的数据限制在本地,以避免通信混乱
(2)调整/proc响应参数,阻止更新vip的mac地址,避免发生冲突(见附录:3)
#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
4.配置web服务(同上略)
5.再次测试lvs群集
1.在客户机上使用浏览器访问web
http://192.168.1.1,多次刷新
2.[root@centos1 ~]# ipvsadm -ln