一、集群高可用说明

在生产环境下,可以调整Rainbond的部署结构,来提高其高可用性。Rainbond高可用性可以从以下几个层面提升:

  • 存储高可用:选择合适的分布式存储系统作为集群的共享存储。

  • 网络高可用:为集群选择合适的SDN网络。

  • 管理节点集群: 部署多个管理节点,实现Rainbond管理功能高可用。

  • 计算节点集群: 分布式部署多个计算节点,实现计算资源高可用。

  • 网关节点集群: 部署多个网关节点,提供多个应用访问入口。

二、机器资源准备

2.1 机器资源要求与规划

操作系统要求
操作系统 版本
CentOS 7.4
单台服务器计算资源配置要求
服务器角色 CPU 内存
管理节点 16核 32G
计算节点 16核 64G
网络节点 8核 16G
存储节点 4核 8G
网关节点 4核 8G
管理节点磁盘分区
挂载点 磁盘大小 说明
/ 100G 系统根分区,本地磁盘,最低要求40G,推荐100G
/var/lib/docker 100G docker镜像存储分区,本地磁盘
/opt/rainbond 50G 存储rainbond程序以及产生的日志、数据,本地磁盘
/cache 50G 存储应用构建使用的缓存,可以使用共享存储在管理节点间共享
计算节点磁盘分区
挂载点 磁盘大小 说明
/ 100G 系统根分区,本地磁盘,最低要求40G,推荐100G
/var/lib/docker 100G docker镜像存储分区,本地磁盘
/grlocaldata 100G 应用本地持久化存储,本地磁盘
存储节点磁盘分区
挂载点 磁盘大小 说明
/ 40G 系统根分区,本地磁盘
/data 500G+ 用于搭建集群共享存储,本地单独挂载磁盘
网络节点网络配置

如对于应用网络有较高要求,请对应提高网络节点网络配置:提高带宽并升级网卡。

2.2 节点规划

根据用户具体要求,可以参见本节规划集群的节点配置。

  • 管理节点:
    管理节点为常规部署项,必然存在于集群之中。部署数量从1开始,按奇数递增(即可以部署 1、3、5···台),推荐3台。

  • 计算节点:
    计算节点为常规部署项,必然存在于集群之中。部署数量2至100台,并在集群资源不足时按需扩容。

  • 网络节点:
    特指在选择midonet作为集群网络解决方案时部署的网络出口节点。部署数量推荐2台,并可以在必要时进行切换保证高可用。

  • 存储节点:
    特指在选择glusterfs作为集群共享存储解决方案时部署的存储节点。部署数量至少2台,并根据节点数量选择复制集数量。

  • 网关节点:
    网关节点特指具备Rainbond应用访问负载均衡组件rbd-gateway的节点,为常规部署项,必然存在于集群之中。默认部署于所有的管理节点,可以根据需要单独部署。部署数量参照管理节点,并配置VIP保证高可用。

三、存储集群选择与安装

准备存储是安装高可用集群的第一步。在这一步将解决集群共享目录 /grdata 的配置。

3.1 支持的存储集群说明

Rainbond需要为管理节点与计算节点的 /grdata 目录配置共享存储。

Rainbond支持多种共享存储解决方案,请根据如下场景进行选择:
  • NAS:
    基于阿里云等IaaS设施部署Rainbond的情况下,可以选择其提供的 NAS 存储服务。

  • GlusterFS:
    基于用户自备的服务器或虚拟机部署Rainbond的情况下,推荐部署 GlusterFS 作为共享存储解决方案。

  • 其它兼容NFS协议的共享存储
    如果用户拥有可使用的兼容NFS协议的共享存储,可以直接使用。使 /grdata 目录在集群管理节点与计算节点间共享即可。

3.2 安装GlusterFS集群

安装GlusterFS集群,请参见 GlusterFS双机复制集群安装

安装完成后,可以获得数据卷 data,接下来将其挂载到对应节点的 /grdata

在所有的管理节点和计算节点执行:

增加挂载记录

copy



# icon/buttons/copy

  1. echo 'server1:/data /grdata glusterfs backupvolfile-server=server2,use-readdirp=no,log-level=WARNING,log-file=/var/log/gluster.log 0 0' >> /etc/fstab

创建挂载点

copy



# icon/buttons/copy

  1. mkdir /grdata

执行挂载

copy



# icon/buttons/copy

  1. mount -a

3.3 为已安装的Rainbond切换存储

场景描述: 用户已经拥有Rainbond集群,现在希望将共享存储切换到新搭建好的GlusterFS

思路引导:Rainbond数据中心初始化默认使用manage01节点作为NFS-server,对所有集群其他成员共享其 /grdata 目录。如果需要切换,则先摘除集群其他节点的共享存储,然后停止manage01的nfs-server服务,最后将数据同步到GlusterFS,所有节点重新挂载。

