当通过HTTPS访问一个 LVS 集群中Nginx服务时的流程(使用 DR 模式,2个nginx)

当通过 HTTPS 访问一个 LVS 集群中(使用 DR 模式)的具体 Nginx 2 个服务时的流程如下:

  • 客户端向 VIP(Virtual IP)发送请求,请求中携带目标IP和端口号。
  • LVS集群中的director server接收到请求,使用IPVS模块进行负载均衡,将请求转发给其中一个realserver。
  • LVS负责把请求目标的MAC地址改为该 realserver 的 MAC 地址。
  • realserver 接收到请求,处理请求,把响应返回给客户端。响应中的目标地址是客户端 IP,端口号是客户端请求中的源端口号。realserver 不会将响应发送给 LVS 集群。
  • 客户端接收到响应,响应中的源 IP 地址是 VIP,源端口号是请求时的目标端口号。客户端接收到响应后,会再次向 VIP 发送请求,因此这个过程会循环多次,直到请求处理完成。
信息
在 LVS DR 模式下,当客户端发送请求到 LVS 负载均衡器的虚拟 IP 地址时,LVS 会选择一台真实服务器(RS)处理该请求。RS 处理请求,并向 LVS 返回响应。然后 LVS 将响应转发给客户端,客户端认为响应是从 LVS 发送的,但实际上响应是来自真实服务器的。因此,客户端在通信过程中只会看到 LVS 的虚拟 IP 和真实服务器的 IP,而不会知道真实服务器的 MAC 地址,因为 LVS 在响应时会将目的 MAC 地址修改为 LVS 的 MAC 地址。
  • 用户请求LVS到达director,
  • director将请求的报文的目的MAC地址改为后端的realserver的MAC地址,目的IP为VIP(不变),源IP为client IP地址(不变),
  • 然后director将报文发送到realserver,realserver检测到目的地址为自己本地的VIP,如果在同一网段,将请求直接返回给用户,
  • 如果用户跟realserver不在同一个网段,则需要通过网关返回给用户。
信息
注意点: 前端路由将目标地址为VIP报文统统发给Director Server RS跟Director Server必须有一个网卡在同一个物理网络中 所有的请求报文经由Director Server,但响应报文必须不能进过Director Server 所有的real server机器上都有VIP地址

Note over LVS: 在流程中,不涉及到CIP、DIP和iptables的变化 Note over LVS: 为简化流程,未画出MAC地址的变化 这里假设 director server 使用 DR 模式配置 LVS,假设 CIP 是客户端 IP,VIP 是 LVS 的虚拟 IP 地址,DIP 是 realserver 的 IP 地址。

其中,client 表示客户端,LVS 表示 Linux Virtual Server,director_server 表示 LVS 集群中的调度器,real_server1 和 real_server2 分别表示两个真实的 Nginx 服务。在流程中,

  • 客户端向 VIP 发送请求,请求经过 LVS 集群中的 director_server,
  • director_server 选出一个 real_server 处理请求,
  • LVS 将请求转发给选中的 real_server1 或 real_server2,
  • real_server 处理完请求后将响应报文返回给客户端。

具体的过程如下:

  • 客户端发起 HTTPS 请求,请求发送至 LVS;
  • LVS 根据配置文件将请求转发至 Director Server;
  • Director Server 根据调度算法,选择一个 Real Server 处理请求,返回目标 Real Server 的 IP 和端口;
  • LVS 将请求转发至目标 Real Server;
  • Real Server 处理请求,返回响应;
  • LVS 将响应转发至 iptables;
  • iptables 将响应返回给客户端;
  • LVS 根据配置文件将请求转发至另一个 Real Server;
  • Real Server 处理请求,返回响应;
  • LVS 将响应转发至 iptables;
  • iptables 将响应返回给客户端。
信息
在这个过程中,LVS 作为一个负载均衡器,负责将客户端的请求转发给不同的 Real Server 处理。LVS 使用 NAT 模式,会将请求的目标地址改为目标 Real Server 的 IP 地址,并修改目标 MAC 地址。在 LVS 和 Real Server 之间还有一个 Director Server,它根据负载均衡算法选择目标 Real Server,并将目标 Real Server 的 IP 和端口返回给 LVS。iptables 则是防火墙规则设置,用来将请求从 LVS 转发至 Director Server。

随机文章