-
请求到达:
- 当用户请求到达Director Server(负载均衡服务器)时,数据包会先到达内核空间的PREROUTING链。此时,数据包的源IP为CIP(Client IP),目标IP为VIP(Virtual IP)。
-
PREROUTING链:
- PREROUTING链检查数据包的目标IP是否是本机。如果是,将数据包送至INPUT链。
-
INPUT链:
- 在INPUT链中,LVS判断数据包请求的服务是否是集群服务。如果是,LVS将修改数据包的目标IP为后端真实服务器的IP(RIP),然后将数据包发送至POSTROUTING链。此时,数据包的源IP为CIP,目标IP为RIP。
-
POSTROUTING链:
- POSTROUTING链通过路由,将数据包发送给后端真实服务器(Real Server)。
-
Real Server处理请求:
- Real Server接收到数据包后,发现目标IP是自己的IP,开始构建响应包并返回给Director Server。此时,响应包的源IP为RIP,目标IP为CIP。
-
Director Server转发响应:
- Director Server接收到Real Server返回的响应包时,会将源IP地址修改为自己的VIP地址,然后将响应包发送回客户端。此时,响应包的源IP为VIP,目标IP为CIP。
(a) 当用户请求到达Director Server:
- 数据包进入PREROUTING链。
- 源IP:CIP,目标IP:VIP。
(b) PREROUTING链检查:
- 检查目标IP是否是本机,是则发送至INPUT链。
© INPUT链的LVS处理:
- LVS判断请求服务是否为集群服务,若是,则修改目标IP为真实服务器的RIP。
- 数据包进入POSTROUTING链。
- 源IP:CIP,目标IP:RIP。
(d) POSTROUTING链转发:
- 数据包通过路由发送给Real Server。
(e) Real Server处理并响应:
- Real Server接收到数据包,处理请求并构建响应包返回给Director Server。
- 响应包源IP:RIP,响应包目标IP:CIP。
(f) Director Server转发响应包:
- Director Server修改响应包的源IP为VIP,然后发送给客户端。
- 响应包源IP:VIP,响应包目标IP:CIP。
应用场景:
- 网站流量均衡:LVS可以用于大型网站,将流量分配到不同的Web服务器,提升网站的处理能力和响应速度。
- 数据库读写分离:LVS可以用于数据库集群,将读请求和写请求分配到不同的数据库服务器,优化数据库性能。
举例:
- 电商网站:一个电商网站使用LVS来处理大量用户请求。用户的浏览请求(如查看商品页面)通过LVS分配到不同的Web服务器,确保每个服务器负载均衡,用户可以快速加载页面。
- 在线游戏:在线游戏服务器使用LVS分配玩家的连接请求到不同的游戏服务器,确保每个服务器可以均衡处理玩家的请求,提升游戏体验。