红帽企业 Linux LVS 群集使用一个叫做活跃路由器(active router)的 Linux 机器来把来自互联网的请求发送给一组服务器。要做到它,LVS 群集包含两类基本的机器 — LVS 路由器(一个是活跃的,一个是备份的)和一组提供关键服务的真正服务器。
活跃路由器在群集中扮演两个角色:
平衡真正服务器的负载。
检查每个真正服务器上的服务的完好性。
备份路由器的工作是监视活跃路由器,并在失效事件发生时接替它的职责。
图 9-1显示了一个简单的包括两层的 LVS 群集。第一层上是两个 LVS 路由器 — 一个是活跃的,一个是备份的。每个 LVS 路由器有两个网络接口,一个是到互联网的接口,一个是到专用网络的接口。在这个例子中,活跃的路由器使用网络地址转换(Network Address Translation)或 NAT 来把互联网上的交通重导向到第二层上的一系列真正服务器上,这些真正服务器提供必要的服务。因此,这个例子中的真正服务器连接在一个专用网络上,并通过活跃 LVS 路由器把所有公共交通传递回去。对于外界而言,服务器群集似乎是一个实体。
到达 LVS 群集的服务请求使用虚拟 IP(virtual IP)或 VIP 的地址。这是网站管理员将其关联到完整域名的可公开选路的地址,如 www.example.com。它被分派给一个或多个虚拟服务器(virtual server)[1]。注意,VIP 地址在失效转移时会从一个 LVS 路由器上迁移到另一个 LVS 路由器上,从而保持该 IP 地址,又称为浮动 IP 地址(floating IP addresses)。
VIP 地址可以是连接 LVS 路由器和互联网的同一设备的别名。例如,如果 eth0 被连接到互联网上,那么多个虚拟服务器可以是 eth0:1 的别名。此外,每个虚拟服务器可以按照服务被关联到一个单独的设备上。例如,HTTP 交通可以被 eth0:1 处理,FTP 交通可以被 eth0:2 处理。
在一时内只能有一个活跃的 LVS 路由器。活跃路由器的角色是把来自虚拟 IP 地址的服务请求重导向到真正服务器。这种重导向是基于八种负载均衡算式中的一种。这些算式在第 9.3 节中被进一步描述。
活跃的路由器还通过简单的发送/期待脚本(send/expect scripts)来动态地监视真正服务器上的特定服务的总体健康状况。要帮助检测需要动态数据的服务的健康状况,如 HTTPS 或 SSL,管理员还可以调用外部的可执行文件。如果某个真正服务器上的服务出错了,活跃路由器在那个服务器恢复正常前会停止向它发送作业。
备份路由器扮演备用系统的角色。LVS 路由器定期通过主外部公共接口来交换心跳消息,在失效转移的情况下,则通过专有接口来交换。如果备份节点在期待的间隔内没有接到心跳消息,它就会发起失效转移行动,并接替活跃路由器的角色。在失效转移过程中,备份路由器使用一种叫做 ARP spoofing(ARP假冒) — 备份 LVS 路由器宣称自己是发送给失效节点的 IP 分组的目的地 — 的技术来接管由失效的路由器提供服务的 VIP 地址。当失效的节点恢复为活跃服务,备份节点就会回到它原来的热备份角色。
用在图 9-1的这种简单的两层配置对提供改变不频繁的数据 — 如静态网页 — 的群集来说是最佳选择,因为真正服务器之间并不自动同步数据。
[1] | 虚拟服务器是监听指定虚拟 IP 的服务。关于使用 Piranha 配置工具来配置虚拟服务器的详情,请参阅第 12.6 节。 |