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