跳过导航链接 | |
退出打印视图 | |
管理 Oracle Solaris 11.1 网络性能 Oracle Solaris 11.1 Information Library (简体中文) |
ILB 提供了以下可选类型的服务器运行状况检查,供您进行选择:
内置的 ping 探测器
内置的 TCP 探测器
内置的 UDP 探测器
用户提供的可作为运行状况检查运行的定制测试
缺省情况下,ILB 不会执行任何运行状况检查。您可以在创建负载平衡规则时为每个服务器组指定运行状况检查。对于每个负载平衡规则,只能配置一个运行状况检查。只要启用了虚拟服务,与启用的虚拟服务关联的服务器组的运行状况检查就会自动启动并定期重复执行。禁用虚拟服务后,运行状况检查将立即停止。重新启用虚拟服务后,先前的运行状况检查状态将不会保留。
如果您指定了 TCP、UDP 或定制测试探测器来执行运行状况检查,则 ILB 缺省情况下会先发送 ping 探测器以确定服务器是否可以访问,然后再向该服务器发送指定的 TCP、UDP 或定制测试探测器。ping 探测器是一种监视服务器运行状况的方法。如果 ping 探测器失败,则会禁用对应的服务器,并且运行状况检查状态为 unreachable。如果 ping 探测器成功,但 TCP、UDP 或定制测试探测器失败,则会禁用服务器,并且运行状况检查状态为 dead。
注 -
可以禁用缺省的 ping 探测器。
不能禁用 UDP 探测器的缺省 ping 探测器。因此,对于 UDP 运行状况检查,ping 探测器始终是缺省探测器。
以下示例创建了两个运行状况检查对象 hc1 和 hc-myscript。第一个运行状况检查使用内置的 TCP 探测器。第二个运行状况检查使用定制测试 /var/tmp/my-script。
# ilbadm create-healthcheck \ -h hc-timeout=3,hc-count=2,hc-interval=8,hc-test=tcp hc1 # ilbadm create-healthcheck -h hc-timeout=3, \ hc-count=2,hc-interval=8,hc-test=/var/tmp/my-script hc-myscript
每个参数的说明如下:
指定将运行状况检查视为失败(如果未完成)时的超时。
指定尝试执行 hc-test 运行状况检查的次数。
指定连续的运行状况检查之间的间隔。为避免同步,将会随机生成介于 0.5 * hc-interval 和 1.5 * hc-interval 之间的实际间隔。
指定运行状况检查的类型。
用户提供的定制测试必须符合以下条件:
测试可以是二进制文件或脚本。
测试可以位于系统中的任何位置;当您使用 create-healthcheck 子命令时,必须指定绝对路径。
在 create-rule 子命令中将测试(例如,/var/tmp/my-script)指定为运行状况检查规范的一部分时,ilbd 守护进程将派生一个进程并执行测试,如下所示:
/var/tmp/my-script $1 $2 $3 $4 $5
每个参数的说明如下:
VIP(数值 IPv4 或 IPv6 地址)
服务器 IP(数值 IPv4 或 IPv6 地址)
协议(字符串形式的 UDP、TCP)
数字端口范围(用户指定的 hc-port 值)
测试在返回失败之前必须等待的最长时间(秒)。如果测试运行超出了指定的时间,则可能会停止测试并认为测试失败。该值是用户定义的并在 hc-timeout 中指定。
用户提供的测试 my-script 可能会也可能不会使用所有参数,但必须返回以下各项之一:
以微秒为单位的往返时间 (round-trip time, RTT)
0(如果测试不计算 RTT)
-1(失败)
缺省情况下,运行状况检查测试使用以下特权运行:PRIV_PROC_FORK、RIV_PROC_EXEC 和 RIV_NET_ICMPACCESS。
如果需要更广泛的特权集,则必须在测试中实现 setuid。有关特权的更多详细信息,请参阅 privileges(5) 手册页。
您可以使用以下 ilbadm list-healthcheck 子命令获取有关已配置的运行状况检查的详细信息:
# ilbadm list-healthcheck
以下输出样例列出了所配置的两个运行状况检查。
|
您可以使用 ilbadm list-hc-result 子命令获取运行状况检查结果。如果未指定规则或运行状况检查,该子命令将列出所有运行状况检查。
以下示例显示了与名为 rule1 的规则关联的运行状况检查结果:
# ilbadm show-hc-result rule1
|
表中的 LAST 列显示完成服务器运行状况检查的时间。NEXT 列显示完成下一个服务器运行状况检查的时间。
以下示例删除一个名为 hc1 的运行状况检查:
# ilbadm delete-healthcheck hc1