12.6. VIRTUAL SERVERS

VIRTUAL SERVERS 面板为每个当前定义的虚拟服务器显示信息。每个表格项目都显示了虚拟服务器的状态、服务器名称、给服务器分配的虚拟 IP 地址、虚拟 IP 的子网掩码、服务通信所用的端口号码、所用协议、以及虚拟设备接口。

图 12-5. VIRTUAL SERVERS 面板

VIRTUAL SERVERS 面板中显示的每个服务器都可以在随后的屏幕或子节(subsections)中被配置。

要添加服务,点击 ADD 按钮。要删除服务,选择该服务,点击它旁边的单选按钮,然后点击 DELETE 按钮。

要启用或禁用表中的虚拟服务器,点击它的单选按钮,然后点击 (DE)ACTIVATE 按钮。

添加了虚拟服务器后,你可以配置它。点击它旁边的单选按钮然后点击 EDIT 按钮来显示 VIRTUAL SERVER 子节。

12.6.1. VIRTUAL SERVER 子节

图 12-6所示的 VIRTUAL SERVER 子节面板允许你配置个别虚拟服务器。到相关子节的链接位于页面顶端。在配置任何与这个虚拟服务器相关的子节时,请首先完成这一页并点击 ACCEPT 按钮。

图 12-6. VIRTUAL SERVERS 子节

Name

输入识别虚拟服务器的描述性名称。这个名称不是机器的主机名,因此请尽可能地使用描述性的可识别名称。你甚至可以引用虚拟服务器使用的协议,如 HTTP。

Application port

输入服务程序将会监听的端口号码。因为我们使用 HTTP 服务为例,端口被设为80。

Protocol

在拉下菜单中选择 UDP 或 TCP。万维网服务器通常通过 TCP 协议通信,因此在上面的例子中选择了 TCP。

Virtual IP Address

在这个文本字段中输入虚拟服务器的浮动 IP 地址。

Virtual IP Network Mask

使用拉下菜单为虚拟服务器设置子网掩码。

Firewall Mark

不要在这个字段中输入防火墙标记号码,除非你要捆绑多端口协议或为分开的却又相关的协议创建一个多端口虚拟服务器。以上服务器的 Firewall Mark 是80,这是因为我们把到端口80的 HTTP 连接和到端口443的 HTTPS 连接都捆绑在一起使用防火墙标记80。当和持续性综合使用时,这种技术会确保获取不安全或安全网页的用户都会被选路发送到同一真正主机,从而保留状态。

警告警告
 

在这个字段中输入一个防火墙标记会使 IPVS 认识到带有这个防火墙标记的分组都应该被相同对待,但是你必须在 Piranha 配置工具之外进行进一步配置来实际分配防火墙标记。关于创建多端口服务的说明,请参阅第 11.3 节,关于创建一个高度可用的 FTP 虚拟服务器的说明,请参阅第 11.4 节

Device

输入你想让在 Virtual IP Address 字段中定义的浮动 IP 地址绑定的网络设备的名称。

你应该把公共浮动 IP 地址的别名定为连接公共网络的以太网接口。在这个例子中,公共网络位于 eth0 接口,因此 eth0:1 就应该是设备名称。

Re-entry Time

输入以秒为单位的时间,必须是整数值。这个时间是活跃 LVS 路由器试图把某个失效的真正服务器重新加入群集之前必须经过的时间。

Service Timeout

输入以秒为单位的时间,必须是整数值。这个时间是真正服务器被认为已失效并从群集中删除之前所必须经过的时间。

Quiesce server

当选择了 Quiesce server 单选按钮时,无论何时某个新的真正服务器节点联机,最少连接表都会被重设为零,因此活跃 LVS 路由器就会选路发送所有请求,如同所有真正服务器都被重新加入群集一样。这个选项防止了新服务器在进入群集时对大量连接应接不暇。

Load monitoring tool

LVS 路由器能够使用 rupruptime 来监视各个真正服务器的载量。如果你从拉下菜单中选择了 rup,每个真正服务器就必须运行 rstatd 服务。如果选择了 ruptime,每个真正服务器就必须运行 rwhod 服务。

小心小心
 

载量监视和负载均衡不同。当与加权的调度算式综合使用时,能够导致难以预测的调度行为。还有,如果你要使用载量监视,群集中的真正服务器就必须是 Linux 机器。

Scheduling

从拉下菜单中选择优选的调度算式。默认为 Weighted least-connection。关于调度算式的详情,请参阅第 9.3.1 节

Persistence

如果管理员需要在客户传输事务期间具备到虚拟服务器的持续性连接,在这个文本字段中输入连接超时前所允许经过的不活跃期间的秒数。

