溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Rainbond集群安裝方法和運維原理是什么

發(fā)布時間:2021-07-30 16:46:47 來源:億速云 閱讀:143 作者:chen 欄目:云計算

本篇內(nèi)容主要講解“Rainbond集群安裝方法和運維原理是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Rainbond集群安裝方法和運維原理是什么”吧!

本文將解讀Rainbond集群的安裝和運維的原理,使用戶基本了解Rainbond的安裝機(jī)制和運維重點,便于用戶搭建大型Rainbond集群。

1.Rainbond集群節(jié)點概述

1.1 節(jié)點分類

屬性類型說明
manage管理節(jié)點集結(jié)平臺自身組件,提供應(yīng)用構(gòu)建、調(diào)度、管理等功能,提供數(shù)據(jù)中心基礎(chǔ)服務(wù)與API接口,充當(dāng)控制集群的角色。
gateway網(wǎng)關(guān)節(jié)點集群內(nèi)應(yīng)用被外網(wǎng)訪問的流量入口和負(fù)載均衡器,提供HTTP, HTTPs路由, TCP/UDP服務(wù), 負(fù)載均衡器, 高級路由(A/B測試, 灰度發(fā)布)等功能
compute計算節(jié)點提供應(yīng)用運行的計算資源,N個計算節(jié)點組成計算資源池供給管理節(jié)點靈活調(diào)度。

1.2 節(jié)點部署主要服務(wù)組件概述

角色組件說明
rbd-dns提供本地dns服務(wù),服務(wù)于集群內(nèi)應(yīng)用的DNS解析。

etcd管理節(jié)點etcd

kube-controller-managerKubernetes管理組件之一, Pod編排器

rbd-webcli提供應(yīng)用web方式進(jìn)入容器命令行的服務(wù)

nfs_server遠(yuǎn)程存儲掛載

rbd-hub基于Docker Registry封裝,提供Docker鏡像存儲服務(wù),服務(wù)于數(shù)據(jù)中心內(nèi)部

kube-schedulerKubernetes管理組件之一,Pod調(diào)度器

docker應(yīng)用容器引擎

rbd-mq消息隊列服務(wù)

calico集群SDN服務(wù),為應(yīng)用提供網(wǎng)絡(luò)支持

rbd-chaos應(yīng)用構(gòu)建服務(wù),提供源碼,Docker鏡像等方式持續(xù)構(gòu)建應(yīng)用。

rbd-worker應(yīng)用運行控制器

kube-apiserverKubernetes管理組件之一, 提供API服務(wù)

rbd-eventlogRainbond 事件處理與日志匯聚服務(wù)

rbd-monitorRainbond 監(jiān)控管理服務(wù),基于Prometheus封裝

rbd-apiRainbond API服務(wù),數(shù)據(jù)中心控制層面的入口。

rbd-dbRainbond 數(shù)據(jù)庫服務(wù),支持MySQL,Tidb與CockroachDB

rbd-app-ui應(yīng)用控制臺web服務(wù)

rbd-repo源碼構(gòu)建倉庫服務(wù),基于Artifactory OSS封裝

nodeRainbond 集群和節(jié)點控制器服務(wù)
etcd-proxy計算節(jié)點etcd-proxy

rbd-dnsRainbond內(nèi)部dns服務(wù),與管理節(jié)點DNS服務(wù)共同對當(dāng)前節(jié)點的應(yīng)用提供DNS解析

kubeletKubernetes 計算負(fù)載節(jié)點組件

docker應(yīng)用容器引擎

calico集群SDN服務(wù),為應(yīng)用提供網(wǎng)絡(luò)支持

nodeRainbond節(jié)點控制器,提供服務(wù)守護(hù)、自動運維、日志收集、服務(wù)發(fā)現(xiàn)等服務(wù)。
網(wǎng)關(guān)節(jié)點docker應(yīng)用容器引擎

calico集群SDN服務(wù),為應(yīng)用提供網(wǎng)絡(luò)支持

rbd-dnsRainbond內(nèi)部dns服務(wù),可作為集群dns服務(wù)使用

