使用LVS的dr模型负载均衡两台web服务器。
条件:
只有一个公网地址。172.10.0.9
RIP使用私有地址
如下图所示:
路由器处理数据报文的流程:
用户访问集群服务的数据报文到达路由器后,通过路由决策发现从路由器的 eth1 网卡可以到达:172.10.0.0/16网络,(eth1 网卡配置有地址:172.10.0.1)路由器发现是本地网络的通讯(基于MAC地址通信的),于是路由器向172.10.0.0/16网络发送ARP地址解析广播请求:请求172.10.0.9对应的MAC地址,在172.10.0.0/16网络的所有主机都可以收到ARP地址解析请求。如果该网络的某台主机配置有路由器请求解析的IP地址,就把MAC地址告诉,路由器。路由器就会使用该MAC地址把数据报文发送给该主机。
LVS负载均衡原理:
访问集群服务的请求都要先到达Director,由Director根据调度算法。把访问集群服务的请求均衡到后端的RealServer.
根据上述分析,要做下述一些配置:
1、请求报文流入
因为,我们的 Directory、Realserver1、Realserver2 都配置有VIP地址,所以基于本地通讯的原理
和LVS负载均衡的工作原理考虑:
目的:要控制路由器把用户请求访问集群服务的数据报文只送到Director,
不会把数据报文送到 RealServer.
手段:通过控制无论任何时候路由器的ARP缓存中:VIP对应的MAC地址都是Director的VIP地址所在的
网卡的MAC地址。这样保证路由器一定会把数据报文送到Director
方法:
LVS的dr模型,Director通过修改请求访问集群服务的报文的MAC地址实现把数据报文分发到后端的RealServer.
所以,要保证Director能够基于MAC地址与后端的RealServer进行通信。
方法:Director与RealServer在同一个物理网络。
2、响应报文流出
当RealServer 构建完响应报文之后,直接把报文送给客户端。
因为,客户端请求的是VIP,所以,RealServer 构建的响应的数据报文的源IP是CIP(10.10.0.1)目标IP是VIP(172.10.0.9),客户端才会接收。
所以,在RealServer中通过主机路由指定使用配置在lo:0的VIP对响应的数据报文进行封装。再通过eth0把响应的数据报文送达客户端。
由于RealServer的RIP是私有网络,不能把数据报文送达客户端。所以给RealServer指定一个默认网关,RealServer把不属于本网络的数据报文发给默认网关由默认网关把数据报文送达客户端。
LVS工作流程如下图:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnauYjM1UUW3kUUrhzXNFUQGZ3dZFUenhXYRFDTvl2S39CXEN0LclDNvwFMw00LcJDMzZWe39CXt92Yu8GdjFTNuMzcvw1LcpDc0RHaiojIsJye.jpg)
一、配置路由:
1、配置通往 172.10.0.0/16 网络路由
在路由器配置到达172.10.0.0/16网终的出口
添加一条网络路由
到达 172.10.0.0/16 网络从路由器的 eth1 接口172.10.0.1 出去。
也就是说,172.10.0.1 是与该网络直接相连的(基于MAC地址通讯)。
查看配置网络路由后
2、再添加一条 RIP能够到达10.10.0.1 的路由(Reral Server 通够把响应的数据报文送达客户端的路由)
在路由器配置到达192.168.60.0/24网络的出口
配置前
增加到达192.168.60.0/24网络的路由
配置后
说明:
Gateway 网关是0.0.0.0 这是本地网络,
Destination 为: 0.0.0.0 说明这是默认网关。
路由器的地址配置如下:
3、打开linux主机的转发功能
二、配置Director
1、配置DIR地址
2、配置VIP地址
查看Director地IP地址配置情况
由于后端RealServer构建响应的数据报文没有经过Director,所以,Director无需配置任何路由条目。
查看在路由器的arp 表
当一台主机加入一个网络时,它会向该网络发出ARP通告。所以在路由器使用【arp -e】命令会查看到刚才配置的地址对应的MAC地址。
三、配置 RealServer
通过在后端的每个RealServer配置内核参数的方式,保证路由器的ARP缓冲中只有Director的VIP的MAC对应条目。
ARP有两种工作方式:
这样就实现了,RealServer不能向外通告配置在lo:0的VIP地址,也不会响应对VIP的ARP地址解析请求。
1、配置 real2 server
(1)、配置RIP地址
(2)、配置内核参数,限制网卡对ARP协议的行为。
(3)、配置VIP
(4)、查看resl2的VIP是否向外通告了?
从上面结果可以看出,没有向外通告。
(5)、配置主机路由,使得RealServer构建响应报文使用配置在lo:0 的VIP地址作为源地址封装数据报文。在linux中,数据报文从那块网卡出去,数据报文的源地址就是该网卡的IP地址
配置主机路由
(6)、添置默认路由,让RealServer能够把数据包送到路由器,再由路由器送给客户端。
(7)、测试是不能够PING通网关
(8)、在RealServer的配置
(9)、查看路由器的arp缓存,是否有RealServer的VIP---MAC条目
2、配置 real1 server
从上面看出,real1没有把VIP向通告
添加主机路由,封装响应报文
(6)、添置默认路由,让RealServer能够把数据包送到路由器,再由路由器送给客户端CIP
(7)、测试能够PING通网关
四、启动RealServer的httpd服务
1、启动real2
2、启动real1
五、配置lvs
1、定义集群服务
2、向集群服务添加RealServer
3、查看ipvs规则
六、访问测试
从上面访问结果可以看出,LVS已经做访问集群调度了
一直刷新,查看LVS的状态如下图:
从lvs的调度状态可以看出,LVS的dr模型已经可以完成调度了。
OK!!!