集成负载平衡器 (ILB - Integrated Load Balancer) 为安装在 SPARC 和基于 x86 的系统上的 Oracle Solaris 提供第 3 层和第 4 层负载平衡功能。
它由 svc:/network/loadbalancer/ilb:default 服务管理。
它拦截来自客户端的传入请求,根据负载平衡规则决定哪个后端服务器应该处理请求,然后将请求转发到选定的服务器。
它还执行可选的运行状况检查并为负载平衡算法提供数据,以验证所选服务器是否可以处理传入请求。
ILB 将指向服务器的工作负载分布在多个服务器上。
以下是 ILB 的主要功能:
- 支持 IPv4 和 IPv6 的无状态直接服务器返回 (DSR) 和网络地址转换 (NAT) 操作模式
- 通过命令行界面 (CLI) 启用 ILB 管理
- 通过健康检查提供服务器监控功能
ILB 启用:
- 客户端 ping 虚拟 IP (VIP) 地址
- 我们可以在不中断服务的情况下从服务器组中添加和删除服务器
- 我们配置会话持久性(粘性)
- 我们执行连接耗尽
- TCP 和 UDP 端口的负载平衡
- 我们为同一服务器组内的虚拟服务指定独立端口
- 我们对一个简单的端口范围进行负载平衡
- 端口范围移动和折叠
ILB 操作模式
ILB 在单腿和双腿拓扑中支持 IPv4 和 IPv6 的以下操作模式:
- 无状态直接服务器返回 (DSR) 拓扑
- 网络地址转换 (NAT) 模式(全 NAT 和半 NAT)拓扑
配置ILB
- 设置后端服务器。
# route add -p default 192.168.1.21
- 在 ILB 中设置服务器组。
# ilbadm create-sg -s servers=192.168.1.50,192.168.1.60 srvgrp1
- 设置名为 hc-srvgrp1 的简单健康检查。
# ilbadm create-rule -e -p -i vip=10.0.2.20,port=5000 -m \ lbalg=rr,type=half-nat,pmask=32 -h hc-name=hc-srvgrp1 \ -o servergroup=srvgrp1 rule1_rr
启用和禁用 ILB
- 启用适当的转发服务:IPv4 或者 IPv6,或者两者。
请注意,此命令在成功时不会产生任何输出。
# ipadm set-prop -p forwarding=on ipv4 # ipadm set-prop -p forwarding=on ipv6
- 开启ILB服务。
# svcadm enable ilb
- 禁用 ILB 服务。
# svcadm disable ilb
- 验证 ILB 服务是启用还是禁用。
# svcs ilb
安装 ILB
ILB 有两部分,内核和用户空间。
内核部分作为 Oracle Solaris 11 安装的一部分自动安装。
要获取 ILB 的用户区部分,我们必须使用“pkg install ilb”命令手动安装 ilb 包。
# pkg install ilb
ILB 操作模式:NAT
ILB 在独立模式下严格使用 NAT 进行负载平衡。
在此模式下,ILB 重写标头信息并处理传入和传出流量。
ILB 在半 NAT 和全 NAT 模式下运行。
在half-NAT和full-NAT模式下,ILB匹配后端服务器对传入请求的响应,并将改变后的IP地址和传输协议端口号替换为原始传入请求的IP地址和传输协议端口号。
ILB 然后将响应转发给客户端。
本质上,两种模式都会重写目标 IP 地址。
但是,全 NAT 还会重写源 IP 地址,使服务器看起来所有连接都来自负载平衡器。
ILB 操作模式:DSR
在 DSR 模式下,ILB 平衡传入后端服务器的请求,但允许从服务器到客户端的返回流量绕过它。
但是,我们也可以将 ILB 设置为用作后端服务器的路由器。
在这种情况下,从后端服务器到客户端的响应将通过运行 ILB 的机器进行路由。
使用无状态 DSR,ILB 不保存处理数据包的任何状态信息,除了基本统计信息。
由于ILB在这种模式下不保存任何状态,性能与普通IP转发性能相当。
这种模式最适合无连接协议。