某股份制商業(yè)銀行定制化PaaS介紹
某股份制商業(yè)銀行的PaaS平臺(tái)是由睿云智合(Wise2C)與Rancher合作,基于Rancher做的定制化開(kāi)發(fā)?;跇I(yè)務(wù)場(chǎng)景和銀行業(yè)的特殊需求,同時(shí)為了兼顧能夠?qū)崿F(xiàn)對(duì)以后Rancher版本的平滑升級(jí),我們?cè)赗ancher之上做了一層邏輯抽象。 一、軟件架構(gòu)與部署方案 整體軟件架構(gòu)如下圖所示: 頂層的DCOS作為統(tǒng)一的管理平臺(tái),可以通過(guò)PaaS以及IaaS提供的API實(shí)現(xiàn)對(duì)云平臺(tái)的集中管控。左側(cè)藍(lán)色部分是原生Rancher,DCOS與紅色定制化部分通過(guò)API來(lái)訪問(wèn)Rancher。由于未對(duì)Rancher做任何改動(dòng),可以做到對(duì)Rancher版本大于1.2的平滑升級(jí)。 紅色部分為定制化邏輯抽象部分,歸納起來(lái)可以按照功能職責(zé)大致分為以下微服務(wù)(后面會(huì)詳細(xì)介紹): 1 鑒權(quán)認(rèn)證 2 資源管理 3 應(yīng)用編排 4 彈性伸縮 5 日志收集 6 監(jiān)控告警 7 鏡像倉(cāng)庫(kù) 這些微服務(wù)在部署時(shí)按照Rancher將infrastructure stack部署到環(huán)境中的思路,使用一個(gè)獨(dú)立的Rancher環(huán)境來(lái)部署這些微服務(wù),部署拓?fù)浣Y(jié)構(gòu)如下圖所示: 圖中每一個(gè)虛線框?qū)?yīng)Rancher中的一個(gè)環(huán)境;“擴(kuò)展ENV”這個(gè)環(huán)境直接使用Rancher server的主機(jī)作為Agent,上面運(yùn)行定制化的微服務(wù)。其他環(huán)境分別對(duì)應(yīng)到某個(gè)租戶的特定網(wǎng)絡(luò),單個(gè)網(wǎng)絡(luò)內(nèi)部流量不使用Rancher原生的overlay,而采用Wise2C實(shí)現(xiàn)的扁平化網(wǎng)絡(luò),網(wǎng)絡(luò)之間流量由外部防火墻控制。 二、角色與權(quán)限模型 PaaS平臺(tái)的角色與權(quán)限模型沿用了Rancher的一部分概念,又引入了自己的內(nèi)容。主要差異在于兩方面: 1 PaaS平臺(tái)引入了對(duì)鏡像倉(cāng)庫(kù)的管理,這在Rancher中是沒(méi)有的;即角色的權(quán)限,除包含操作Rancher外,還能夠操作鏡像倉(cāng)庫(kù)。鏡像倉(cāng)庫(kù)與PaaS的權(quán)限模型是一致的; 2 另外,客戶引入了租戶的概念,這點(diǎn)與Rancher中不同,租戶是可以跨越多個(gè)Rancher的環(huán)境的 Rancher權(quán)限模型: 平臺(tái)管理員: 擁有整個(gè)Rancher平臺(tái)的所有權(quán)限; 環(huán)境用戶: 1 Owner擁有環(huán)境的所有權(quán)限; 2 Member擁有除對(duì)環(huán)境內(nèi)部用戶授權(quán)外的所有權(quán)限; 3 Restricted User擁有環(huán)境內(nèi)部除對(duì)用戶授權(quán)以及操作基礎(chǔ)資源外的所有權(quán)限; 4 Read Only擁有環(huán)境內(nèi)部資源的只讀權(quán)限; PaaS平臺(tái)權(quán)限模型: 平臺(tái)管理員: 等同于Rancher的平臺(tái)管理員權(quán)限再加上對(duì)鏡像倉(cāng)庫(kù)管理的所有權(quán)限; 租戶內(nèi)部角色: 1 租戶管理員擁有管理租戶資源以及對(duì)租戶內(nèi)部用戶進(jìn)行授權(quán)的所有權(quán)限;再加上對(duì)鏡像倉(cāng)庫(kù)管理的所有權(quán)限 2 高級(jí)成員在PaaS平臺(tái)內(nèi)擁有對(duì)租戶內(nèi)用戶授權(quán)以及操作基礎(chǔ)資源外的所有權(quán)限;在鏡像倉(cāng)庫(kù)內(nèi),擁有對(duì)鏡像倉(cāng)庫(kù)設(shè)置鏡像同步規(guī)則、創(chuàng)建、刪除鏡像倉(cāng)庫(kù)Namespace、改變鏡像狀態(tài)等權(quán)限; 3 受限成員在PaaS平臺(tái)內(nèi)擁有對(duì)租戶內(nèi)用戶授權(quán)以及操作基礎(chǔ)資源外的所有權(quán)限;在鏡像倉(cāng)庫(kù)所屬Namespace內(nèi),擁有上傳、下載鏡像的權(quán)限; 4 Read Only在PaaS平臺(tái)內(nèi),擁有查看租戶類(lèi)資源的權(quán)限;在鏡像倉(cāng)庫(kù)所屬Namespace內(nèi),擁有查看鏡像倉(cāng)庫(kù)資源的權(quán)限; 具體映射關(guān)系如下圖所示: 鑒權(quán)部分的軟件設(shè)計(jì)如下所示: 所有對(duì)PaaS訪問(wèn)的API請(qǐng)求均經(jīng)由API proxy做鑒權(quán)控制之后代理到系統(tǒng)內(nèi)部具體的微服務(wù)上。PaaS不直接參與租戶的增刪查改,API proxy通過(guò)與PaaS外部的Keystone通信來(lái)獲取用戶角色以及租戶信息。 三、資源管理 網(wǎng)絡(luò)部分 1 由于金融行業(yè)對(duì)網(wǎng)絡(luò)安全性方面的要求比較苛刻,而Rancher所能夠提供的均是基于某個(gè)環(huán)境內(nèi)部的overlay網(wǎng)絡(luò)。Overlay必然會(huì)導(dǎo)致很多報(bào)文無(wú)法被安全設(shè)備透明的過(guò)濾,這是行業(yè)內(nèi)無(wú)法接受的;因此,必須采用扁平網(wǎng)絡(luò)。 2 處于安全的考慮,會(huì)出現(xiàn)同一個(gè)stack內(nèi)部的多個(gè)service需要分別部署到不同的網(wǎng)絡(luò)分區(qū)的需求,采用當(dāng)前Rancher的managed網(wǎng)絡(luò)顯然無(wú)法滿足需求;因此,必須支持多網(wǎng)絡(luò)。 對(duì)于扁平網(wǎng)絡(luò)的支持,我在之前的文章(在Rancher 1.2中實(shí)現(xiàn)基于CNI的扁平網(wǎng)絡(luò))中有詳細(xì)的介紹,主要是使用ebtable直接在linux bridge上對(duì)流量做控制,從而避免使用overlay;這樣,外部安全設(shè)備能夠透明的看到各個(gè)容器之間的流量。 對(duì)于多網(wǎng)絡(luò)的支持,我們是通過(guò)在Rancher之上實(shí)現(xiàn)一層抽象邏輯來(lái)實(shí)現(xiàn)的。整個(gè)模型演變?yōu)橐粋€(gè)網(wǎng)絡(luò)映射為Rancher的一個(gè)環(huán)境(環(huán)境內(nèi)部運(yùn)行一個(gè)扁平網(wǎng)絡(luò))。這部分主要涉及對(duì)平臺(tái)中所有網(wǎng)絡(luò)的管理,以及維護(hù)租戶與網(wǎng)絡(luò)之間的映射關(guān)系。 下面舉一個(gè)例子來(lái)描述該流程: 1 平臺(tái)管理員在PaaS上創(chuàng)建一個(gè)網(wǎng)絡(luò),指定網(wǎng)絡(luò)的參數(shù)(子網(wǎng)掩碼、網(wǎng)關(guān)、所屬安全域、所屬隔離域等),這些數(shù)據(jù)會(huì)保存到數(shù)據(jù)庫(kù); 2 平臺(tái)管理員根據(jù)需要為租戶分配第一個(gè)網(wǎng)絡(luò);此時(shí),抽象層需要真正在Rancher上創(chuàng)建出網(wǎng)絡(luò)所對(duì)應(yīng)的環(huán)境;以及創(chuàng)建監(jiān)控、日志、以及定制化系統(tǒng)所需的system級(jí)別的應(yīng)用堆棧; 3 當(dāng)平臺(tái)管理員為租戶分配第二個(gè)以上的網(wǎng)絡(luò)時(shí),抽象層還需要將該Rancher環(huán)境與租戶其他網(wǎng)絡(luò)對(duì)應(yīng)的Rancher環(huán)境之間建立env link關(guān)系,否則跨Rancher環(huán)境的應(yīng)用堆棧各service之間無(wú)法使用Rancher DNS進(jìn)行互訪。 存儲(chǔ)部分 客戶PaaS在存儲(chǔ)部分最終選定NFS作為其存儲(chǔ)方案,前期也有討論過(guò)使用ceph等,這部分我在之前的文章(探討容器中使用塊存儲(chǔ))中也有專門(mén)分析過(guò)為什么不選用那種方案。 由于單個(gè)租戶可以擁有多個(gè)網(wǎng)絡(luò)(也就是多個(gè)Rancher環(huán)境),而在Rancher中Rancher-NFS driver所創(chuàng)建volume是基于環(huán)境層面的。為了能夠?qū)⒃搗olume映射到租戶層面,我們?cè)诔橄髮又凶隽诉@層映射操作。 具體流程如下: 1 平臺(tái)管理員在PaaS中指定參數(shù)創(chuàng)建出一個(gè)NFS server;同網(wǎng)絡(luò)一樣,此時(shí)只是將數(shù)據(jù)保存到數(shù)據(jù)庫(kù); 2 平臺(tái)管理員為租戶分配N(xiāo)FS server,此時(shí)抽象層真正操作租戶網(wǎng)絡(luò)所對(duì)應(yīng)的多個(gè)Rancher環(huán)境,在逐個(gè)環(huán)境內(nèi)添加用于提供Rancher-NFS driver的system...
Read More