rbd-gateway

1.3 節(jié)點規(guī)劃

一個完整的Rainbond集群中必須包含manage、gateway、compute角色的節(jié)點和暫不作為Rainbond安裝支持的存儲節(jié)點,當(dāng)然三種屬性可以在同一個節(jié)點上組成單節(jié)點的Rainbond集群。安裝Rainbond之前需要根據(jù)企業(yè)自身需求合理的規(guī)劃計算資源,這里主要是指物理機(jī)或虛擬機(jī)節(jié)點。

從上文中列舉的主要Rainbond服務(wù)組件來綜合分析,管理節(jié)點的合理規(guī)劃是關(guān)鍵。

Rainbond的主要數(shù)據(jù)存儲組件是:

  • Etcd

    根據(jù)Etcd集群組建特性,其必須部署為1,3,5奇數(shù)節(jié)點。

  • Mysql

    Mysql數(shù)據(jù)庫的部署模式主要有主從、多主等模式,

  • Rbd-monitor(Prometheus)

    Prometheus具有單機(jī)自治特性,因此每一個Rbd-monitor節(jié)點都是獨立的數(shù)據(jù)采集和存儲,基本上可以認(rèn)為多節(jié)點數(shù)據(jù)是一致的。

Rainbond安裝腳本對Etcd,Rbd-monitor做了較好的自動安裝支持,對于Mysql數(shù)據(jù)庫,我們更建議用戶獨立安裝Mysql數(shù)據(jù)庫并提供給Rainbond安裝腳本。管理節(jié)點其他的組件基本上可以認(rèn)為是無狀態(tài)的,或有狀態(tài)的組件都自身實現(xiàn)了良好的工作節(jié)點選舉。對部署節(jié)點數(shù)無關(guān)鍵要求。因此我們推薦的管理節(jié)點數(shù)量是3個及以上。

網(wǎng)關(guān)節(jié)點處理流量入口,每一個Rainbond節(jié)點目前都獨立提供了所有訪問策略的支持,因此上層可以采用4層負(fù)載均衡策略或VIP策略,因此我們推薦的節(jié)點數(shù)量是2個及以上。

計算節(jié)點提供計算負(fù)載,節(jié)點越多,集群計算容量越大,因此計算節(jié)點的規(guī)劃取決于集群需要運行的應(yīng)用數(shù)量,隨時可以增加或下線節(jié)點。因此我們推薦的節(jié)點數(shù)量是2個及以上。

2. 安裝原理說明

Rainbond-Ansible 項目是Rainbond子項目之一,提供Rainbond集群便捷的安裝支持,采用Ansible自動化部署框架實現(xiàn)。其具有安裝簡單、工作原理簡單、模塊化、生態(tài)完善等特點。

早期我們采用了SaltStack 實現(xiàn),其工作模式復(fù)雜,不透明的節(jié)點通信機(jī)制。Rainbond安裝過程受限于SaltStack的穩(wěn)定性,因此我們從5.0版本后對安裝腳本進(jìn)行了重構(gòu)。

2.1 安裝腳本結(jié)構(gòu)

