Soft Data Center LB Solution(Alpha)
通过在集群外部创建高可用负载均衡器,部署纯软件数据中心负载均衡器(LB),为多个 ALB 提供负载均衡能力,确保业务稳定运行。支持仅配置 IPv4、仅配置 IPv6,或同时配置 IPv4 和 IPv6 双栈。
前提条件
-
准备两个或更多主机节点作为 LB。建议在 LB 节点上安装 Ubuntu 22.04 操作系统,以缩短 LB 向异常后端节点转发流量所需的时间。
-
在外部 LB 的所有主机节点上预安装以下软件(本章以两个外部 LB 主机节点为例):
-
ipvsadm -
container-runtime such as containerd
-
-
确保每个主机的
container-runtime在启动时启动。 -
确保每个主机节点的时钟已同步。
-
准备用于启动外部 LB 服务的 Keepalived 镜像;平台已包含此镜像。镜像地址格式如下:
<image repository address>/tkestack/keepalived:<version suffix>。不同版本的版本后缀可能略有差异。可按以下方式获取镜像仓库地址和版本后缀。本文以build-harbor.alauda.cn/tkestack/keepalived:v3.16.0-beta.3.g598ce923为例。-
在 global 集群中执行
kubectl get prdb base -o json | jq .spec.registry.address,获取镜像仓库地址参数。 -
在安装包解压后的目录中执行
cat ./installer/res/artifacts.json |grep keepalived -C 2|grep tag|awk '{print $2}'|awk -F '"' '{print $2}',获取版本后缀。
-
操作步骤
注意:以下操作必须在每个外部 LB 主机节点上分别执行一次,并且主机节点的 hostname 不能重复。
-
将以下配置信息添加到文件
/etc/modules-load.d/alive.kmod.conf中。 -
将以下配置信息添加到文件
/etc/sysctl.d/alive.sysctl.conf中。 -
使用
reboot命令重启。 -
创建 Keepalived 配置文件的文件夹。
-
根据以下文件中的注释修改配置项,并将其保存到
/etc/keepalived/文件夹中,文件命名为alive.yaml。 -
在业务集群中执行以下命令,检查配置文件中的证书到期日期,确保该证书仍然有效。证书到期后,LB 功能将不可用,需要联系平台管理员更新证书。
-
将 Kubernetes 集群中三个控制平面节点上的
/etc/kubernetes/admin.conf文件复制到外部 LB 节点的/etc/keepalived/kubecfg文件夹中,并为文件添加索引命名,例如kubecfg01.conf,然后将这三个文件中的apiserver节点地址修改为 Kubernetes 集群中节点的实际地址。注意:平台证书更新后,需要再次执行此步骤,覆盖原有文件。
-
检查证书的有效性。
-
将业务集群控制平面节点上的
/usr/bin/kubectl复制到 LB 节点。 -
执行
chmod +x /usr/bin/kubectl,授予执行权限。 -
执行以下命令,确认证书有效性。
如果返回以下结果,则表示证书有效。
-
-
将 Keepalived 镜像上传到外部 LB 节点,并使用 nerdctl 运行 Keepalived。
-
在访问
keepalived的节点上运行以下命令:sysctl -w net.ipv4.conf.all.arp_accept=1。
验证
-
运行命令
ipvsadm -ln查看 IPVS 规则,你将看到适用于业务集群 ALB 的 IPv4 和 IPv6 规则。 -
关闭 VIP 所在的 LB 节点,并测试 IPv4 和 IPv6 的 VIP 是否都能成功迁移到另一个节点,通常在 20 秒内完成。
-
在非 LB 节点上使用
curl命令,测试与 VIP 的通信是否正常。
商标声明
NGINX® 是 F5, Inc. 在美国及其他国家/地区的注册商标。
Alauda 是一家独立供应商。本产品与 F5, Inc. 无关联,也未获得其认可或赞助。所有商标均为其各自所有者的财产,在此仅用于识别目的。