本篇內(nèi)容主要講解“Rainbond集群安裝方法和運(yùn)維原理是什么”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Rainbond集群安裝方法和運(yùn)維原理是什么”吧!
創(chuàng)新互聯(lián)建站主營(yíng)新興網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App制作,新興h5小程序開(kāi)發(fā)搭建,新興網(wǎng)站營(yíng)銷推廣歡迎新興等地區(qū)企業(yè)咨詢
本文將解讀Rainbond集群的安裝和運(yùn)維的原理,使用戶基本了解Rainbond的安裝機(jī)制和運(yùn)維重點(diǎn),便于用戶搭建大型Rainbond集群。
屬性 | 類型 | 說(shuō)明 |
---|---|---|
manage | 管理節(jié)點(diǎn) | 集結(jié)平臺(tái)自身組件,提供應(yīng)用構(gòu)建、調(diào)度、管理等功能,提供數(shù)據(jù)中心基礎(chǔ)服務(wù)與API接口,充當(dāng)控制集群的角色。 |
gateway | 網(wǎng)關(guān)節(jié)點(diǎn) | 集群內(nèi)應(yīng)用被外網(wǎng)訪問(wèn)的流量入口和負(fù)載均衡器,提供HTTP, HTTPs路由, TCP/UDP服務(wù), 負(fù)載均衡器, 高級(jí)路由(A/B測(cè)試, 灰度發(fā)布)等功能 |
compute | 計(jì)算節(jié)點(diǎn) | 提供應(yīng)用運(yùn)行的計(jì)算資源,N個(gè)計(jì)算節(jié)點(diǎn)組成計(jì)算資源池供給管理節(jié)點(diǎn)靈活調(diào)度。 |
角色 | 組件 | 說(shuō)明 |
---|---|---|
rbd-DNS | 提供本地dns服務(wù),服務(wù)于集群內(nèi)應(yīng)用的DNS解析。 | |
etcd | 管理節(jié)點(diǎn)etcd | |
kube-controller-manager | Kubernetes管理組件之一, Pod編排器 | |
rbd-webcli | 提供應(yīng)用web方式進(jìn)入容器命令行的服務(wù) | |
nfs_server | 遠(yuǎn)程存儲(chǔ)掛載 | |
rbd-hub | 基于Docker Registry封裝,提供Docker鏡像存儲(chǔ)服務(wù),服務(wù)于數(shù)據(jù)中心內(nèi)部 | |
kube-scheduler | Kubernetes管理組件之一,Pod調(diào)度器 | |
docker | 應(yīng)用容器引擎 | |
rbd-mq | 消息隊(duì)列服務(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)用運(yùn)行控制器 | |
kube-apiserver | Kubernetes管理組件之一, 提供API服務(wù) | |
rbd-eventlog | Rainbond 事件處理與日志匯聚服務(wù) | |
rbd-monitor | Rainbond 監(jiān)控管理服務(wù),基于Prometheus封裝 | |
rbd-api | Rainbond API服務(wù),數(shù)據(jù)中心控制層面的入口。 | |
rbd-db | Rainbond 數(shù)據(jù)庫(kù)服務(wù),支持MySQL,Tidb與CockroachDB | |
rbd-app-ui | 應(yīng)用控制臺(tái)web服務(wù) | |
rbd-repo | 源碼構(gòu)建倉(cāng)庫(kù)服務(wù),基于Artifactory OSS封裝 | |
node | Rainbond 集群和節(jié)點(diǎn)控制器服務(wù) | |
etcd-proxy | 計(jì)算節(jié)點(diǎn)etcd-proxy | |
rbd-dns | Rainbond內(nèi)部dns服務(wù),與管理節(jié)點(diǎn)DNS服務(wù)共同對(duì)當(dāng)前節(jié)點(diǎn)的應(yīng)用提供DNS解析 | |
kubelet | Kubernetes 計(jì)算負(fù)載節(jié)點(diǎn)組件 | |
docker | 應(yīng)用容器引擎 | |
calico | 集群SDN服務(wù),為應(yīng)用提供網(wǎng)絡(luò)支持 | |
node | Rainbond節(jié)點(diǎn)控制器,提供服務(wù)守護(hù)、自動(dòng)運(yùn)維、日志收集、服務(wù)發(fā)現(xiàn)等服務(wù)。 | |
網(wǎng)關(guān)節(jié)點(diǎn) | docker | 應(yīng)用容器引擎 |
calico | 集群SDN服務(wù),為應(yīng)用提供網(wǎng)絡(luò)支持 | |
rbd-dns | Rainbond內(nèi)部dns服務(wù),可作為集群dns服務(wù)使用 | |
rbd-gateway |
一個(gè)完整的Rainbond集群中必須包含manage、gateway、compute角色的節(jié)點(diǎn)和暫不作為Rainbond安裝支持的存儲(chǔ)節(jié)點(diǎn),當(dāng)然三種屬性可以在同一個(gè)節(jié)點(diǎn)上組成單節(jié)點(diǎn)的Rainbond集群。安裝Rainbond之前需要根據(jù)企業(yè)自身需求合理的規(guī)劃計(jì)算資源,這里主要是指物理機(jī)或虛擬機(jī)節(jié)點(diǎn)。
從上文中列舉的主要Rainbond服務(wù)組件來(lái)綜合分析,管理節(jié)點(diǎn)的合理規(guī)劃是關(guān)鍵。
Rainbond的主要數(shù)據(jù)存儲(chǔ)組件是:
Etcd
根據(jù)Etcd集群組建特性,其必須部署為1,3,5奇數(shù)節(jié)點(diǎn)。
Mysql
Mysql數(shù)據(jù)庫(kù)的部署模式主要有主從、多主等模式,
Rbd-monitor(Prometheus)
Prometheus具有單機(jī)自治特性,因此每一個(gè)Rbd-monitor節(jié)點(diǎn)都是獨(dú)立的數(shù)據(jù)采集和存儲(chǔ),基本上可以認(rèn)為多節(jié)點(diǎn)數(shù)據(jù)是一致的。
Rainbond安裝腳本對(duì)Etcd,Rbd-monitor做了較好的自動(dòng)安裝支持,對(duì)于Mysql數(shù)據(jù)庫(kù),我們更建議用戶獨(dú)立安裝Mysql數(shù)據(jù)庫(kù)并提供給Rainbond安裝腳本。管理節(jié)點(diǎn)其他的組件基本上可以認(rèn)為是無(wú)狀態(tài)的,或有狀態(tài)的組件都自身實(shí)現(xiàn)了良好的工作節(jié)點(diǎn)選舉。對(duì)部署節(jié)點(diǎn)數(shù)無(wú)關(guān)鍵要求。因此我們推薦的管理節(jié)點(diǎn)數(shù)量是3個(gè)及以上。
網(wǎng)關(guān)節(jié)點(diǎn)處理流量入口,每一個(gè)Rainbond節(jié)點(diǎn)目前都獨(dú)立提供了所有訪問(wèn)策略的支持,因此上層可以采用4層負(fù)載均衡策略或VIP策略,因此我們推薦的節(jié)點(diǎn)數(shù)量是2個(gè)及以上。
計(jì)算節(jié)點(diǎn)提供計(jì)算負(fù)載,節(jié)點(diǎn)越多,集群計(jì)算容量越大,因此計(jì)算節(jié)點(diǎn)的規(guī)劃取決于集群需要運(yùn)行的應(yīng)用數(shù)量,隨時(shí)可以增加或下線節(jié)點(diǎn)。因此我們推薦的節(jié)點(diǎn)數(shù)量是2個(gè)及以上。
Rainbond-Ansible 項(xiàng)目是Rainbond子項(xiàng)目之一,提供Rainbond集群便捷的安裝支持,采用Ansible自動(dòng)化部署框架實(shí)現(xiàn)。其具有安裝簡(jiǎn)單、工作原理簡(jiǎn)單、模塊化、生態(tài)完善等特點(diǎn)。
早期我們采用了SaltStack 實(shí)現(xiàn),其工作模式復(fù)雜,不透明的節(jié)點(diǎn)通信機(jī)制。Rainbond安裝過(guò)程受限于SaltStack的穩(wěn)定性,因此我們從5.0版本后對(duì)安裝腳本進(jìn)行了重構(gòu)。
. ├── callback_plugins # 任務(wù)失敗時(shí)打印幫助消息回調(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)測(cè)腳本 │ │ ├── ssh # ssh配置腳本 │ │ └── ssl # 好雨加密證書(shū) │ ├── 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 # 安裝前檢測(cè) │ │ ├── 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ù)對(duì)接 │ │ ├── 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 # 升級(jí)配置目錄 │ │ └── upgrade.yml # 升級(jí)配置文件 │ ├── vagrant # vagrant服務(wù)配置目錄 │ │ ├── README.md # 說(shuō)明文件 │ │ ├── Vagrantfile # ruby獲取系統(tǒng)信息 │ │ ├── install.sh # 安裝文件 │ │ └── setup.sh # 配置文件 │ └── windows # windows節(jié)點(diǎn)配置目錄 │ ├── cni # 配置文件目錄 │ ├── scripts # 腳本目錄 │ │ ├── helper.psm1 # 幫助信息腳本 │ │ ├── hns.psm1 # hns配置腳本 │ │ ├── start-flannel. # 開(kāi)啟flannel腳本 │ │ ├── start-kubelet. # 開(kāi)始kubelet腳本 │ │ └── start-node.ps1 # 開(kāi)始node服務(wù)腳本 │ ├── README.md # 說(shuō)明文件 │ ├── 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 # 離線包存儲(chǔ)目錄 │ ├── Dockerfile.centos # 構(gòu)建離線CentOS鏡像 │ ├── Makefile # 構(gòu)建離線CentOS鏡像 │ ├── README.md # 說(shuō)明文檔 │ ├── download.centos # 創(chuàng)建本地CentOS源 │ └── rbd.repo # Centos源 ├── scripts # 部署腳本存放目錄 │ ├── installer # 安裝腳本目錄 │ │ ├── default.sh # 默認(rèn)網(wǎng)絡(luò)配置腳本 │ │ ├── functions.sh # 安裝的示例庫(kù)腳本 │ │ └── global.sh.example # 全局變量示例腳本 │ ├── op # 網(wǎng)絡(luò)配置目錄 │ │ ├── README.md # 說(shuō)明文件 │ │ ├── lb.sh # 配置lb服務(wù)腳本 │ │ └── network.sh # 配置網(wǎng)絡(luò)腳本 │ ├── upgrade # 升級(jí)腳本目錄 │ │ └── upgrade.sh # 升級(jí)腳本文件 │ ├── yaml # 網(wǎng)絡(luò)配置劇本目錄 │ │ ├── init_network.yaml # 初始化網(wǎng)絡(luò)劇本 │ │ └── reset_network.yaml # 重置網(wǎng)絡(luò)劇本 │ └── node.sh # 用于管理節(jié)點(diǎn)腳本 ├── test # 測(cè)試劇本語(yǔ)法腳本目錄 │ ├── hosts.ini # 主機(jī)配置信息 │ ├── k8s-master.role.1.j2 # k8s-master配置信息 │ ├── k8s-worker.role.1.j2 # k8s-worker配置信息 │ ├── kubelet.sh.1.j2 # kubelet配置信息 │ └── test.sh # 檢測(cè)Ansible劇本語(yǔ)法腳本 ├── 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 # 說(shuō)明文檔文件夾 ├── CHANGELOG.md # 版本迭代說(shuō)明 ├── Dockerfile # 創(chuàng)建rainbond-ansible的Ubuntu鏡像源 ├── LICENSE # 開(kāi)發(fā)協(xié)議 ├── Makefile # 語(yǔ)法檢測(cè)配置 ├── README.md # 說(shuō)明文件 ├── addmaster.yml # 增加master節(jié)點(diǎn)劇本 ├── addnode.yml # 增加node節(jié)點(diǎn)劇本 ├── ansible.cfg # Ansible程序配置優(yōu)化 ├── lb.yml # 增加lb節(jié)點(diǎn)劇本 ├── setup.sh # 主安裝腳本入口 ├── setup.yml # Ansible本地安裝劇本 ├── upgrade.yml # Ansible升級(jí)劇本 └── version # 安裝包版本
角色 | 劇本 | 說(shuō)明 |
---|---|---|
manage | rainvar | 初始化私有數(shù)據(jù)中心的一些默認(rèn)配置(數(shù)據(jù)庫(kù)、端口、安裝路徑、安裝版本等) |
bootstrap | 對(duì)本節(jié)點(diǎn)的內(nèi)核進(jìn)行優(yōu)化(tcp_tw_recycle、core.somaxconn、syncookies、file-max等) | |
prepare | 對(duì)本節(jié)點(diǎn)安裝條件進(jìn)行檢查(系統(tǒng)版本、CPU、內(nèi)存、磁盤、內(nèi)核等) | |
storage/nfs/client | 以nfs方式掛載本節(jié)點(diǎn)的存儲(chǔ)卷 | |
storage/nas | 以nas方式掛載本節(jié)點(diǎn)的存儲(chǔ)卷 | |
storage/gfs | 以gfs方式掛載本節(jié)點(diǎn)的存儲(chǔ)卷 | |
docker/install | 在本節(jié)點(diǎn)上安裝Docker服務(wù) | |
k8s/manage | 在本節(jié)點(diǎn)上安裝k8s服務(wù)的管理端 | |
etcd/manage | 在本節(jié)點(diǎn)上安裝etcd服務(wù)的管理端 | |
gateway | 在本節(jié)點(diǎn)上安裝負(fù)載均衡組件 | |
monitor | 在本節(jié)點(diǎn)上安裝監(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é)點(diǎn)安裝node核心組件 | |
gateway | rainvar | 初始化私有數(shù)據(jù)中心的一些默認(rèn)配置(數(shù)據(jù)庫(kù)、端口、安裝路徑、安裝版本等) |
bootstrap | 對(duì)本節(jié)點(diǎn)的內(nèi)核進(jìn)行優(yōu)化(tcp_tw_recycle、core.somaxconn、syncookies、file-max等) | |
prepare | 對(duì)本節(jié)點(diǎn)安裝條件進(jìn)行檢查(系統(tǒng)版本、CPU、內(nèi)存、磁盤、內(nèi)核等) | |
storage/nfs/client | 以nfs方式掛載本節(jié)點(diǎn)的存儲(chǔ)卷 | |
storage/nas | 以nas方式掛載本節(jié)點(diǎn)的存儲(chǔ)卷 | |
storage/gfs | 以gfs方式掛載本節(jié)點(diǎn)的存儲(chǔ)卷 | |
docker/install | 在本節(jié)點(diǎn)上安裝Docker服務(wù) | |
network_plugin/calico | 切換docker網(wǎng)絡(luò)為calico | |
network_plugin/flannel | 切換docker網(wǎng)絡(luò)為flannel | |
gateway | 在本節(jié)點(diǎn)上安裝負(fù)載均衡組件 | |
node/exlb | 在本節(jié)點(diǎn)安裝node負(fù)載組件 | |
compute | rainvar | 初始化私有數(shù)據(jù)中心的一些默認(rèn)配置(數(shù)據(jù)庫(kù)、端口、安裝路徑、安裝版本等) |
bootstrap | 對(duì)本節(jié)點(diǎn)的內(nèi)核進(jìn)行優(yōu)化(tcp_tw_recycle、core.somaxconn、syncookies、file-max等) | |
prepare | 對(duì)本節(jié)點(diǎn)安裝條件進(jìn)行檢查(系統(tǒng)版本、CPU、內(nèi)存、磁盤、內(nèi)核等) | |
storage/nfs/client | 以nfs方式掛載本節(jié)點(diǎn)的存儲(chǔ)卷 | |
storage/nas | 以nas方式掛載本節(jié)點(diǎn)的存儲(chǔ)卷 | |
storage/gfs | 以gfs方式掛載本節(jié)點(diǎn)的存儲(chǔ)卷 | |
docker/install | 在本節(jié)點(diǎn)上安裝Docker服務(wù) | |
k8s/compute | 在本節(jié)點(diǎn)上安裝k8s服務(wù)的客戶端 | |
etcd/compute | 在本節(jié)點(diǎn)上安裝etcd服務(wù)的客戶端 | |
network_plugin/calico | 切換docker網(wǎng)絡(luò)為calico | |
network_plugin/flannel | 切換docker網(wǎng)絡(luò)為flannel | |
gateway | 在本節(jié)點(diǎn)上安裝負(fù)載均衡組件 | |
node/core | 在本節(jié)點(diǎn)安裝node核心組件 |
集群初始化包括三個(gè)重要步驟,安裝腳本獲取、安裝環(huán)境構(gòu)建和第一個(gè)節(jié)點(diǎn)的安裝。
./grctl init 各種參數(shù)
安裝腳本獲取
grctl init 命令從github倉(cāng)庫(kù)獲取指定版本的ansible代碼,如果離線安裝沒(méi)有此步驟。
安裝環(huán)境構(gòu)建
grctl init 命令根據(jù)用戶指定的參數(shù)和默認(rèn)值生成ansible global.sh 全局配置文件。
這里的參數(shù)主要是指定Rainbond集群在存儲(chǔ)、網(wǎng)絡(luò)、安裝模式等關(guān)鍵參數(shù)。
INSTALL_TYPE # 安裝類型(離線/聯(lián)網(wǎng))
DEPLOY_TYPE # 節(jié)點(diǎn)類型
DOMAIN # 域名
VERSION # 版本
STORAGE # 存儲(chǔ)類型
STORAGE_ARGS # 掛載參數(shù)
NETWORK_TYPE # 網(wǎng)絡(luò)類型
ROLE # 第一個(gè)節(jié)點(diǎn)角色(默認(rèn)manage、gateway、compute)
配置文件: /opt/rainbond/rainbond-ansible/scripts/installer/global.sh
主要配置:
第一個(gè)節(jié)點(diǎn)安裝
單一節(jié)點(diǎn)的安裝根據(jù)傳入role角色屬性,傳遞屬性給主安裝腳本setup.sh
主安裝腳本在進(jìn)行本地節(jié)點(diǎn)系統(tǒng)優(yōu)化之后調(diào)用ansible-playbook使用setup.yml
劇本進(jìn)行第一個(gè)節(jié)點(diǎn)部署
劇本主要根據(jù)master主機(jī)組的role進(jìn)行配置裝機(jī)(系統(tǒng)優(yōu)化、組件部署)
傳入需要安裝的role角色屬性(compute,gateway),傳遞給主安裝腳本setup.sh
主安裝腳本在進(jìn)行遠(yuǎn)程節(jié)點(diǎn)系統(tǒng)優(yōu)化之后調(diào)用ansible-playbook使用角色對(duì)應(yīng)的劇本進(jìn)行部署
manage 角色屬性調(diào)用 addmaster.yml
compute 角色屬性調(diào)用 addnode.yml
gateway 角色屬性調(diào)用 gateway.yml
劇本主要根據(jù)主機(jī)組所使用的role進(jìn)行配置裝機(jī)(系統(tǒng)優(yōu)化、組件部署)
graph LR subgraph 初始化過(guò)程 id1(grctl)==>id2(setup.sh) id2(setup.sh)==>id3(ansible-playbook) end
grctl init
命令首先獲取安裝包,然后根據(jù)傳入的參數(shù)以鍵值對(duì)的方式轉(zhuǎn)換為shell腳本變量,以全局變量的方式對(duì)后續(xù)操作進(jìn)行參數(shù)的傳遞,后續(xù)步驟讀取全局變量,達(dá)到安裝過(guò)程中對(duì)可變因素的掌控。
在未來(lái)的版本中,grctl命令行進(jìn)一步控制ansible的主機(jī)列表,準(zhǔn)確的為ansible提供集群主機(jī)序列。
grctl 命令完成參數(shù)配置后調(diào)用安裝腳本/opt/rainbond/rainbond-ansible/setup.sh
進(jìn)行第一個(gè)節(jié)點(diǎn)初始化。
腳本首先會(huì)對(duì)操作系統(tǒng)進(jìn)行優(yōu)化。這里是安裝過(guò)程使用網(wǎng)絡(luò)的主要點(diǎn),在線安裝模式下,操作系統(tǒng)的更新和配置,安裝包的下載通過(guò)網(wǎng)絡(luò)進(jìn)行。離線安裝模式下使用事先準(zhǔn)備的本地安裝源對(duì)操作系統(tǒng)進(jìn)行基礎(chǔ)環(huán)境安裝,然后使用事先下載好的安裝包。后續(xù)的節(jié)點(diǎn)安裝過(guò)程將不再使用網(wǎng)絡(luò)。
最后會(huì)調(diào)取ansible-play使用setup.yml
劇本進(jìn)行初始化安裝。
ansible-playbook使用setup.yml
進(jìn)行初始化,首先會(huì)找到當(dāng)前主機(jī)所在的主機(jī)組,之后根據(jù)role的設(shè)定到不同的組件文件夾中根據(jù)pre_task -> roles -> tasks -> post-tasks 的順序依次執(zhí)行文件夾下面的main.yml
達(dá)到組件安裝的作用
grctl node add --host <計(jì)算節(jié)點(diǎn)主機(jī)名> --iip <計(jì)算節(jié)點(diǎn)內(nèi)網(wǎng)ip> --root-pass <計(jì)算節(jié)點(diǎn)root密碼> --role gateway,compute
指定新增節(jié)點(diǎn)的主機(jī)名、內(nèi)網(wǎng)地址、連接密碼、角色
, grctl命令行首先將節(jié)點(diǎn)數(shù)據(jù)加入集群元數(shù)據(jù)。通過(guò)grctl node list
命令即可查詢節(jié)點(diǎn)狀態(tài)。
使用grctl node install host-uuid
命令安裝節(jié)點(diǎn),grclt從API中讀取相應(yīng)的主機(jī)信息傳遞給node.sh
腳本進(jìn)行節(jié)點(diǎn)的安裝。
node.sh
在script/node.sh
中,主要獲取以下幾個(gè)參數(shù):
node_role # 新增節(jié)點(diǎn)的角色
node_hostname # 新增節(jié)點(diǎn)的主機(jī)名
node_ip # 新增節(jié)點(diǎn)的網(wǎng)絡(luò)地址
login_type # 新增節(jié)點(diǎn)的登陸方式
login_key # 新增節(jié)點(diǎn)的連接密碼
node_uuid # 新增節(jié)點(diǎn)的uuid
node.sh
腳本首先會(huì)判斷node_role
中傳遞的角色屬性,循環(huán)角色屬性判斷inventory/hosts
中相應(yīng)的主機(jī)組中是否存在對(duì)應(yīng)的主機(jī),沒(méi)有根據(jù)不同的角色屬性加入到相應(yīng)的主機(jī)組中進(jìn)行裝機(jī),在維護(hù)inventory/hosts
之后會(huì)進(jìn)行連接檢測(cè)通過(guò)login_type、login_key、node_uuid、node_ip、node_hostname
參數(shù)進(jìn)行主機(jī)連接檢測(cè)、通過(guò)之后會(huì)調(diào)用ansible-playbook -i inventory/hosts -e $node_role role.yml
進(jìn)行不同角色的裝機(jī):
在5.1.6版本中hosts文件的維護(hù)將移交到grctl命令行工具中,根據(jù)集群節(jié)點(diǎn)狀態(tài)實(shí)時(shí)生成。
addmaster.yml # master role
addnode.yml # compute role
gateway.yml # gateway role
-i 指定裝機(jī)主機(jī)
-e 將grctl
傳遞給setup.sh
的node_role
參數(shù)傳遞給ansible-playbook
生成對(duì)應(yīng)的node組件角色配置文件
role.yml 不同角色對(duì)應(yīng)不同的yml配置文件
Rainbond集群安裝的所有組件有兩種運(yùn)行方式: node組件和docker組件是直接二進(jìn)制運(yùn)行,其他組件全部采用容器化運(yùn)行。兩種運(yùn)行方式都是直接采用systemd守護(hù)進(jìn)程進(jìn)行守護(hù)。因此能夠安裝Rainbond的操作系統(tǒng)必須具有systemd。
在集群自動(dòng)化運(yùn)維的需求下,我們需要對(duì)節(jié)點(diǎn)(特別是計(jì)算節(jié)點(diǎn))進(jìn)行實(shí)時(shí)全面的健康檢查,以確認(rèn)節(jié)點(diǎn)是否可用。這個(gè)工作由node服務(wù)進(jìn)行,它會(huì)根據(jù)/opt/rainbond/conf
目錄下配置對(duì)當(dāng)前節(jié)點(diǎn)的配置檢查項(xiàng)進(jìn)行監(jiān)控,如果出現(xiàn)故障匯報(bào)到集群管理端,如果是計(jì)算節(jié)點(diǎn)則會(huì)由集群管理端決策是否暫時(shí)禁止調(diào)度或下線該節(jié)點(diǎn)。
graph LR subgraph 服務(wù)運(yùn)維流程 id1(systemd)==>id2(node.service) id2(node.service)==>id3(健康檢測(cè)) id2(node.service)==>id4(守護(hù)進(jìn)程) end
在集群初始化完成之后ansible會(huì)在/etc/systemd/system/node.service
目錄下生成node.service
的配置文件,node
服務(wù)在systemd
中以守護(hù)進(jìn)程方式啟動(dòng)運(yùn)行。
node服務(wù)啟動(dòng)后將讀取/opt/rainbond/conf
目錄下的配置生成每一個(gè)需要啟動(dòng)服務(wù)的systemd配置文件并調(diào)用systemctl工具啟動(dòng)服務(wù)。
配置文件分為需求啟動(dòng)服務(wù)和只是健康檢查項(xiàng)目,比如以下配置:
- 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ù)的啟動(dòng)方式、健康檢查方式和服務(wù)注冊(cè)信息。
每一個(gè)安裝服務(wù)的健康檢查配置見(jiàn)文檔: 詳細(xì)配置
若某項(xiàng)檢查項(xiàng)目標(biāo)識(shí)為不健康狀態(tài),當(dāng)前節(jié)點(diǎn)將被標(biāo)識(shí)為不健康狀態(tài)。
對(duì)于不健康的節(jié)點(diǎn)Rainbond提供兩級(jí)自動(dòng)處理機(jī)制:
檢測(cè)到異常的服務(wù)一段時(shí)間依然未恢復(fù)(取決于配置的時(shí)間段)將自動(dòng)重啟服務(wù)。
若計(jì)算節(jié)點(diǎn)被標(biāo)注為不健康,節(jié)點(diǎn)控制器將會(huì)自動(dòng)將其禁止應(yīng)用調(diào)度直到節(jié)點(diǎn)恢復(fù)健康。
配置文件: /opt/rainbond/conf/health.yaml
name # 需要檢測(cè)的服務(wù)名稱
model # 以什么方式檢測(cè)(tcp/http/cmd)
address # 被檢測(cè)服務(wù)的地址
max_errors_num # 最大錯(cuò)誤次數(shù)
time_interval # 每次檢測(cè)次數(shù)
目前檢測(cè)方式有3種
cmd # 使用腳本或者命令行
tcp # 使用ip:port模式
http # 使用http協(xié)議檢測(cè)
根據(jù)整個(gè)集群節(jié)點(diǎn)的健康檢查機(jī)制,用戶在管理節(jié)點(diǎn)通過(guò)grctl cluster
命令即可查詢整個(gè)集群的故障點(diǎn),或使用監(jiān)控報(bào)警系統(tǒng)及時(shí)發(fā)現(xiàn)集群故障。當(dāng)集群某個(gè)節(jié)點(diǎn)出現(xiàn)問(wèn)題時(shí)首先定位故障的服務(wù),并查看其運(yùn)行日志處理故障。如果有未完善的健康檢測(cè)項(xiàng)目,用戶可以通過(guò)上訴節(jié)點(diǎn)健康檢測(cè)配置方式自定義檢測(cè)項(xiàng)目。
端口被占用無(wú)法安裝
Rainbond是一個(gè)完整的PaaS平臺(tái)解決方案,所以強(qiáng)烈建議使用干凈的物理機(jī)或虛擬機(jī)安裝Rainbond。 Rainbond網(wǎng)關(guān)節(jié)點(diǎn)直接承接應(yīng)用訪問(wèn)流量,因此其默認(rèn)占用80\443等關(guān)鍵端口。另外Rainbond安裝Ansible默認(rèn)使用的SSH端口是22,嚴(yán)格運(yùn)維時(shí)需要設(shè)置。
數(shù)據(jù)庫(kù)安裝初始化失敗
Rainbond 5.1.5及之前版本默認(rèn)安裝的mysql數(shù)據(jù)庫(kù)版本是mariadb 10,其所需的內(nèi)存資源是較大的。如果你的機(jī)器資源有限很大可能導(dǎo)致安裝失敗。后續(xù)的版本中我們將默認(rèn)安裝的數(shù)據(jù)庫(kù)版本升級(jí)到Mysql 5.7系列。
高可用安裝怎么做
本文主要描述了整個(gè)安裝原理,因此你閱讀本文應(yīng)該可以總結(jié)出Rainbond高可用安裝的關(guān)鍵,我們近期也會(huì)再次更新高可用安裝操作指南。
Rainbond能否安裝在Mac或Windows系統(tǒng)
Rainbond計(jì)算節(jié)點(diǎn)可以支持Windows操作系統(tǒng)來(lái)運(yùn)行Windows應(yīng)用,目前Windows的支持是企業(yè)版功能之一,因此開(kāi)源安裝腳本暫不支持Windows 節(jié)點(diǎn)的快速安裝。Mac操作系統(tǒng)不適合安裝Rainbond。開(kāi)發(fā)者可以將部分組件運(yùn)行在Mac下運(yùn)行開(kāi)發(fā)。
到此,相信大家對(duì)“Rainbond集群安裝方法和運(yùn)維原理是什么”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
分享文章:Rainbond集群安裝方法和運(yùn)維原理是什么
轉(zhuǎn)載來(lái)源:http://muchs.cn/article36/ghhjsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站設(shè)計(jì)公司、定制網(wǎng)站、軟件開(kāi)發(fā)、品牌網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)