.
├── callback_plugins                  # 任務(wù)失敗時打印幫助消息回調(diào)插件
│   └── help.py                       # 回調(diào)插件示例
├── hack                              # 部署本地資源文件目錄
│   ├── chinaos                       # 操作系統(tǒng)的安裝包源
│   │   ├── CentOS-Base.repo          # CentOS的源
│   │   ├── centos-release            # CentOS的全局配置
│   │   ├── sources.list              # Ubuntu的源
│   │   ├── ubuntu-lsb-release        # Ubuntu的版本配置
│   │   └── ubuntu-release            # Ubuntu的全局配置
│   ├── docker                        # Docker部署資源文件目錄
│   │   ├── get-docker.sh             # 快速部署Docker腳本
│   │   └── rainspray.list            # 快速部署Docker的Ubuntu源
│   ├── files                         # 好雨工具包
│   │   ├── bin                       # grctl的二進(jìn)制文件
│   │   ├── health                    # 健康監(jiān)測腳本
│   │   ├── ssh                       # ssh配置腳本
│   │   └── ssl                       # 好雨加密證書
│   ├── manifests                     # 應(yīng)用配置文件
│   │   ├── dashboard                 # 儀表盤-配置
│   │   ├── efk                       # efk-配置
│   │   ├── es-cluster                # es集群-配置
│   │   ├── heapster                  # heapster-配置
│   │   ├── ingress                   # ingress-配置
│   │   ├── jenkins                   # jenkins-配置
│   │   ├── metrics-server            # metrics-配置
│   │   ├── prometheus                # prometheus-配置
│   │   └── storage                   # storage-配置
│   ├── step                          # Ansible安裝步驟劇本
│   │   ├── 00.prepare.yml            # 安裝前檢測
│   │   ├── 01.docker.yml             # docker-配置
│   │   ├── 02.image.yml              # image-配置
│   │   ├── 10.etcd.yml               # etcd-配置
│   │   ├── 11.kube-master.yml        # kube-master-配置
│   │   ├── 12.kube-worker.yml        # kube-worker-配置
│   │   ├── 13.network.yml            # network-配置
│   │   ├── 20.db.yml                 # database-配置
│   │   ├── 21.storage.yml            # storage-配置
│   │   ├── 22.lb.yml                 # lb-配置
│   │   ├── 23.node.yml               # node-配置
│   │   └── 90.setup.yml              # setup-配置
│   ├── thirdparty                    # 第三方服務(wù)對接
│   │   ├── addmaster.yml             # 增加master-role
│   │   ├── addnode.yml               # 增加node-role
│   │   └── setup.yaml                # 配置安裝
│   ├── tools                         # 工具包目錄
│   │   ├── get_images.sh             # 拉取docker鏡像
│   │   ├── update-domain.sh          # 更換域名
│   │   └── yc-ssh-key-copy.sh        # 批量部署服務(wù)器ssh-key
│   ├── upgrade                       # 升級配置目錄
│   │   └── upgrade.yml               # 升級配置文件
│   ├── vagrant                       # vagrant服務(wù)配置目錄
│   │   ├── README.md                 # 說明文件
│   │   ├── Vagrantfile               # ruby獲取系統(tǒng)信息
│   │   ├── install.sh                # 安裝文件
│   │   └── setup.sh                  # 配置文件
│   └── windows                       # windows節(jié)點配置目錄
│       ├── cni                       # 配置文件目錄
│       ├── scripts                   # 腳本目錄
│       │   ├── helper.psm1           # 幫助信息腳本
│       │   ├── hns.psm1              # hns配置腳本
│       │   ├── start-flannel.        # 開啟flannel腳本
│       │   ├── start-kubelet.        # 開始kubelet腳本
│       │   └── start-node.ps1        # 開始node服務(wù)腳本
│       ├── README.md                 # 說明文件
│       ├── daemon.json               # 域名配置
│       ├── net-conf.json             # 網(wǎng)絡(luò)配置
│       └── win.yaml                  # Windows配置
├── inventory                         # Ansible劇本執(zhí)行主機(jī)
│   ├── hosts.all                     # 主機(jī)模版
│   └── hosts.master                  # 主機(jī)模版
├── log                               # 日志文件目錄
├── offline                           # 離線安裝配置文件目錄
│   ├── image                         # 離線包制作腳本目錄
│   │   ├── download.sh               # 緩存docker離線鏡像腳本
│   │   ├── image.txt                 # rainbond鏡像列表
│   │   ├── load.sh                   # 加載離線緩存鏡像包腳本
│   │   └── offimage.sh               # 壓縮理想緩存鏡像包腳本
│   └── pkgs                          # 離線包存儲目錄
│       ├── Dockerfile.centos         # 構(gòu)建離線CentOS鏡像
│       ├── Makefile                  # 構(gòu)建離線CentOS鏡像
│       ├── README.md                 # 說明文檔
│       ├── download.centos           # 創(chuàng)建本地CentOS源
│       └── rbd.repo                  # Centos源
├── scripts                           # 部署腳本存放目錄
│   ├── installer                     # 安裝腳本目錄
│   │   ├── default.sh                # 默認(rèn)網(wǎng)絡(luò)配置腳本
│   │   ├── functions.sh              # 安裝的示例庫腳本
│   │   └── global.sh.example         # 全局變量示例腳本
│   ├── op                            # 網(wǎng)絡(luò)配置目錄
│   │   ├── README.md                 # 說明文件
│   │   ├── lb.sh                     # 配置lb服務(wù)腳本
│   │   └── network.sh                # 配置網(wǎng)絡(luò)腳本
│   ├── upgrade                       # 升級腳本目錄
│   │   └── upgrade.sh                # 升級腳本文件
│   ├── yaml                          # 網(wǎng)絡(luò)配置劇本目錄
│   │   ├── init_network.yaml         # 初始化網(wǎng)絡(luò)劇本
│   │   └── reset_network.yaml        # 重置網(wǎng)絡(luò)劇本
│   └── node.sh                       # 用于管理節(jié)點腳本
├── test                              # 測試劇本語法腳本目錄
│   ├── hosts.ini                     # 主機(jī)配置信息
│   ├── k8s-master.role.1.j2          # k8s-master配置信息
│   ├── k8s-worker.role.1.j2          # k8s-worker配置信息
│   ├── kubelet.sh.1.j2               # kubelet配置信息
│   └── test.sh                       # 檢測Ansible劇本語法腳本
├── roles                             # Ansible部署規(guī)則配置文件目錄
│   ├── bootstrap                     # bootstrap服務(wù)規(guī)則配置
│   ├── db                            # database服務(wù)規(guī)則配置
│   ├── docker                        # docker服務(wù)規(guī)則配置
│   ├── etcd                          # etcd服務(wù)規(guī)則配置
│   ├── k8s                           # k8s服務(wù)規(guī)則配置
│   ├── lb                            # lb服務(wù)規(guī)則配置
│   ├── monitor                       # monitor服務(wù)規(guī)則配置
│   ├── network_plugin                # network_plugin服務(wù)規(guī)則配置
│   ├── node                          # node服務(wù)規(guī)則配置
│   ├── prepare                       # prepare服務(wù)規(guī)則配置
│   ├── rainvar                       # rainvar服務(wù)規(guī)則配置
│   ├── storage                       # storage服務(wù)規(guī)則配置
│   ├── thirdparty                    # thirdparty服務(wù)規(guī)則配置
│   └── upgrade                       # upgrade服務(wù)規(guī)則配置
├── docs                              # 說明文檔文件夾
├── CHANGELOG.md                      # 版本迭代說明
├── Dockerfile                        # 創(chuàng)建rainbond-ansible的Ubuntu鏡像源
├── LICENSE                           # 開發(fā)協(xié)議
├── Makefile                          # 語法檢測配置
├── README.md                         # 說明文件
├── addmaster.yml                     # 增加master節(jié)點劇本
├── addnode.yml                       # 增加node節(jié)點劇本
├── ansible.cfg                       # Ansible程序配置優(yōu)化
├── lb.yml                            # 增加lb節(jié)點劇本
├── setup.sh                          # 主安裝腳本入口
├── setup.yml                         # Ansible本地安裝劇本
├── upgrade.yml                       # Ansible升級劇本
└── version                           # 安裝包版本

