使用ARM模板在Azure中國大規模部署DCOS集羣

容器技術是目前很是流行的技術,尤爲是在以Docker做爲容器引擎的推進下,讓容器的輕量級,可移植,自包含,隔離性等的上了一個新的臺階,目前談及Dev/Ops,CI/CD不多可以繞過Docker的。linux

Azure在去年就推出了容器服務ACS,以其對開源的全面兼容性,開放性,最全面的編排器(DC/OS, Kubernetes,Swarm)支持而廣受好評,但在中國和不少地區,ACS並無上線,如何在這些地區快速大規模部署容器服務一直是個問題。git

而微軟更進一步,在11月初,進一步開源了ACS的核心引擎acs-engine,讓開發人員能夠經過acs-engine快速的生成能夠在全部地區固然包括中國部署的ARM模板,而且並不依賴於ACS Container resource provider,對於廣大開發和維護人員來講是一大喜訊,沒必要像我同樣爲了在Azure中國上部署DC/OS cluster而辛苦調試修改腳本和ARM模板了:)github

新聞:http://www.forbes.com/sites/janakirammsv/2016/11/07/microsoft-open-sources-azure-container-service-adds-support-for-kubernetes/#48e955d270adgolang

Acs-engine官方地址:https://github.com/Azure/acs-enginedocker

不少牛人已經寫了一些很是棒的acs-engine的文章,本文是按照我實際測試整理而成的,將碰到的一些問題,解決辦法等記錄下來,但願對於你們快速部署有所幫助。json

首先簡單瞭解一下本次DC/OS集羣的部署架構圖,咱們有一個master的高可用集,master能夠選擇1,3,5臺虛擬機;有一個public agent的VMSS集合主要部署面向互聯網用戶訪問的應用;一個private agent的VMSS,沒法公網訪問,運行一些默認的計算:bootstrap

安裝配置acs-engine

1.在Go語言官網下載適合你的操做系統的安裝包,例如Ubuntu下載安裝go 語言包:

wget https://storage.googleapis.com/golang/go1.7.3.linux-amd64.tar.gzubuntu

官網地址:https://golang.org/dl/api

 

 

2.Linux下在你的用戶目錄下創建一個子目錄gopath,而且添加以下行到你的$HOME/.profile文件:瀏覽器

    export PATH=$PATH:/usr/local/go/bin

export GOPATH=$HOME/gopath

 

3.進入你的gopath目錄,下載acs-engine並更新相關組件:

go get github.com/Azure/acs-engine

go get all

4.打開parts下的dcosprovision.sh文件,你能夠看到不少包都須要從國外下載,因爲GFW的緣由,你的安裝會變得很是緩慢,或者失敗,首先下載下述包到你的本地服務器,創建鏡像:

從如下地址:

https://dcosio.azureedge.net/dcos/testing/bootstrap

https://az837203.vo.msecnd.net/dcos-deps

下載下面的包到你的中國的鏡像服務器:

5b4aa43610c57ee1d60b4aa0751a1fb75824c083.bootstrap.tar.xz(約551M)

docker-engine_1.11.2-0~xenial_amd64.deb

ipset_6.29-1_amd64.deb

libipset3_6.29-1_amd64.deb

libltdl7_2.4.6-0.1_amd64.deb

unzip_6.0-20ubuntu1_amd64.deb

5.進入到你的acs-engine根目錄,build你的acs-engine:

cd $GOPATH/src/github.com/Azure/acs-engine

go build

./acs-engine

6.能夠看到,若是要產生json模版,你須要的是一個ClusterDefinitionFile,在example下有各類例子文件,咱們以dcos爲例,能夠看到,編輯example/dcos.json,修改以下紅色部分並保存:

"masterProfile": {

"count": 1,

"dnsPrefix": "dcosmaterdemo",

"vmSize": "Standard_D2"

},

{

"name": "agentpublic",

"count": 3,

"vmSize": "Standard_D2",

"dnsPrefix": "dcosagentdemo",

"ports": [

80,

443,

8080

]

}

"publicKeys": [

{

"keyData": "YOURKEY"

}

]

7.運行acs-engine,產生你的ARM template

./acs-engine examples/dcos.json

8.這一步很重要,須要你手工打開生成的azuredeploy.json文件,修改下面的CDN下載源爲你的中國鏡像地址,不然你的部署會失敗:

https://dcosio.azureedge.net/dcos/testing/bootstrap

https://az837203.vo.msecnd.net/dcos-deps

9.剩下的事情就比較好辦了,使用Azure CLI來部署你的DC/OS集羣:

#使用Azure CLI登錄中國的Azure:

azure login -u USERNAME -p PASSWORD -e AzureChinaCloud

#建立resource group:

azure group create --name="stevenacsdcosgp" --location="China East"

#執行部署:

azure group deployment create --name="mydcoschinadeploy" --resource-group="stevenacsdcosgp" --template-file="./_output/DCOS184-10726092/azuredeploy.json" --parameters-file="./_output/DCOS184-10726092/azuredeploy.parameters.json"

10.部署完成後,你能夠在新的portal裏面看到部署成功信息,在個人實際環境裏面部署,整個過程只須要8分多種,請記錄下下圖黃色高亮顯示的master地址:

11.而後咱們須要鏈接到dc/os的集羣,使用上圖中的masterQFDN地址,端口爲2200,使用你的private key file(ppk文件),創建tunnel端口爲80,進行鏈接:

Auth配置:

Tunnel配置:

12.鏈接以後,打開你的瀏覽器,輸入 http://localhost/,看到以下DC/OS的dashboard,你就能夠愉快的和Docker,DC/OS玩耍了:

TIPS:若是你碰巧很不幸,配置SSH Tunnel的時候,沒法連接,檢查putty event log,看到Permission Denied錯誤,我已經找到了解決辦法,爲節約你的時間,請按照以下方法執行:

檢查netstat -aon | findstr "80"

你會看到有一些服務會使用ntoskrnl佔用80端口,好比ws-Management致使本地tunnel失敗:

net stop http

 

從上述文檔能夠看出,利用acs-engine能夠很是方便的生成適用於中國Azure大規模部署的ARM模板,但其實有了這個模板,簡單修改參數,就能夠重複部署了,不必每次都生成,因此我把生成好的模板已經放到了Github上,想在中國部署的同窗:

https://github.com/kingliantop/azurelabs/tree/master/AzureChinaARMTemplate/mesos-marathon-vmss-china

  1. 克隆或者下載當前全部文件
  2. 修改azuredeploy.json中的http://YOURCHINASERVER爲你本身的服務器,
  3. 修改azuredeploy.parameters.json中的全部標爲CHANGIT的地方
  4. 修改deploy.ps1文件中deployName做爲你的資源組名稱
  5. 登錄你的Azure帳戶,使用ARM模式,執行deploy.ps1部署
  6. Linux和Mac用戶也可使用Azure CLI部署
相關文章
相關標籤/搜索