NSX Advanced Load Balancer Controller 会持续与 NSX Advanced Load Balancer SE 安全地交换信息。同样,在集群部署中,多个 NSX Advanced Load Balancer Controller 也会持续安全地相互交换信息。
SE 执行负载均衡等数据平面操作,并向 NSX Advanced Load Balancer Controller 报告相关信息。此信息包括服务器运行状况、客户端连接信息和请求日志。在集群部署中,多个控制器共享用于日志处理和分析的工作负载。
NSX Advanced Load Balancer Controller 有时还可能会向 SE 发送命令,例如,进行配置更改。在正常操作期间,此管理流量可能平均为每个 SE 几 Kb/秒。如果控制器请求完整的客户端日志(大小可能为几 GB),则可能会出现通信高峰。
SE 与控制器的会话设置
NSX Advanced Load Balancer Controller 和 SE 使用 SSH 端口 22 通过其管理 IP 地址进行通信。在部署新的 SE 并将其连接到网络后,它会连接控制器以设置安全管理会话。(SE 和控制器的管理 IP 地址包含在 SE 的元信息中。)
SE 和控制器会交换密钥并通过端口 22 建立加密连接。在完全建立连接后,控制器会将相关配置推送到 SE。控制器从不启动这些连接。这些连接始终由 SE 启动。
NSX Advanced Load Balancer Controller 和 NSX Advanced Load Balancer SE 之间的 RTT(往返时间)值必须小于 70 毫秒。
建立信任
在控制器集群的给定实例以及此集群创建的一组 SE 中创建信任域。
使用 SSH 端口转发确保传输安全,以保护控制器中的所有服务
使用内部用户(aviseuser 和 avictlruser)与密钥身份验证来创建隧道。
身份的公钥保存在控制器和 SE 中这些用户的授权密钥中。
密钥通过 HTTPS 隧道使用签名的 REST API 进行交换。
1 - 准备 SE 映像
为控制器集群生成自签名根 CA。这将充当 NSX Advanced Load Balancer Controller 和 SE 的信任锚。
集群中的每个 NSX Advanced Load Balancer Controller 节点将由根 CA 签名的唯一密钥对进行标识。
生成 SE 映像密钥对,以按需自动创建 SE。
控制器会将根 CA 证书和 SE 映像密钥对打包在 SE 映像中。
2 - 从映像创建 SE
NSX Advanced Load Balancer Controller 将使用相应的云基础架构 API 创建 SE。
3 - SE 初始化
在引导时,SE 将为自身生成唯一的密钥对以创建 SSH 隧道。将使用内部 aviseuser 身份创建 SSH 隧道。
4 - 发布 SE 凭据
在端口
8443
上建立与控制器的 HTTPS 会话。验证 NSX Advanced Load Balancer Controller 是否提供由根 CA 证书签名的证书。使用 REST API 将 SE 特定的公钥发布到控制器。
API 数据内容由 SE 映像凭据签名,该凭据由 NSX Advanced Load Balancer Controller 进行验证。此步骤仅执行一次。
NSX Advanced Load Balancer Controller 将 SE 特定的公钥保存在此 SE 中 aviseuser 的授权密钥中。
此后,SE 可以使用 SE 特定的凭据建立 SSH 隧道。对于
8443
上来自此 SE 的 API 请求,将不再允许使用 SE 映像密钥。
5 - 创建 SSH 隧道
安全通道是用于在集群中的 NSX Advanced Load Balancer Controller 之间以及 NSX Advanced Load Balancer Controller 和 SE 之间进行通信的 SSH 转发和 SSH 反向隧道。
使用 aviseuser 和 SE 特定的密钥对,创建一个使用端口转发的 SSH 隧道,SE 将通过该隧道与 NSX Advanced Load Balancer Controller 进行通信。
从控制器到 SE 的反向通信也使用相同的 SSH 隧道。
控制器使用此隧道来运行升级脚本。为此,将使用内部 aviseuser,该用户具有基于 SSH 密钥的凭据。例如,其中一个 SE 的控制器中可能如下所示:
ssh -i /etc/ssh/id_se -p 5097 [email protected]
在上面的示例中,NSX Advanced Load Balancer Controller 的 127.1.0.1:5097 映射到 SE 上的 localhost:22。