2.2 ansible-playbook各角色劇本

角色劇本說明
managerainvar初始化私有數(shù)據(jù)中心的一些默認(rèn)配置(數(shù)據(jù)庫、端口、安裝路徑、安裝版本等)

bootstrap對本節(jié)點的內(nèi)核進(jìn)行優(yōu)化(tcp_tw_recycle、core.somaxconn、syncookies、file-max等)

prepare對本節(jié)點安裝條件進(jìn)行檢查(系統(tǒng)版本、CPU、內(nèi)存、磁盤、內(nèi)核等)

storage/nfs/client以nfs方式掛載本節(jié)點的存儲卷

storage/nas以nas方式掛載本節(jié)點的存儲卷

storage/gfs以gfs方式掛載本節(jié)點的存儲卷

docker/install在本節(jié)點上安裝Docker服務(wù)

k8s/manage在本節(jié)點上安裝k8s服務(wù)的管理端

etcd/manage在本節(jié)點上安裝etcd服務(wù)的管理端

gateway在本節(jié)點上安裝負(fù)載均衡組件

monitor在本節(jié)點上安裝監(jiān)控組件

network_plugin/calico切換docker網(wǎng)絡(luò)為calico

network_plugin/flannel切換docker網(wǎng)絡(luò)為flannel

