LVS概念+使用DR模式负载均衡

1、实验前准备:

快照虚拟机硬盘文件vm1,vm2,vm3

添加虚拟机,导入存在镜像vm1、2、3分别创建虚拟机vm1、2、3

不采用NAT模式,采用网桥模式:

 

同样方式创建vm2、3。

vm1、2、3网卡vnet0、1、2都桥接在br0上

 虚拟机vm2、3上更改hostname和ip

vm2上:

 

vm3上相应的改为server3和172.25.254.3即可。

2、LVS概念:

LVS集成在Linux内核中,有三种模式NAT模式、TUN隧道模式、DR模式。

DR模式要求所有节点都在一个VLAN(即同一个网段,172.25.254.x表示同一网段),适合当前实验;NAT在不同的网段;隧道TUN支持广域网。但是生产环境用的是第四种。

 server1作为负载均衡节点,server2、3作real server。通过server1负载均衡后端的两个real server。

3、DR模式负载均衡实现:

在server1上安装客户端,用户层面的工具ipvsadm;

在server1上添加VIP:ip addr add 172.25.254.100/24 dev eth0,当访问VIP时候实现负载均衡,

 ipvsadm -ln查看调度策略,此策略和防火墙类似,策略直接写在内存

-A 添加tcp服务 -t 向虚拟服务172.25.254.100:80添加 当访问172.25.254.100:80 的时候调度到real server -s调度算法 (默认支持10种调度算法) rr轮调方法

-a 添加real server  -t 向虚拟服务172.25.254.100:80 添加 -r表示real server 172.25.254.2:80和172.25.254.2:80 -g表示直连,

 查看调度策略,当访问TCP 172.25.254.100:80时采用rr均衡调度到172.25.254.2:80或172.25.254.3:80的标准80服务上(生产环境中增大哈希表size为2^20或者2^22,size=4096太小,高并发环境中会丢包)

ipvsadm在防火墙后,数据包经过网卡进来,ipvsadm进行包过滤,发现符合TCP虚拟服务(172.25.254.100:80)的数据包,转发到LVS调度列表,LVS使用内核功能。

real server server2、3上使用apache服务,当访问server2、3时显示自定义的网页发布内容:

安装httpd:

设置开机自启并打开服务,并且在server2网页发布目录/var/www/html/index.html写入server2;curl localhost访问得到server2文字。server3安装httpd,设置开机自启并打开服务,同上,但写入server3在发布目录中。

实验预期:当访问vip172.25.254.100时,调度到254.2或254.3上,其上面利用httpd,显示网页发布内容(访问server2显示server2文字,访问server3显示server3文字)。

 

问题1:在宿主机38上实验调度是否正常,

 

 

访问不正常,但是server1上查看有调度策略,InActConn 为3和4表示调度器正常,但是调度到2、3上出现问题,则问题在2、3上。调度机制在第二层数据链路层通过调度算法直接把数据包转发到real server  2、3上,所以必须要在一个VLAN里面,不能经过路由。

上面是因为2、3上没有VIP,TCP三次握手访问vip172.25.254.100,当数据包到达254.2上时,从二层向上解没发现254.100,直接被Linux内核丢弃。

所以在2、3上添加vip,172.25.254.100/32仅限本机使用,不是标准的172.25.254.100/24。

查看

 

server3上相同操作,

宿主机38上访问正常调度:

问题2:宿主机38上arp -an |grep 100过滤172.25.254.100

过滤到e9:f8为缓存的mac地址(server1的mac地址);arp -d 172.25.254.100删除172.25.254.100缓存;

 

 宿主机38上再次访问172.25.254.100只调度到server2上,不能成功调度,首先server1上查看调度器,发现调度策略InActConn不增加还是3和4,所以判断访问没有经过调度器

 

然后宿主机38上arp -an |grep 100过滤172.25.254.100过滤到13:1d(server2的mac地址)为缓存的mac地址

 上述问题,是因为server1、2、3都含有相同vip172.25.254.100,并且和宿主机38在同一个VLAN下,在宿主机38上curl 172.25.254.100时,可能发生冲突,访问到server1、2、3任意一个vip上。(1)访问到server1上的vip时正常调度,server2、3论调(2)访问到server2上的vip时,只显示server2,不经过调度器server1,调度策略不增加(3)访问到server3上的vip时,只显示server3,不经过调度器server1。

arp -d 172.25.254.100删除缓存后,宿主机38上再次curl 172.25.254.100,会随机缓存server1、2、3上的mac地址,且后面不删除,缓存不变,访问结果不变。mac信息以广播的形式进行选择,谁先响应,先缓存谁。

在real server上添加vip是为了正常完成三次握手,数据包到real server上需要vip,即目标地址都得是254.100。

解决:多种方法,修改linux内核;使用arptables工具

本实验使用arptables工具解决:

在real server2、3上安装arptables

arptables 区别于iptables只是针对arp协议,添加两条策率防止访问到real server2、3的vip上:

直接访问server2、3的vip是被禁止的:此策略加到server2、3的INPUT链(进入server2、3时);OUTPUT链上加策率,不能对外广播

到server2上的目标地址是254.100时直接DROP掉(访问server2的vip254.100时直接丢弃)

源地址是254.100时进行源地址转换,转换ip为172.25.254.2(正常调度到server2,server2使用vip254.100完成三次握手后,转换为254.2)

 server3上相同操作:

查看arp策率:

 

arp策率都是在缓存里,重启的话或者arptables -F删除后就没了,保存起来(保存后重启服务会自动读取策略)

下面依次是 保存、cat查看、删除、删除后显示策略为空、重启服务自动读取策略

 要想arp策略开机生效,把arptables服务设置为开机自启,服务启动后自动读取策略

 

上述策略执行后,宿主机38上删除172.25.254.100缓存,再次访问多次总会访问到server1成功调度,调度策略正常增加

并且ipvsadm -ln查看有调度策略,InActConn增加,调度器正常。

  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值