摘要:基于的私有云混合云構(gòu)建方案蘇依蜀黍是一個(gè)開源的引擎,可以輕松的為任何應(yīng)用創(chuàng)建一個(gè)輕量級的可移植的自給自足的容器。開發(fā)者在筆記本上編譯測試通過的容器可以批量地在生產(chǎn)環(huán)境中部署,包括虛擬機(jī)集群和其他的基礎(chǔ)應(yīng)用平臺(tái)。
container-as-a-service-0x01 -- 基于Docker的私有云&混合云構(gòu)建方案
whatBy 蘇依蜀黍 . 2016.06.07
Docker是一個(gè)開源的引擎,可以輕松的為任何應(yīng)用創(chuàng)建一個(gè)輕量級的、可移植的、自給自足的容器。開發(fā)者在筆記本上編譯測試通過的容器可以批量地在生產(chǎn)環(huán)境中部署,包括VMs(虛擬機(jī))、bare metal、OpenStack 集群和其他的基礎(chǔ)應(yīng)用平臺(tái)。
DevOps近年大熱,Docker也被各大云服務(wù)提供商廣泛支持,他的應(yīng)用場景如下且不止于此:
web應(yīng)用的自動(dòng)化打包和發(fā)布
自動(dòng)化測試和持續(xù)集成、發(fā)布
在服務(wù)型環(huán)境中部署和調(diào)整數(shù)據(jù)庫或其他的后臺(tái)應(yīng)用
從頭編譯或者擴(kuò)展現(xiàn)有的OpenShift或Cloud Foundry平臺(tái)來搭建自己的PaaS環(huán)境
比如顯著的優(yōu)點(diǎn)有資源獨(dú)立&隔離、環(huán)境的一致性、輕量化、當(dāng)然了,還有一個(gè)大家都想要的特性:"Build Once, Run Everywhere"。
why可是作為一家初創(chuàng)公司,為什么我們要構(gòu)建所謂的"私有云&混合云"?
作為一個(gè)實(shí)用主義,上述的特性或者說應(yīng)用場景,最能夠吸引我的大概只有"Build Once, Run Everywhere",然后這仍然不足以成為要推動(dòng)該方案落地的動(dòng)力,why?
我們可能以及未來要應(yīng)對的需求主要有以下幾點(diǎn):
快速擴(kuò)容(應(yīng)對可能出現(xiàn)的高并發(fā)需求)
快速減容(媒體相關(guān)的內(nèi)容具有時(shí)效性,社交類信息存在訪問高峰與低谷)
動(dòng)態(tài)遷移(不停機(jī)更新、實(shí)時(shí)遷移服務(wù),備份,容災(zāi)等)
統(tǒng)一入口(單一或者相對固定的入口,后端服務(wù)的遷移不再影響前端業(yè)務(wù))
持續(xù)集成(包含測試,上線,回滾等功能)
應(yīng)對上述的需求,其實(shí)完全可以找到對應(yīng)的替代方案:
動(dòng)態(tài)擴(kuò)容——使用Aliyun或者Amazon的AutoScale類服務(wù),自動(dòng)控制服務(wù)器數(shù)量
動(dòng)態(tài)遷移——使用中間件如nginx,upstream不停機(jī)更新
統(tǒng)一入口——Route53或者ELB/SLB做端口轉(zhuǎn)發(fā),負(fù)載均衡后端再次使用VPC內(nèi)網(wǎng)轉(zhuǎn)發(fā)
持續(xù)集成——使用Jenkins&Webhook搭建自動(dòng)化平臺(tái)、或者使用Webhook與應(yīng)用中心,程序注冊為應(yīng)用中心應(yīng)用,動(dòng)態(tài)監(jiān)測,自動(dòng)更新
但是,看看上面的內(nèi)容就可以了解到,對初創(chuàng)公司而言,要做這些事情,并不簡單,沒有那么多的人力物力去做,但是,業(yè)務(wù)在這里,我們不可能不做,怎么辦?
how這里我們開始今天的主題:
基于Docker的私有云&混合云構(gòu)建方案
基于該主題,我們要先理清一些Docker相關(guān)的概念并就該方面會(huì)遇到的問題做一些解答
host/hodeHost/Node即物理服務(wù)器或者云服務(wù)器,它是一切服務(wù)運(yùn)行的基石,所有的應(yīng)用&服務(wù)都運(yùn)行其上,包含了:
Docker Engine (Docker引擎,運(yùn)行容器)
App(容器應(yīng)用,如Web服務(wù))
Agent(*容器應(yīng)用,特殊的容器應(yīng)用,將該Host注冊到容易的管理平臺(tái))
Proxy(*容器應(yīng)用,特殊的容器應(yīng)用,用來在內(nèi)網(wǎng)進(jìn)行轉(zhuǎn)發(fā))
我們的Host使用了Aliyun以及Amazon的云服務(wù)器,動(dòng)態(tài)伸縮包含:
服務(wù)器動(dòng)態(tài)伸縮
應(yīng)用動(dòng)態(tài)伸縮(通過Docker管理服務(wù)進(jìn)行管理)
服務(wù)器如何動(dòng)態(tài)伸縮要實(shí)現(xiàn)的功能是:
調(diào)用API開通/銷毀Ecs
記錄Ecs信息如:ip/user/passwd/region/info(配置信息)
注冊Ecs到管理平臺(tái)
containercontainer即運(yùn)行的服務(wù)或者應(yīng)用,如nodejs的前端應(yīng)用、php的后端服務(wù)、python的媒體處理等,當(dāng)然還可以包括mongodb/mysql/redis等數(shù)據(jù)服務(wù)
開發(fā),采用ansible docker或者各自環(huán)境的官方repo對不同運(yùn)行環(huán)境的應(yīng)用進(jìn)行容器化,其實(shí)比較簡單,針對不同的運(yùn)行環(huán)境在項(xiàng)目里加入一個(gè)dockerfile即可,并不需要開發(fā)者做過多的配置
構(gòu)建,這里我們有多種選擇(使用Aliyun或者Daocloud的自動(dòng)構(gòu)建,在內(nèi)網(wǎng)配置機(jī)器自行構(gòu)建也可以,方案較多,省時(shí)省力的方式自然是使用第三方服務(wù)了)
測試,可以選擇在dockerfile中執(zhí)行test或者在推送到test分支,并部署到test服務(wù)器,人肉測試,按需選擇
CI,CI這里我們可以注冊gitlab的runner或者是直接使用daocloud的CI,按需選擇
elb/slb集群處理上,我們選擇在同一個(gè)region內(nèi),使用一個(gè)slb/elb做負(fù)載均衡,其他服務(wù)器不開通外網(wǎng)服務(wù),在內(nèi)部針對一組應(yīng)用配合一個(gè)nginx或者h(yuǎn)aproxy成為一個(gè)服務(wù)/應(yīng)用單元,多個(gè)這樣的單元成為一個(gè)當(dāng)前可用區(qū)的內(nèi)部服務(wù),通過負(fù)載均衡擁有統(tǒng)一的入口
slb/elb: 80:80 {frontend service} -- 應(yīng)用單元 {frontend service} -- host_x0 nginx:80 host_x0_1 host_x0_2 ... 8080:8080 {backend service} -- 服務(wù)單元 {backend service} -- host_x1 nginx:80 host_x1_1 host_x2_1 ...dns/cdn
基于region構(gòu)建集群,仍然不能完美解決跨區(qū)域的入口統(tǒng)一問題,所以這時(shí)候我們有兩種方案可選:
基于dns的負(fù)載均衡,可使用dnspod,添加多個(gè)記錄,對應(yīng)到同一個(gè)域名的不同加速域名
基于cdn的方案,則是添加多個(gè)回源ip,但是注意一下,該ip,是slb/elb的ip
architect practice這里我們使用rancher作為docker host的管理中心,在每一個(gè)host上運(yùn)行一個(gè)rancher-agent與rancher-server進(jìn)行通訊,并以此來完成基于應(yīng)用的快速伸縮,當(dāng)然,我們的服務(wù)中不包含data-service,也不包含storage-service,我們使用阿里云的oss作為存儲(chǔ)服務(wù),使用rds作為數(shù)據(jù)庫,將更多精力放在開發(fā)以及業(yè)務(wù)上
環(huán)境:云上主機(jī):阿里云Ecs/亞馬遜Ec2(Ubuntu14.10/Centos7.x)
負(fù)載均衡:阿里云負(fù)載均衡器
容器管理:rancher-server
配置Host都已經(jīng)預(yù)裝了docker-engine,并且在杭州可用區(qū)B
Rancher-server安裝在該區(qū)域內(nèi)的一臺(tái)獨(dú)立主機(jī)上,具有外網(wǎng)訪問ip,該機(jī)器暫時(shí)不使用負(fù)載均衡(后期會(huì)用)
運(yùn)行
rancher-server
docker run -d --restart=always -p 8080:8080 rancher/server
rancher-agent(add hosts)
docker run -d --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.0.1 {Server_Domain}:{Server_Port}/v1/scripts/{registrationToken}管理
一段時(shí)間后就看到在rancher-server的控制臺(tái)里看到有如下機(jī)器:
此時(shí)Stacks中創(chuàng)建一個(gè)Nginx-Test的Stack,創(chuàng)建一個(gè)Service(包含多個(gè)nginx的container),創(chuàng)建一個(gè)load balancer
其結(jié)構(gòu)如下:
并能夠根據(jù)需求動(dòng)態(tài)伸縮應(yīng)用數(shù)量:
最后,我們需要將load balancer配置為elb/slb服務(wù)的后端,并最終將服務(wù)暴露到外網(wǎng)。
morehttp://docs.daocloud.io/
http://docs.rancher.com/
container-as-a-service-0x00
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/26619.html
container-as-a-service-0x00 -- 基于Docker的私有云&混合云搭建需求 preface 使用docker對node以及php等程序進(jìn)行打包以實(shí)現(xiàn)快速分發(fā)部署上線后,隨之而來的需求是: 統(tǒng)一更大規(guī)模的服務(wù)器集群為資源池,即不再區(qū)分具體的服務(wù)器,而是將所有的服務(wù)器資源歸為一個(gè)資源池,根據(jù)需要,隨時(shí)創(chuàng)建移除資源,以應(yīng)對更大數(shù)量的資源請求以及,減少資源浪費(fèi)。故而,我們使用n...
container-as-a-service-0x02 -- 項(xiàng)目構(gòu)建&部署之道 By 蘇依蜀黍 . 2016.06.08 分析 之前寫了兩篇,算是比較完善的稱述了就目前的業(yè)務(wù),容器服務(wù)在我司的應(yīng)用,但是沒有比較具體的講如何構(gòu)建以及部署,所以這一篇主要講如何對項(xiàng)目進(jìn)行容器化以及如何部署,對我司業(yè)務(wù)分類以后可以有以下幾種類型: python應(yīng)用 node.js應(yīng)用 php應(yīng)用 nginx服務(wù) ...
摘要:現(xiàn)目前云服務(wù)在哪里現(xiàn)在的應(yīng)用程序水平云服務(wù),比如說的或者是谷歌的,會(huì)提供全面管理服務(wù)給工程師,在這里你可以在不需要努力維護(hù)的基礎(chǔ)上創(chuàng)建一個(gè)應(yīng)用程序。谷歌的非基礎(chǔ)設(shè)施服務(wù),比如他們的,可以被部署在任意公有云上,甚至可以通過部署到本地?cái)?shù)據(jù)中心。 重做云服務(wù) 在之前的博客中,我寫過開源軟件如何作為服務(wù)被交付,而不是從二進(jìn)制文件角度來看它們。這些開源服務(wù)交付一個(gè)免費(fèi)、開放、靈活的服務(wù),工程師用...
摘要:現(xiàn)目前云服務(wù)在哪里現(xiàn)在的應(yīng)用程序水平云服務(wù),比如說的或者是谷歌的,會(huì)提供全面管理服務(wù)給工程師,在這里你可以在不需要努力維護(hù)的基礎(chǔ)上創(chuàng)建一個(gè)應(yīng)用程序。谷歌的非基礎(chǔ)設(shè)施服務(wù),比如他們的,可以被部署在任意公有云上,甚至可以通過部署到本地?cái)?shù)據(jù)中心。 重做云服務(wù) 在之前的博客中,我寫過開源軟件如何作為服務(wù)被交付,而不是從二進(jìn)制文件角度來看它們。這些開源服務(wù)交付一個(gè)免費(fèi)、開放、靈活的服務(wù),工程師用...
摘要:活動(dòng)時(shí)間沒有寫明,估計(jì)是長期活動(dòng)活動(dòng)入口機(jī)柜托管年度底價(jià)免費(fèi)為用戶提供機(jī)房遷移協(xié)助混合云數(shù)據(jù)打通等解決方案。此次促銷的機(jī)柜托管服務(wù)在北京昌平數(shù)據(jù)中心和上海顓橋數(shù)據(jù)中心。UCloud優(yōu)刻得上線了UCloud混合云+自建機(jī)房|火爆預(yù)售 官方補(bǔ)貼活動(dòng),UCloud可提供公有云+機(jī)柜托管+混合云+私有云的全棧式云服務(wù),超高性價(jià)?,靈活可定制?;顒?dòng)包括最新促銷(機(jī)柜7.5折起)、新機(jī)房預(yù)售、機(jī)柜托管、...
閱讀 2805·2021-11-17 09:33
閱讀 4483·2021-09-22 15:57
閱讀 2879·2019-08-30 14:16
閱讀 3142·2019-08-29 14:07
閱讀 2421·2019-08-26 11:55
閱讀 3435·2019-08-23 17:07
閱讀 1733·2019-08-23 16:50
閱讀 2545·2019-08-23 16:08