node/exm安裝基礎(chǔ)依賴包(python-pip、ansible)

node/core在本節(jié)點安裝node核心組件
gatewayrainvar初始化私有數(shù)據(jù)中心的一些默認(rèn)配置(數(shù)據(jù)庫、端口、安裝路徑、安裝版本等)

bootstrap對本節(jié)點的內(nèi)核進(jìn)行優(yōu)化(tcp_tw_recycle、core.somaxconn、syncookies、file-max等)

prepare對本節(jié)點安裝條件進(jìn)行檢查(系統(tǒng)版本、CPU、內(nèi)存、磁盤、內(nèi)核等)

storage/nfs/client以nfs方式掛載本節(jié)點的存儲卷

storage/nas以nas方式掛載本節(jié)點的存儲卷

storage/gfs以gfs方式掛載本節(jié)點的存儲卷

docker/install在本節(jié)點上安裝Docker服務(wù)

network_plugin/calico切換docker網(wǎng)絡(luò)為calico

network_plugin/flannel切換docker網(wǎng)絡(luò)為flannel

gateway在本節(jié)點上安裝負(fù)載均衡組件

node/exlb在本節(jié)點安裝node負(fù)載組件
computerainvar初始化私有數(shù)據(jù)中心的一些默認(rèn)配置(數(shù)據(jù)庫、端口、安裝路徑、安裝版本等)

bootstrap對本節(jié)點的內(nèi)核進(jìn)行優(yōu)化(tcp_tw_recycle、core.somaxconn、syncookies、file-max等)

prepare對本節(jié)點安裝條件進(jìn)行檢查(系統(tǒng)版本、CPU、內(nèi)存、磁盤、內(nèi)核等)

storage/nfs/client以nfs方式掛載本節(jié)點的存儲卷

storage/nas以nas方式掛載本節(jié)點的存儲卷

storage/gfs以gfs方式掛載本節(jié)點的存儲卷

docker/install在本節(jié)點上安裝Docker服務(wù)

k8s/compute在本節(jié)點上安裝k8s服務(wù)的客戶端

etcd/compute在本節(jié)點上安裝etcd服務(wù)的客戶端

network_plugin/calico切換docker網(wǎng)絡(luò)為calico

network_plugin/flannel切換docker網(wǎng)絡(luò)為flannel

gateway在本節(jié)點上安裝負(fù)載均衡組件

node/core在本節(jié)點安裝node核心組件

2.3 安裝腳本部署流程

2.3.1 集群初始化

集群初始化包括三個重要步驟,安裝腳本獲取、安裝環(huán)境構(gòu)建和第一個節(jié)點的安裝。

./grctl init 各種參數(shù)
  • 安裝腳本獲取

    grctl init 命令從github倉庫獲取指定版本的ansible代碼,如果離線安裝沒有此步驟。

  • 安裝環(huán)境構(gòu)建

    grctl init 命令根據(jù)用戶指定的參數(shù)和默認(rèn)值生成ansible global.sh 全局配置文件。

    這里的參數(shù)主要是指定Rainbond集群在存儲、網(wǎng)絡(luò)、安裝模式等關(guān)鍵參數(shù)。

    • INSTALL_TYPE # 安裝類型(離線/聯(lián)網(wǎng))

    • DEPLOY_TYPE # 節(jié)點類型

    • DOMAIN # 域名

    • VERSION # 版本

    • STORAGE # 存儲類型

    • STORAGE_ARGS # 掛載參數(shù)

    • NETWORK_TYPE # 網(wǎng)絡(luò)類型

    • ROLE # 第一個節(jié)點角色(默認(rèn)manage、gateway、compute)

    • 配置文件: /opt/rainbond/rainbond-ansible/scripts/installer/global.sh

    • 主要配置:

  • 第一個節(jié)點安裝

    單一節(jié)點的安裝根據(jù)傳入role角色屬性,傳遞屬性給主安裝腳本setup.sh

    主安裝腳本在進(jìn)行本地節(jié)點系統(tǒng)優(yōu)化之后調(diào)用ansible-playbook使用setup.yml劇本進(jìn)行第一個節(jié)點部署

    劇本主要根據(jù)master主機(jī)組的role進(jìn)行配置裝機(jī)(系統(tǒng)優(yōu)化、組件部署)