具体操作如下:

  • 摘除集群其他节点的共享存储
    在集群中除manage01节点外的其他节点执行

copy



# icon/buttons/copy

  1. umount /grdata
  • 停止manage01的nfs-server服务
    在manage01节点执行

copy



# icon/buttons/copy

  1. systemctl stop nfs-server
  2. systemctl disable nfs-server
  • 将数据同步到GlusterFS
    以在server01 server02两个存储节点制作存储卷 data 为例,在manage01节点执行

copy



# icon/buttons/copy

  1. mount -t glusterfs server01:data /mnt

copy



# icon/buttons/copy

  1. cp -arp /grdata/. /mnt
  • 所有节点重新挂载
    所有节点编辑 /etc/fstab 注释或者删除指向原manage01节点的NFS挂载记录,添加如下记录:

copy



# icon/buttons/copy

  1. server1:/data /grdata glusterfs backupvolfile-server=server2,use-readdirp=no,log-level=WARNING,log-file=/var/log/gluster.log 0 0
  • 所有管理计算节点配置存储节点hostname解析
    所有计算节点和管理节点编辑 /etc/hosts, 示例如下:
  1. # storage 节点
  2. 192.168.1.1 server1
  3. 192.168.1.2 server2

在所有节点执行

copy



# icon/buttons/copy

  1. mount -a

3.4 手动校验存储

在所有节点执行

copy



# icon/buttons/copy

  1. mount | grep /grdata

若返回结果已挂载,则校验成功,进行下一步。如不成功,请重新审查本节操作。

四、网络解决方案选择

支持的网络方案与优缺点

DOING 《对比 calico flannel midonet》

五、Rainbond数据中心初始化

5.1 命令

这一步将初始化Rainbond数据中心,即安装首个管理节点。这一步非常重要,会配置访问应用所使用的IP、集群网络解决方案等信息。

copy



# icon/buttons/copy

  1. wget https://pkg.rainbond.com/releases/common/v5.0/grctl

copy



# icon/buttons/copy

  1. chmod +x ./grctl

copy



# icon/buttons/copy

  1. ./grctl init --iip <内网ip> --eip <访问应用使用的公网IP/网关节点IP> \
  2. --network <选择网络解决方案,可选择calico/flannel/midonet,默认calico> \
  3. --vip <指定VIP,具体配置见下节> --install-type offline <此项必须填写>
更多初始化参数,请执行 ./grctl init -h 获取

5.2 手动校验

安装完成后,在当前节点执行:

copy



# icon/buttons/copy

  1. grctl cluster

若返回集群信息正常,则进行下一步;若返回不正常,请重新审查本节操作。

六、管理节点扩容

管理节点的扩容,实现了集群管理功能的高可用。考虑到 etcd 集群选举机制,应至少扩容到3个管理节点。

扩容前,请检查是否配置了共享存储,如果是,请先行挂载 /grdata

6.1 扩容命令

按下列场景选择扩容命令

  • 未做ssh免密操作时,需要知悉节点root密码

copy



# icon/buttons/copy

  1. grctl node add --host manage02 --iip <管理节点ip> -p <root密码> --role manage --install
  • 配置好ssh免密后

copy



# icon/buttons/copy

  1. grctl node add --host manage03 --iip <管理节点ip> --key /root/.ssh/id_rsa.pub --role manage --install
更扩容参数,请执行 grctl node add -h 获取

6.2 调整集群内部服务

集群内部服务由rbd-gateway进行负载均衡,在多管理节点部署时,需要进行端口调整。
  • 调整kube-apiserver
    kube-apiserver默认监听6443端口,为了不与rbd-gateway监听端口冲突,需要将监听端口修改至其它值,下面以6442为例,修改这个端口

