一、理论概念
DR模式是将ARP请求通过director将报文源和目标MAC地址,发送给RS(real server),RS将响应报文直接发送给client。LVS是
Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,
有两个模块
•ipvs : 嵌入到linux的内核
•ipvsadm:管理应用程序,需要安装
二、环境搭建
1.准备了三台虚拟机。
LVS服务器(DS) --eleven-2 | DIP:192.168.40.33 | VIP:192.168.40.100 |
真实后端服务器(RS)--eleven-3 | RIP:192.168.40.34 | VIP:192.168.40.100 |
真实后端服务器(RS)--eleven-4 | RIP:192.168.40.35 | VIP:192.168.40.100 |
2.LVS服务器配置(eleven-2),依次执行。
1.安装ipvsadm
# 验证,确保内核加载了lvs模块
lsmod |grep ip_vs
# 安装用户管理工具
yum install -y ipvsadm
2.配置VIP
所有请求报文会发往LVS服务器(DS),然后DS根据指定算法分发到后端服务器(RS)上,因此DS必须配置VIP地址,VIP是与公网client的通信地址,这样DS才能接受到请求报文进行分发。
# 在LVS服务器上添加一个地址为VIP的虚拟网卡eth0:0
命令:ifconfig eth0:0 192.168.40.100 netmask 255.255.255.0
3.配置允许数据包转发,因为此时的lvs服务器充当着中间件的角色,接收的请求都会转发至RS
#配置/proc/sys/net/ipv4/ip_forward,该文件内容为0,表示禁止数据包转发,1表示允许,将其修改为1
echo “1” > /proc/sys/net/ipv4/ip_forward
3.后端服务器配置
1.配置RS的响应级别和通告级别。(每台RS都要配置)
DR模式只是针对源和目标MAC地址做出修改,源和目标IP还是不变;当请求报文由LVS服务器处理后发送到后端服务器RS上,RS拆封报文时会发现目标MAC是自己的MAC地址,但是目标IP是VIP,与本地IP地址不符合,那么RS就会认为不是发给自己的报文,所以此时需要在RS上配置VIP,这样RS就可以接受目标地址为VIP的请求报文了。
如果将VIP设置在RS的网卡上,假设有多台RS并且每台RS上都配置了VIP,在这个网络中发出VIP的ARP请求,就有多个RS响应,这样肯定是不可以;因此就把VIP配置到回环地址lo网卡上,然后让lo网卡忽略所有ARP请求,eth0网卡正常响应ARP请求,这样网络中就不会收到RS关于VIP的响应;还有一个问题就是当本地网卡响应ARP请求时,也有可能通过lo网卡回应,然后把VIP作为ARP请求的源IP通告出去,那么就必须禁止VIP作为ARP请求的源IP,这个问题可以通过修改arp_announce参数解决。
由于客户端发起的请求报文源IP为CIP,目标IP为VIP;所以客户端收到的响应报文源IP必须为VIP,目标IP必须为CIP,因此在RS发送的响应报文必须由VIP的lo网卡发出,这就需要在RS上指定一条路由,目标IP为VIP的数据包使用lo网卡发出,然后经由eth0转发到网关再到公网客户端。
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
2.配置RS的VIP(每一台RS都配),注意要先完成上一步骤,避免配置好了RS的vip后被通告出去
# 添加IP地址为VIP的虚拟网卡lo:8
ifconfig lo:8 192.168.40.100 netmask 255.255.255.255
4.配置负载ipvs规则
1.管理集群服务
ipvsadm -[A/E/D] -[t|u|f] IP:port -s 规则
-A:新增
-E:修改
-D:删除
-C:清空ipvs规则
-S:保存规则至某路径,供下次用时加载。
# ipvsadm -S > /path/to/somefile
-R:加载保存的规则
# ipvsadm -R < /path/form/somefile
-t:TCP协议的集群
-u:UDP协议的集群
-f:防火墙标志
-s: 生命负载分发的算法
rr:轮询算法
2.管理集群服务中的RS
规则:ipvsadm -[a/d/e] -[t/u] LVS服务IP:端口 -r RS的IP:端口 -g
-a:新增RS
-d:删除RS
-e:修改RS
-r:配置RS
-g:配置权重,默认为1
3.实操:
添加集群服务
ipvsadm -A -t 192.168.40.100:80 -s rr
添加负载的RS服务
ipvsadm -a -t 192.168.40.100:80 -r 192.168.40.34 –g
ipvsadm -a -t 192.168.40.100:80 -r 192.168.40.35 –g
4.测试
两台RS上安装httpd,新建index文件
yum install httpd -y
进入到此文件夹
/var/www/html
新建文件index.html
vi index.html
输入内容
from 34:80/35:80
重启httpd服务
service httpd start
客户端浏览器请求测试
http://192.168.40.100:80