1. Rancher容器管理平臺(tái)簡(jiǎn)介
Rancher是一個(gè)開源的企業(yè)級(jí)容器管理平臺(tái)浑槽。通過Rancher以躯,企業(yè)再也不必自己使用一系列的開源軟件去從頭搭建容器服務(wù)平臺(tái)月匣。Rancher提供了在生產(chǎn)環(huán)境中使用的管理Docker和Kubernetes的全椑荩化容器部署與管理平臺(tái)友鼻。
Rancher由以下四個(gè)部分組成:
- 基礎(chǔ)設(shè)施編排
Rancher可以使用任何公有云或者私有云的Linux主機(jī)資源傻昙。Linux主機(jī)可以是虛擬機(jī),也可以是物理機(jī)彩扔。Rancher僅需要主機(jī)有CPU妆档,內(nèi)存,本地磁盤和網(wǎng)絡(luò)資源虫碉。從Rancher的角度來說贾惦,一臺(tái)云廠商提供的云主機(jī)和一臺(tái)自己的物理機(jī)是一樣的。
Rancher為運(yùn)行容器化的應(yīng)用實(shí)現(xiàn)了一層靈活的基礎(chǔ)設(shè)施服務(wù)。Rancher的基礎(chǔ)設(shè)施服務(wù)包括網(wǎng)絡(luò)须板, 存儲(chǔ)碰镜, 負(fù)載均衡, DNS和安全模塊习瑰。Rancher的基礎(chǔ)設(shè)施服務(wù)也是通過容器部署的绪颖,所以同樣Rancher的基礎(chǔ)設(shè)施服務(wù)可以運(yùn)行在任何Linux主機(jī)上。
- 容器編排與調(diào)度
很多用戶都會(huì)選擇使用容器編排調(diào)度框架來運(yùn)行容器化應(yīng)用甜奄。Rancher包含了當(dāng)前全部主流的編排調(diào)度引擎柠横,例如Docker Swarm, Kubernetes和Mesos课兄。同一個(gè)用戶可以創(chuàng)建Swarm或者Kubernetes集群滓鸠。并且可以使用原生的Swarm或者Kubernetes工具管理應(yīng)用。
除了Swarm第喳,Kubernetes和Mesos之外糜俗,Rancher還支持自己的Cattle容器編排調(diào)度引擎。Cattle被廣泛用于編排Rancher自己的基礎(chǔ)設(shè)施服務(wù)以及用于Swarm集群曲饱,Kubernetes集群和Mesos集群的配置悠抹,管理與升級(jí)。
- 應(yīng)用商店
Rancher的用戶可以在應(yīng)用商店里一鍵部署由多個(gè)容器組成的應(yīng)用扩淀。用戶可以管理這個(gè)部署的應(yīng)用楔敌,并且可以在這個(gè)應(yīng)用有新的可用版本時(shí)進(jìn)行自動(dòng)化的升級(jí)。Rancher提供了一個(gè)由Rancher社區(qū)維護(hù)的應(yīng)用商店驻谆,其中包括了一系列的流行應(yīng)用卵凑。Rancher的用戶也可以創(chuàng)建自己的私有應(yīng)用商店。
- 企業(yè)級(jí)權(quán)限管理
Rancher支持靈活的插件式的用戶認(rèn)證胜臊。支持Active Directory勺卢,LDAP, Github等 認(rèn)證方式象对。 Rancher支持在環(huán)境級(jí)別的基于角色的訪問控制 (RBAC)黑忱,可以通過角色來配置某個(gè)用戶或者用戶組對(duì)開發(fā)環(huán)境或者生產(chǎn)環(huán)境的訪問權(quán)限。
下圖展示了Rancher的主要組件和功能:
2. Rancher容器管理平臺(tái)搭建
2.1 安裝環(huán)境要求
操作系統(tǒng): CentOS 7.0+
內(nèi)存: 1GB+
硬盤: 100GB+
-
數(shù)據(jù)庫(kù): MySQL5.0+
MySQL服務(wù)器需要 max_connections 的設(shè)置 > 150
-
MYSQL配置需求
- 選項(xiàng)1: 用默認(rèn)
COMPACT
選項(xiàng)運(yùn)行Antelope - 選項(xiàng)2: 運(yùn)行MySQL 5.7勒魔,使用Barracuda甫煞。默認(rèn)選項(xiàng)
ROW_FORMAT
需設(shè)置成Dynamic
- 選項(xiàng)1: 用默認(rèn)
-
推薦設(shè)定
- max_packet_size >= 32M
- innodb_log_file_size >= 256M (如果你已有現(xiàn)存數(shù)據(jù)庫(kù),請(qǐng)根據(jù)實(shí)際情況更改此設(shè)定)
- innodb_file_per_table=1
- innodb_buffer_pool_size >= 1GB (對(duì)于更高需求的配置冠绢,請(qǐng)?jiān)趯費(fèi)ySQL服務(wù)器機(jī)器上使用4-8G的值)
服務(wù)依賴:Docker服務(wù)
Rancher版本: Rancher 1.5+
2.2 Rancher Server版本說明
Rancher Server當(dāng)前版本中有2個(gè)不同的標(biāo)簽抚吠。對(duì)于每一個(gè)主要的release標(biāo)簽,我們都會(huì)提供對(duì)應(yīng)版本的文檔弟胀。
-
rancher/server:latest
此標(biāo)簽是我們的最新一次開發(fā)的構(gòu)建版本楷力。這些構(gòu)建已經(jīng)被我們的CI框架自動(dòng)驗(yàn)證測(cè)試喊式。但這些release并不代表可以在生產(chǎn)環(huán)境部署。 -
rancher/server:stable
此標(biāo)簽是我們最新一個(gè)穩(wěn)定的release構(gòu)建弥雹。這個(gè)標(biāo)簽代表我們推薦在生產(chǎn)環(huán)境中使用的版本垃帅。
注: 請(qǐng)不要使用任何帶有
rancher/server:rc{n}
前綴的release。這些都是Rancher構(gòu)建的測(cè)試版本剪勿。
2.3 Rancher部署
2.3.1 單容器部署(使用容器內(nèi)部自帶的MySQL數(shù)據(jù)庫(kù))
在安裝和部署了Docker容器環(huán)境的Linux服務(wù)器上贸诚,使用一個(gè)簡(jiǎn)單的命令就可以啟動(dòng)一個(gè)單實(shí)例的Rancher。
$ sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server
2.3.2 單容器部署(使用外部MySQL數(shù)據(jù)庫(kù))
除了使用內(nèi)部的數(shù)據(jù)庫(kù)厕吉,你可以啟動(dòng)一個(gè)Rancher Server并使用一個(gè)外部的數(shù)據(jù)庫(kù)酱固。啟動(dòng)命令與之前一樣,但添加了一些額外的參數(shù)去說明如何連接你的外部數(shù)據(jù)庫(kù)头朱。
使用外部數(shù)據(jù)庫(kù)运悲,需要提前創(chuàng)建數(shù)據(jù)庫(kù)名和數(shù)據(jù)庫(kù)用戶,Rancher服務(wù)啟動(dòng)后會(huì)自動(dòng)創(chuàng)建Rancher管理平臺(tái)需要的數(shù)據(jù)庫(kù)表项钮。以下為相關(guān)的建庫(kù)腳本班眯, 可供參考:
> CREATE DATABASE IF NOT EXISTS cattle COLLATE = 'utf8_general_ci' CHARACTER SET = 'utf8';
> GRANT ALL ON cattle.* TO 'cattle'@'%' IDENTIFIED BY 'cattle';
> GRANT ALL ON cattle.* TO 'cattle'@'localhost' IDENTIFIED BY 'cattle';
啟動(dòng)一個(gè)Rancher連接一個(gè)外部數(shù)據(jù)庫(kù),你需要在啟動(dòng)容器的命令中添加額外參數(shù)烁巫。
$ sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server \
--db-host 192.168.202.44 --db-port 3306 --db-user username --db-pass password --db-name cattle
大部分的輸入?yún)?shù)都有默認(rèn)值并且是可選的署隘,只有MySQL數(shù)據(jù)庫(kù)主機(jī)地址配置項(xiàng)是必須配置的。
--db-host 數(shù)據(jù)庫(kù)主機(jī)名或IP地址
--db-port 數(shù)據(jù)庫(kù)服務(wù)端口(默認(rèn)為:3306)
--db-user 數(shù)據(jù)庫(kù)用戶名(默認(rèn)為:cattle)
--db-pass 數(shù)據(jù)庫(kù)用戶密碼(默認(rèn)為:cattle)
--db-name 數(shù)據(jù)庫(kù)名(默認(rèn)為:cattle)
2.3.3 高可用集群部署
在高可用(HA)的模式下運(yùn)行Rancher Server與單容器部署方式一樣簡(jiǎn)單亚隙,但需要暴露一個(gè)額外的服務(wù)端口用于實(shí)現(xiàn)集群節(jié)點(diǎn)之間的通訊磁餐,需要添加額外的參數(shù)到啟動(dòng)命令中,并且運(yùn)行一個(gè)外部的負(fù)載均衡就可以了阿弃。
1. HA部署需求
- HA 節(jié)點(diǎn):
-
9345
,8080
端口需要在各個(gè)節(jié)點(diǎn)之間能夠互相訪問 - 至少1GB內(nèi)存
-
- MySQL數(shù)據(jù)庫(kù)
- 至少 1 GB內(nèi)存
- 每個(gè)Rancher Server節(jié)點(diǎn)需要50個(gè)連接 (例如:3個(gè)節(jié)點(diǎn)的Rancher則需要至少150個(gè)連接)
- MYSQL配置要求
- 選項(xiàng)1: 用默認(rèn)
COMPACT
選項(xiàng)運(yùn)行Antelope - 選項(xiàng)2: 運(yùn)行MySQL 5.7诊霹,使用Barracuda。默認(rèn)選項(xiàng)
ROW_FORMAT
需設(shè)置成Dynamic
- 選項(xiàng)1: 用默認(rèn)
- 外部負(fù)載均衡服務(wù)器
- 負(fù)載均衡服務(wù)器需要能訪問Rancher Server節(jié)點(diǎn)的
8080
端口
- 負(fù)載均衡服務(wù)器需要能訪問Rancher Server節(jié)點(diǎn)的
注意:目前Rancher中并不支持Docker for Mac
2. 大規(guī)模部署建議
- 每一個(gè)Rancher Server節(jié)點(diǎn)需要有4 GB 或者8 GB的堆空間渣淳,意味著需要8 GB或者16 GB內(nèi)存
- MySQL數(shù)據(jù)庫(kù)需要有高性能磁盤
- 對(duì)于一個(gè)完整的HA脾还,建議使用一個(gè)有備份的MySQL數(shù)據(jù)庫(kù)。另一種選擇則是使用MySQL集群(Galera)水由。
3. 部署步驟
-
在每個(gè)需要加入Rancher Server HA集群的節(jié)點(diǎn)上荠呐,運(yùn)行以下命令:
$ docker run -d --restart=unless-stopped -p 8080:8080 -p 9345:9345 \ rancher/server --db-host 1952.168.202.44 --db-port 3306 \ --db-user Cattle --db-pass cattle --db-name cattle \ --advertise-address <IP_of_the_Node>
在每個(gè)節(jié)點(diǎn)上,
<IP_of_the_Node>
需要在每個(gè)節(jié)點(diǎn)上唯一砂客,因?yàn)檫@個(gè)IP會(huì)被添加到HA的設(shè)置中。如果你修改了
-p 8080:8080
并在host上暴露了一個(gè)不一樣的端口呵恢,你需要添加--advertise-http-port <host_port>
參數(shù)到命令中鞠值, 如下所示:$ docker run -d --restart=unless-stopped -p 8000:8080 -p 9345:9345 \ rancher/server --db-host 1952.168.202.44 --db-port 3306 \ --db-user Cattle --db-pass cattle --db-name cattle \ --advertise-address 192.168.202.15 --advertise-http-port 8000
ADVERTISE-ADDRESS參數(shù)配置說明:
- 使用IP地址
--advertise-address 192.168.202.14
- 使用網(wǎng)絡(luò)接口
--advertise-address eth0
- 使用IP地址
在負(fù)載均衡應(yīng)用(如Nginx、HAProxy等)中添加負(fù)載均衡配置渗钉,這個(gè)負(fù)責(zé)均衡負(fù)責(zé)將例如
80
或443
端口的流量彤恶,轉(zhuǎn)發(fā)到運(yùn)行Rancher Server的節(jié)點(diǎn)的8080
端口中钞钙。負(fù)載均衡器必須支持websockets 以及 forwarded-for 的Http請(qǐng)求頭以支持Rancher的功能。
4. 注意事項(xiàng)
如果修改了Rancher集群節(jié)點(diǎn)上的IP地址声离,Rancher集群上該節(jié)點(diǎn)將不會(huì)再提供服務(wù)芒炼,此時(shí)需要?jiǎng)h除修改IP地址的容器節(jié)點(diǎn)服務(wù), 并重新運(yùn)行新的容器并配置修改后的IP地址术徊。