高可用集群安装说明
部署高可用集群关键在于规划,例如:整个集群规划使用多少台服务器,每台服务器的角色是什么,服务器资源、磁盘如何规划等。
部署架构
如图所示:采用了最少的节点数量(3节点)保证高可用,K8s 采用多 Master + 多 ETCD 集群保障高可用,Rainbond 采用外部负载均衡 + 多网关节点 + 分布式 文件存储 + MySQL高可用集群保障高可用。
高可用 Kubernetes 集群
安装 Kubernetes 集群 至少需要部署 3 个节点的集群,3 个节点的属性都可进行复用,例如:3 管理节点、3 计算节点、3 ETCD 节点。
如需自定义基于主机安装的 Kubernetes 集群配置,参阅集群配置。
高可用 Rainbond 集群
部署高可用 Rainbond 集群关键在于:①高可用 Kubernetes 集群;②Rainbond 集群的基础配置和高级配置可选项都使用外置的高可用服务。
下述将对 Rainbond 所需要的外部服务分别进行说明,包括这些服务的高可用部署。
负载均衡
Rainbond 集群网关需要部署在高可用的负载均衡器上,保障集群网关的高可用性。
使用已有的负载均衡器
若已有高可用的负载均衡器,可直接使用,需满足以下条件:
- 代理到 Rainbond 所有网关节点
- 开放 80,443,6060,7070,8443 端口
部署 Keepalived
若还没有负载均衡服务则可通过在网关节点上 部署 Keepalived 服务来确保网关的高可用性,通过该种方式网关节点为主备关系。
网关节点
指定 Rainbond 网关服务部署并运行在哪个节点上,每个节点上的网关服务都可独立进行工作,即使某一个网关节点挂掉,其他网关节点依旧能正常工作。
构建节点
指定 Rainbond 构建服务部署并运行在哪个节点上,构建节点的数量越多代表能同时并行构建的任务也就越多。
构建比较消耗磁盘,建议将构建服务运行在有 SSD 磁盘的节点上。
存储
Rainbond 需要使用文件存储,存储平台以及平台上应用数据,默认提供内置 NFS
存储,以 Pod 方式运行在rbd-system
命名空间下,会随机绑定一个节点并将元数 据存储在该节点的/opt/rainbond/data/nfs
目录下。
若已有高可用文件存储则可直接使用,需满足以下条件:
- 支持 NFS v3,v4 协议
- 支持文件锁 原因详见 如何保证 NFS 文件锁的一致性?
- 支持常见的 NFS 参数,务必开启 no_root_squash
如还未安装文件存储,可以参阅 NFS Server 单机部署、NFS 主从同步部署,安装后通过 在 Kubernetes 中部署 NFS Client Provisioner 对接 NFS Server 到 Kubernetes 中,在 Rainbond 集群创建时只需要填写 StorageClassName nfs-client
即可。
也可选择 部署 Rook-Ceph。
ETCD
Rainbond 集群需要使用 ETCD 用来存储集群的元数据信息,如集群状态和网络配置等。默认提供内置 ETCD
,以 Pod 方式运行在rbd-system
命名空间下,会随机绑定一个节点并将元数据存储该节点的/opt/rainbond/data/etcdxxx
目录下。
对于高可用集群来说无需新建 ETCD,复用 Kubernetes 的 ETCD 即可。
ETCD 对磁盘性能要求较高,强烈建议存储使用SSD磁盘。
基于主机安装的 Kubernetes 集群,ETCD证书文件位于 /etc/kubernetes/ssl
目录下,分别为 kube-ca.pem
kube-node.pen
kube-node-key.pem
,使用 Kubectl 命令创建 Secret,在安装时指定密钥名称 rbd-etcd-secret
。
- CA证书:/etc/kubernetes/ssl/kube-ca.pem
- 客户端证书:/etc/etcd/ssl/kube-node.pem
- 客户端密钥:/etc/etcd/ssl/kube-node-key.pem
kubectl create secret generic rbd-etcd-secret -n rbd-system \
--from-file=ca-file=/etc/kubernetes/ssl/kube-ca.pem \
--from-file=cert-file=/etc/kubernetes/ssl/kube-node.pem \
--from-file=key-file=/etc/kubernetes/ssl/kube-node-key.pem
镜像仓库
指定 Rainbond 底层镜像仓库,平台上的所有组件镜像都会从这个仓库拉取、推送。默认提供内置镜像仓库,以 Pod 方式运行在rbd-system
命名空间下,默认元数据通过 rbd-hub
pvc 进行存储。
如已有镜像仓库可直接使用,需满足以下条件:
- 建议使用 https 协议以及可信任证书,如使用 http 则需要修改 Docker、Containerd 相关的配置。
MySQL
Rainbond 需要使用 MySQL 存储控制台及集群端数据。默认提供内置的 MySQL 数据库,以 Pod 方式运行在rbd-system
命名空间下,会随机绑定一个节点并将元数据存储该节点的/opt/rainbond/data/dbxxx
目录下。
若已有高可用数据库则可直接使用,需满足以下条件:
- 数据库版本为MySQL 5.7,8.0;
- 提前创建 console region 库;
- 数据库字符编码为 utf8mb4;
- 推荐数据库与 Rainbond 集群网络在同一内网范围内。
如还未安装数据库,请参阅文档安装 在 Docker 中部署 MySQL 主从集群、在 Centos 7 中部署 MySQL 主从集群
控制台高可用
基于主机安装的控制台,是由 Docker 启动,无法实现高可用部署,故需要将 Docker 启动的控制台迁移到集群中,参阅文档控制台高可用