2.3.2 compute、gateway節(jié)點擴(kuò)容安裝
  1. 傳入需要安裝的role角色屬性(compute,gateway),傳遞給主安裝腳本setup.sh

  2. 主安裝腳本在進(jìn)行遠(yuǎn)程節(jié)點系統(tǒng)優(yōu)化之后調(diào)用ansible-playbook使用角色對應(yīng)的劇本進(jìn)行部署

    • manage 角色屬性調(diào)用 addmaster.yml

    • compute 角色屬性調(diào)用 addnode.yml

    • gateway 角色屬性調(diào)用 gateway.yml

  3. 劇本主要根據(jù)主機(jī)組所使用的role進(jìn)行配置裝機(jī)(系統(tǒng)優(yōu)化、組件部署)

3. 集群安裝流程

graph LR
    subgraph 初始化過程
        id1(grctl)==>id2(setup.sh)
        id2(setup.sh)==>id3(ansible-playbook)
    end

3.1 grctl init 初始化過程

grctl init 命令首先獲取安裝包,然后根據(jù)傳入的參數(shù)以鍵值對的方式轉(zhuǎn)換為shell腳本變量,以全局變量的方式對后續(xù)操作進(jìn)行參數(shù)的傳遞,后續(xù)步驟讀取全局變量,達(dá)到安裝過程中對可變因素的掌控。

在未來的版本中,grctl命令行進(jìn)一步控制ansible的主機(jī)列表,準(zhǔn)確的為ansible提供集群主機(jī)序列。

3.2 shell 初始化過程

grctl 命令完成參數(shù)配置后調(diào)用安裝腳本/opt/rainbond/rainbond-ansible/setup.sh 進(jìn)行第一個節(jié)點初始化。

腳本首先會對操作系統(tǒng)進(jìn)行優(yōu)化。這里是安裝過程使用網(wǎng)絡(luò)的主要點,在線安裝模式下,操作系統(tǒng)的更新和配置,安裝包的下載通過網(wǎng)絡(luò)進(jìn)行。離線安裝模式下使用事先準(zhǔn)備的本地安裝源對操作系統(tǒng)進(jìn)行基礎(chǔ)環(huán)境安裝,然后使用事先下載好的安裝包。后續(xù)的節(jié)點安裝過程將不再使用網(wǎng)絡(luò)。

最后會調(diào)取ansible-play使用setup.yml劇本進(jìn)行初始化安裝。

3.3 ansible-playbook 初始化過程

ansible-playbook使用setup.yml進(jìn)行初始化,首先會找到當(dāng)前主機(jī)所在的主機(jī)組,之后根據(jù)role的設(shè)定到不同的組件文件夾中根據(jù)pre_task -> roles -> tasks -> post-tasks 的順序依次執(zhí)行文件夾下面的main.yml達(dá)到組件安裝的作用