重要重要
 

如果你在上面的 Firewall Mark 字段中输入了一个值,你就还应该输入一个持续性值。如果你一起使用防火墙标记和持续性,请确定每个带有防火墙标记的虚拟服务器的持续性值都一致。关于持续性和防火墙的详情,请参阅第 9.5 节

Persistence Network Mask

要限制某个特定子网的持续性,从拉下菜单中选择相应的子网掩码。

注记注记
 

在防火墙标记出现之前,按子网限制的持续性是捆绑连接的粗糙方法。现在最好是一起使用持续性和防火墙标记来达到相同的效果。

警告警告
 

在这个面板上进行了改变后,请记住点击 ACCEPT 按钮来确保改变不会丢失。

12.6.2. REAL SERVER 子节

点击面板顶端的 REAL SERVER 子节链接来显示 EDIT REAL SERVER 子节。它显示了某个特定虚拟服务的物理服务器主机的状态。

图 12-7. REAL SERVER 子节

点击 ADD 按钮来添加一个新服务器。要删除一个现存服务器,选择它旁边的单选按钮,然后点击 DELETE 按钮。点击 EDIT 按钮来载入 EDIT REAL SERVER 面板,如图 12-8所示。

图 12-8. REAL SERVER 配置面板

该面板上有三个项目字段:

Name

一个用于真正服务器的描述性名称。

窍门窍门
 

该名称是机器的主机名,因此请尽可能使用带有描述性和识别性的名称。

Address

真正服务器的 IP 地址。由于相关虚拟服务器的监听端口已经被指定,你不必添加端口号码。

Weight

一个表明和集合内其它主机相比而言的主机能力的整数值。这个值可以是任意的,但是请把它当作和群集中其它真正服务器的比例对待。关于服务器权的详情,请参阅第 9.3.2 节

警告警告
 

在这个面板上进行了改变后,请记住点击 ACCEPT 按钮来确保改变不会丢失。

12.6.3. EDIT MONITORING SCRIPTS 子节

点击面板顶端的 MONITORING SCRIPTS 链接。EDIT MONITORING SCRIPTS 子节允许管理员指定 send/expect 字符串序列来校验每个真正服务器上的虚拟服务器都能正常功能。在这里,管理员还可以指定定制脚本来检查需要动态改变数据的服务。

图 12-9. EDIT MONITORING SCRIPTS 子节

Sending Program

关于更高级的服务校验信息,你需要使用这个字段来指定到服务检查脚本的路径。该功能对于需要动态改变数据的服务(如 HTTPS 或 SSL)特别有用。

要使用该功能,你必须编写一个而能够返回文本答复的脚本,把它设置为可执行,然后在 Sending Program 字段中键入该脚本的路径。

窍门窍门
 

要确保真正服务器集合中的每个服务器都被检查了,请在 Sending Program 字段的脚本路径后使用特殊的 %h 符号。该符号会在脚本被 nanny 守护进程调用时被每个真正服务器的 IP 地址所替换。

在编写外部服务检查脚本时,你可以参照以下脚本范例:

#!/bin/sh

TEST=`dig -t soa example.com @$1 | grep -c dns.example.com

if [ $TEST != "1" ]; then
	echo "OK
else
	echo "FAIL"
fi

注记注记
 

如果 Sending Program 字段中输入了一个外部程序,那么 Send 字段就会被忽略。

Send

在这个字段中输入 nanny 守护进程发送给每个真正服务器的字符串。按照默认设置,该字段会为 HTTP 填充。你可以根据需要来改变这个值。如果你把这个字段留为空白,nanny 守护进程会试图打开端口,若成功则假定该服务正在运行。

这个字段中只允许一个 send 序列,而且它只能包含可打印的、ASCII 字符以及下列转义序列:

  • \n 代表新行。

  • \r 代表换行。

  • \t 代表制表符。

  • \ 转义跟随其后的字符。

Expect

输入服务器正常运行时应该返回的文本答复。如果你自行编写了发送程序,输入发送成功后的答复。

窍门窍门
 

要判定对某个给定服务要发送什么,你可以打开一个到真正服务器端口的 telnet 连接,看一看返回了什么。例如,FTP 在连接时返回了 220,因此你可以在 Send 字段中输入 quit,在 Expect 字段中输入 220

警告警告
 

在这个面板上进行了改变后,请记住点击 ACCEPT 按钮来确保改变不会丢失。

使用 Piranha 配置工具配置了虚拟服务器后,你必须把指定的配置文件复制到备份 LVS 路由器上。详情请参阅第 12.7 节