在所有管理节点均执行

  1. vi /opt/rainbond/conf/k8s-master.yaml
  2. version: '2.1'
  3. services:
  4. - name: kube-apiserver
  5. disable: false
  6. endpoints:
  7. - name: APISERVER_ENDPOINTS
  8. protocol: http
  9. #修改健康检测端口
  10. port: 6442
  11. health:
  12. name: kube-apiserver
  13. model: http
  14. address: http://127.0.0.1:8181/version
  15. time_interval: 5
  16. max_errors_num: 3
  17. after:
  18. - docker
  19. type: simple
  20. pre_start: docker rm kube-apiserver
  21. start: >-
  22. /usr/bin/docker
  23. run
  24. --privileged
  25. --restart=always
  26. --net=host
  27. --name kube-apiserver
  28. --volume=/opt/rainbond/etc/kubernetes:/opt/rainbond/etc/kubernetes
  29. goodrain.me/kube-apiserver:v1.10.11
  30. #添加一行,指定监听端口 6442
  31. --secure-port=6442
  32. --insecure-bind-address=127.0.0.1
  33. --insecure-port=8181
  34. --advertise-address=10.10.10.221 --bind-address=10.10.10.221
  35. --etcd-servers=${ETCD_ENDPOINTS}
  36. --enable-admission-plugins=ServiceAccount,NamespaceLifecycle,LimitRanger,DefaultStorageClass,DefaultTolerationSeconds,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota
  37. --authorization-mode=Node,RBAC
  38. --runtime-config=rbac.authorization.k8s.io/v1beta1
  39. --enable-bootstrap-token-auth
  40. --token-auth-file=/opt/rainbond/etc/kubernetes/kubecfg/token.csv
  41. --tls-cert-file=/opt/rainbond/etc/kubernetes/ssl/kubernetes.pem
  42. --tls-private-key-file=/opt/rainbond/etc/kubernetes/ssl/kubernetes-key.pem
  43. --client-ca-file=/opt/rainbond/etc/kubernetes/ssl/ca.pem
  44. --service-account-key-file=/opt/rainbond/etc/kubernetes/ssl/ca-key.pem
  45. --logtostderr=true
  46. --service-cluster-ip-range=11.1.0.1/12
  47. stop: docker stop kube-apiserver
  48. restart_policy: always
  49. restart_sec: 10

重启服务

copy



# icon/buttons/copy

  1. systemctl restart node
  2. systemctl restart kube-apiserver

6.3 手动校验

安装完成后,在当前节点执行:

copy



# icon/buttons/copy

  1. grctl cluster

若返回集群列表中显示出扩容节点且服务状态正常,则进行下一步;若返回不正常,请重新审查本节操作。

七、网关节点扩容

如无特殊设置,网关节点将默认安装在所有的管理节点,故而会随管理节点同步扩容。扩容完成后,需要配置VIP实现高可用,该VIP在 Rainbond数据中心初始化 时由 —vip 参数指定。

7.1 vip配置

借助 keepalived 完成VIP配置

  • 安装
    yum install -y keepalived

  • 编辑配置文件

copy



# icon/buttons/copy

  1. ##备份原有配置文件
  2. cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
  3. ##编辑配置文件如下
  4. ##manage01
  5. ! Configuration File for keepalived
  6. global_defs {
  7. router_id LVS_DEVEL
  8. }
  9. vrrp_instance VI_1 {
  10. #角色,当前为主节点
  11. state MASTER
  12. #网卡设备名,通过 ifconfig 命令确定
  13. interface ens6f0
  14. virtual_router_id 51
  15. #优先级,主节点大于备节点
  16. priority 100
  17. advert_int 1
  18. authentication {
  19. auth_type PASS
  20. auth_pass 1111
  21. }
  22. virtual_ipaddress {
  23. <VIP>
  24. }
  25. }
  26. ##其他管理节点
  27. ! Configuration File for keepalived
  28. global_defs {
  29. router_id LVS_DEVEL
  30. }
  31. vrrp_instance VI_1 {
  32. #角色,当前为备节点
  33. state BACKUP
  34. #网卡设备名,通过 ifconfig 命令确定
  35. interface ens6f0
  36. virtual_router_id 51
  37. #优先级,主节点大于备节点
  38. priority 50
  39. advert_int 1
  40. authentication {
  41. auth_type PASS
  42. auth_pass 1111
  43. }
  44. virtual_ipaddress {
  45. <VIP>
  46. }
  47. }
  • 启动服务
    启动服务,设置开机自启动

copy



# icon/buttons/copy

  1. systemctl start keepalived
  2. systemctl enable keepalived
  • 其他需要调整的配置
    在manage01节点执行

copy



# icon/buttons/copy

  1. din rbd-db
  2. mysql
  3. use console;
  4. UPDATE region_info set tcpdomain="<VIP>";

7.2 手动校验

在主节点执行如下命令:

copy



# icon/buttons/copy

  1. systemctl stop keepalived
  2. ip a

如果在关闭服务后,vip成功在某一台备用节点上启动,则进入下一步;如果vip没有成功漂移,请重新审查本节操作。

八、计算节点扩容

扩容前,请检查是否配置了共享存储,如果是,请先行挂载 /grdata

8.1 扩容命令

按下列场景选择扩容命令

  • 未做ssh免密操作时,需要知悉节点root密码

copy



# icon/buttons/copy

  1. grctl node add --host compute01 --iip <计算节点ip> -p <root密码> --role compute --install
  • 配置好ssh免密后

copy



# icon/buttons/copy

  1. grctl node add --host compute01 --iip <计算节点ip> --key /root/.ssh/id_rsa.pub --role compute --install

8.2 手动校验

安装完成后,在当前节点执行:

copy



# icon/buttons/copy

  1. grctl cluster

若返回集群列表中显示扩容节点且状态正常,则表示扩容成功;若返回不正常,请重新审查本节操作。

原文: https://www.rainbond.com/docs/stable/operation-manual/install/HA/install-base-ha.html