使用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部署
相关文章
相关标签/搜索