lvs-dr模式

一,数据包流向:

 

lvs-dr模式_第1张图片

        1,cilent向目标vip发出请求,dir接收,此时ip报头数据帧头信息。

        2,dir根据负载均衡算法给rs(rip),将rip所在网卡的mac地址作为目标的mac地址,发送到局域网里,此时ip报头数据帧信息。

        3,rip在局域网中收到这个帧,拆开后发现目标(vip)与本机匹配,就会处理这个报文,随后重新封装报文并发送到局域网,此时ip报头及数据帧信息。

二,arp问题解决

        因为web服务器与负载均衡器用一个vip,因为数据转发要进行arp广播,广播的时候会因为vip会使得网络瘫痪。

        1,ari_ignore-1

                防止网关路由器发送ARP广播时调度器和节点都会进行响应,这里会导致ARP缓存表混乱,不对非本地物理网卡的arp请求进行响应,因为VIP承载lo:0.

        2,arp_announce-2

                系统不使用响应数据的源IP地址(VIP)来作为本机进行的arp请求报文的源P地址,而是用发送报文的物理网卡的IP地址做为ARP请求报文的源P地址,这样可以防止网关路由器接收到的源P地址为VIP的arp请求报文后的有去更新ARP缓存表,会导致外网再去发送请求时,数据包到时候到达不了调度器。

三,特性

        优点:负载均衡器只负责将请求的包分给物理服务器,而物理服务器将应答包直接发送给用户。所以负载均衡器能处理很巨大的请求量,这种方式,可以让一台负载均衡器为超过一百台物理服务器服务,负载均衡器不再是系统的瓶颈,使用lvs-dr模式,如果你的负载均衡器拥有100M全双工的话,就可以让vs达到到1G甚至更高的吞吐量。

        缺点:所有的调度器和节点服务器在同一个广播域,还不支持异地容灾。

四,服务部署:

lvs-dr模式_第2张图片

 DR服务器:192.168.10.18

Web 服务器1:192.168.10.16       
Web 服务器2:192.168.10.17

vip:192.168.10.180

1,dr服务器

systemctl stop firewalld.service
setenforce 0
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm

配置vip
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0	
vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.10.180
NETMASK=255.255.255.255

启动网卡
ifup ens33:0
ifconfig ens33:0

调整proc参数
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.10.180:80 -s rr
ipvsadm -a -t 192.168.10.180:80 -r 192.168.10.16:80 -g	
ipvsadm -a -t 192.168.10.180:80 -r 192.168.10.17:80 -g
ipvsadm

查看节点状态
ipvsadm -ln

2,web服务器(两个都是如下操作)

配置vip
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0		
vim ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.10.180
NETMASK=255.255.255.255	

启动io接口
ifup lo:0
ifconfig lo:0
route add -host 192.168.10.180 dev lo:0

添加路由
vim /etc/rc.local
/sbin/route add -host 192.168.10.180 dev lo:0

调整内核的arp响应参数
vim /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
sysctl -p

3,测试:访问vip地址即可

你可能感兴趣的:(lvs)