本节介绍如何使用 ilbadm 命令创建、删除和列出负载平衡规则。
ILB 算法用于控制通信流量分布,并为负载分布和服务器选择提供各种特征。
ILB 为两种操作模式提供了以下算法:
循环-在循环算法中,负载平衡器将请求轮流指定给服务器组。在为某服务器指定请求后,该服务器将会移至列表末尾。
src-IP 散列-在源 IP 散列方法中,负载平衡器根据传入请求的源 IP 地址的散列值选择服务器。
src-IP, port 散列-在源 IP、端口散列方法中,负载平衡器根据传入请求的源 IP 地址和源端口的散列值选择服务器。
src-IP, VIP 散列-在源 IP、VIP 散列方法中,负载平衡器根据传入请求的源 IP 地址和目标 IP 地址的散列值选择服务器。
在 ILB 中,虚拟服务通过负载平衡规则表示,并通过以下参数进行定义:
虚拟 IP 地址
传输协议:TCP 或 UDP
端口号(或端口范围)
负载平衡算法
负载平衡模式(DSR、全 NAT 或半 NAT)
包含一组后端服务器的服务器组
可对服务器组中的每个服务器执行的可选服务器运行状况检查
用于运行状况检查的可选端口
用于表示虚拟服务的规则名称
创建一个包含相应的后端服务器的服务器组。有关信息,请参见定义 ILB 中的服务器组和后端服务器。
创建运行状况检查以将服务器运行状况检查与规则关联。有关信息,请参见创建运行状况检查。
确定要与规则关联的 VIP、端口和可选协议。
确定要使用的操作(DSR、半 NAT 或全 NAT)。
确定要使用的负载平衡算法。有关更多信息,请参见ILB 算法。
您可以使用 ilbadm create-rule 命令创建 ILB 规则。有关使用 ilbadm create-rule 命令的更多信息,请参见 ilbadm(1M) 手册页。
其语法如下所示:
# ilbadm create-rule -e -i vip=IPaddr,port=port,protocol=protocol \ -m lbalg=lb-algorithm,type=topology-type,proxy-src=IPaddr1-IPaddr2,\ pmask=value -h hc-name=hc1-o servergroup=sg rule1
此示例创建一个名为 hc1 的运行状况检查,以及一个名为 sg1 的服务器组。该服务器组包含两个服务器,每个服务器具有一系列端口。最后一个命令创建并启用一个名为 rule1 的规则,并将该规则与服务器组和运行状况检查进行关联。此规则实施全 NAT 操作模式。请注意,创建该规则之前,必须先创建服务器组和运行状况检查。
# ilbadm create-healthcheck -h hc-test=tcp,hc-timeout=2,\ hc-count=3,hc-interval=10 hc1 # ilbadm create-servergroup -s server=192.168.0.10:6000-6009,192.168.0.11:7000-7009 sg1 # ilbadm create-rule -e -p -i vip=10.0.0.10,port=5000-5009,\ protocol=tcp -m lbalg=rr,type=NAT,proxy-src=192.168.0.101-192.168.0.104,pmask=24 \ -h hc-name=hc1 -o servergroup=sg1 rule1
创建持久性映射时,对具有匹配的客户机源 IP 地址的虚拟服务的连接、包或这两者的后续请求将转发到同一后端服务器。对于 IPv4,无类域间路由 (Classless Inter-Domain Routing, CIDR) 表示法中的前缀长度是一个介于 0-32 之间的值;对于 IPv6,该前缀长度是一个介于 0-128 之间的值。
创建半 NAT 或全 NAT 规则时,请指定 connection-drain 超时的值。conn-drain 超时的缺省值为 0,这意味着连接排空将持续等待,直到连接正常关闭为止。
要列出规则的配置详细信息,请发出以下命令。如果未指定规则名称,将提供所有规则的信息。
# ilbadm show-rule RULENAME STATUS LBALG TYPE PROTOCOL VIP PORT rule-http E hash-ip-port NAT TCP 10.0.0.1 80 rule-dns D hash-ip NAT UDP 10.0.0.1 53 rule-abc D roundrobin NAT TCP 2001:db8::1 1024 rule-xyz E ip-vip NAT TCP 2001:db8::1 2048-2050
您可以使用 ilbadm delete-rule 命令删除规则。添加 -a 选项可删除所有规则。以下示例将删除名为 rule1 的规则。
# ilbadm delete-rule rule1