3.4 其他角色節(jié)點擴(kuò)容安裝

  1. grctl node add --host <計算節(jié)點主機(jī)名> --iip <計算節(jié)點內(nèi)網(wǎng)ip> --root-pass <計算節(jié)點root密碼> --role gateway,compute指定新增節(jié)點的主機(jī)名、內(nèi)網(wǎng)地址、連接密碼、角色 , grctl命令行首先將節(jié)點數(shù)據(jù)加入集群元數(shù)據(jù)。通過grctl node list命令即可查詢節(jié)點狀態(tài)。

  2. 使用grctl node install host-uuid命令安裝節(jié)點,grclt從API中讀取相應(yīng)的主機(jī)信息傳遞給node.sh腳本進(jìn)行節(jié)點的安裝。

  3. node.shscript/node.sh中,主要獲取以下幾個參數(shù):

    • node_role # 新增節(jié)點的角色

    • node_hostname # 新增節(jié)點的主機(jī)名

    • node_ip # 新增節(jié)點的網(wǎng)絡(luò)地址

    • login_type # 新增節(jié)點的登陸方式

    • login_key # 新增節(jié)點的連接密碼

    • node_uuid # 新增節(jié)點的uuid

  4. node.sh腳本首先會判斷node_role中傳遞的角色屬性,循環(huán)角色屬性判斷inventory/hosts中相應(yīng)的主機(jī)組中是否存在對應(yīng)的主機(jī),沒有根據(jù)不同的角色屬性加入到相應(yīng)的主機(jī)組中進(jìn)行裝機(jī),在維護(hù)inventory/hosts之后會進(jìn)行連接檢測通過login_type、login_key、node_uuid、node_ip、node_hostname參數(shù)進(jìn)行主機(jī)連接檢測、通過之后會調(diào)用ansible-playbook -i inventory/hosts -e $node_role role.yml進(jìn)行不同角色的裝機(jī):

    在5.1.6版本中hosts文件的維護(hù)將移交到grctl命令行工具中,根據(jù)集群節(jié)點狀態(tài)實時生成。

    • addmaster.yml # master role

    • addnode.yml # compute role

    • gateway.yml # gateway role

    • -i 指定裝機(jī)主機(jī)

    • -e 將grctl傳遞給setup.shnode_role參數(shù)傳遞給ansible-playbook生成對應(yīng)的node組件角色配置文件

    • role.yml 不同角色對應(yīng)不同的yml配置文件

4. 節(jié)點服務(wù)運維

Rainbond集群安裝的所有組件有兩種運行方式: node組件和docker組件是直接二進(jìn)制運行,其他組件全部采用容器化運行。兩種運行方式都是直接采用systemd守護(hù)進(jìn)程進(jìn)行守護(hù)。因此能夠安裝Rainbond的操作系統(tǒng)必須具有systemd。

在集群自動化運維的需求下,我們需要對節(jié)點(特別是計算節(jié)點)進(jìn)行實時全面的健康檢查,以確認(rèn)節(jié)點是否可用。這個工作由node服務(wù)進(jìn)行,它會根據(jù)/opt/rainbond/conf目錄下配置對當(dāng)前節(jié)點的配置檢查項進(jìn)行監(jiān)控,如果出現(xiàn)故障匯報到集群管理端,如果是計算節(jié)點則會由集群管理端決策是否暫時禁止調(diào)度或下線該節(jié)點。

graph LR
    subgraph 服務(wù)運維流程
        id1(systemd)==>id2(node.service)
        id2(node.service)==>id3(健康檢測)
        id2(node.service)==>id4(守護(hù)進(jìn)程)
    end

4.1 systemd的配置文件生成(node.service)

  • 在集群初始化完成之后ansible會在/etc/systemd/system/node.service目錄下生成node.service的配置文件,node服務(wù)在systemd中以守護(hù)進(jìn)程方式啟動運行。

  • node服務(wù)啟動后將讀取/opt/rainbond/conf目錄下的配置生成每一個需要啟動服務(wù)的systemd配置文件并調(diào)用systemctl工具啟動服務(wù)。

    配置文件分為需求啟動服務(wù)和只是健康檢查項目,比如以下配置:

    - name: rbd-mq
      endpoints:
      - name: MQ_ENDPOINTS
        protocol: http
        port: 6301
      health:
        name: rbd-mq
        model: http
        address: 127.0.0.1:6301/health
        max_errors_num: 3
        time_interval: 5
      after:
        - docker
      type: simple
      pre_start: docker rm rbd-mq
      start: >-
        docker run --name rbd-mq
        --network host
        -i goodrain.me/rbd-mq:V5.1-dev
        --log-level=debug --etcd-endpoints=${ETCD_ENDPOINTS} --hostIP=192.168.195.1
      stop: docker stop rbd-mq
      restart_policy: always
      restart_sec: 10


    該文件配置了rbd-mq服務(wù)的啟動方式、健康檢查方式和服務(wù)注冊信息。

