ILB 完全是为了实现负载平衡功能才使用独立模式的 NAT。在此模式下,ILB 会重写头信息并处理传入与传出通信流量。ILB 可在半 NAT 模式和全 NAT 模式下运行。但是,全 NAT 还会重写源 IP 地址,使服务器认为所有连接均源自负载平衡器。NAT 确实提供了 TCP 连接跟踪(意味着它是有状态的)。NAT 模式可提供额外的安全性,最适合超文本传输协议 (Hypertext Transfer Protocol, HTTP) 或安全套接字层 (Secure Sockets Layer, SSL) 通信。
NAT 模式的一般实现方式如下图中所示。
图 5-2 网络地址转换拓扑
在这种情况下,对 VIP 的所有请求均通过 ILB 并转发到后端服务器。后端服务器的所有回复均通过 ILB 以进行网络地址转换。
注意 - ILB 中实现的 NAT 代码路径不同于 Oracle Solaris 的 IP 过滤器功能中实现的代码路径。请勿同时使用这两种代码路径。 |
在 ILB 操作的半 NAT 模式下,ILB 仅将目标 IP 地址重新写入包头中。如果您使用的是半 NAT 实现方式,则无法从服务器所在的子网连接到该服务的 VIP 地址。下表显示了流经客户机和 ILB 之间以及 ILB 和后端服务器之间的包的 IP 地址。
|
如果您将客户机系统连接到服务器所在的网络,预定的服务器将直接响应客户机,不会发生表中的第四步。因此,服务器对客户机响应的源 IP 地址无效。当客户机向负载平衡器发送连接请求时,预定的服务器会进行响应。自此以后,客户机的 IP 栈将正确丢弃所有响应。在这种情况下,请求流和响应流会按下表所示继续进行。
|
在 ILB 操作的全 NAT 实现中,将会重新写入源 IP 地址和目标 IP 地址,以确保通信在两个方向通过负载平衡器。通过全 NAT 模式,可以从服务器所在的子网中连接到 VIP。
下表描述了使用全 NAT 模式时流经客户机和 ILB 之间以及 ILB 和后端服务器之间的包的 IP 地址。服务器中不需要使用 ILB 框的特殊缺省路由。请注意,全 NAT 模式需要管理员留出一个 IP 地址或一系列 IP 地址供 ILB 用作源地址,以便与后端服务器进行通信。假定使用的地址属于子网 C。在这种情况下,ILB 充当代理。
|