4.2 node組件的健康檢測機(jī)制

每一個安裝服務(wù)的健康檢查配置見文檔: 詳細(xì)配置

若某項檢查項目標(biāo)識為不健康狀態(tài),當(dāng)前節(jié)點將被標(biāo)識為不健康狀態(tài)。

  • 對于不健康的節(jié)點Rainbond提供兩級自動處理機(jī)制:

    • 檢測到異常的服務(wù)一段時間依然未恢復(fù)(取決于配置的時間段)將自動重啟服務(wù)。

    • 若計算節(jié)點被標(biāo)注為不健康,節(jié)點控制器將會自動將其禁止應(yīng)用調(diào)度直到節(jié)點恢復(fù)健康。

  • 配置文件: /opt/rainbond/conf/health.yaml

    • name # 需要檢測的服務(wù)名稱

    • model # 以什么方式檢測(tcp/http/cmd)

    • address # 被檢測服務(wù)的地址

    • max_errors_num # 最大錯誤次數(shù)

    • time_interval # 每次檢測次數(shù)

  • 目前檢測方式有3種

    • cmd # 使用腳本或者命令行

    • tcp # 使用ip:port模式

    • http # 使用http協(xié)議檢測

4.3 集群故障查詢和處理

根據(jù)整個集群節(jié)點的健康檢查機(jī)制,用戶在管理節(jié)點通過grctl cluster 命令即可查詢整個集群的故障點,或使用監(jiān)控報警系統(tǒng)及時發(fā)現(xiàn)集群故障。當(dāng)集群某個節(jié)點出現(xiàn)問題時首先定位故障的服務(wù),并查看其運行日志處理故障。如果有未完善的健康檢測項目,用戶可以通過上訴節(jié)點健康檢測配置方式自定義檢測項目。

5. 常見安裝問題解決思路

  • 端口被占用無法安裝

Rainbond是一個完整的PaaS平臺解決方案,所以強(qiáng)烈建議使用干凈的物理機(jī)或虛擬機(jī)安裝Rainbond。 Rainbond網(wǎng)關(guān)節(jié)點直接承接應(yīng)用訪問流量,因此其默認(rèn)占用80\443等關(guān)鍵端口。另外Rainbond安裝Ansible默認(rèn)使用的SSH端口是22,嚴(yán)格運維時需要設(shè)置。

  • 數(shù)據(jù)庫安裝初始化失敗

Rainbond 5.1.5及之前版本默認(rèn)安裝的mysql數(shù)據(jù)庫版本是mariadb 10,其所需的內(nèi)存資源是較大的。如果你的機(jī)器資源有限很大可能導(dǎo)致安裝失敗。后續(xù)的版本中我們將默認(rèn)安裝的數(shù)據(jù)庫版本升級到Mysql 5.7系列。

  • 高可用安裝怎么做

本文主要描述了整個安裝原理,因此你閱讀本文應(yīng)該可以總結(jié)出Rainbond高可用安裝的關(guān)鍵,我們近期也會再次更新高可用安裝操作指南。

  • Rainbond能否安裝在Mac或Windows系統(tǒng)

Rainbond計算節(jié)點可以支持Windows操作系統(tǒng)來運行Windows應(yīng)用,目前Windows的支持是企業(yè)版功能之一,因此開源安裝腳本暫不支持Windows 節(jié)點的快速安裝。Mac操作系統(tǒng)不適合安裝Rainbond。開發(fā)者可以將部分組件運行在Mac下運行開發(fā)。

到此,相信大家對“Rainbond集群安裝方法和運維原理是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI