设为首页 收藏本站
查看: 1226|回复: 0

[经验分享] 使用ARM模板在Azure中国大规模部署DCOS集群

[复制链接]

尚未签到

发表于 2017-6-30 14:42:48 | 显示全部楼层 |阅读模式
  容器技术是目前非常流行的技术,尤其是在以Docker作为容器引擎的推动下,让容器的轻量级,可移植,自包含,隔离性等的上了一个新的台阶,目前谈及Dev/Ops,CI/CD很少能够绕过Docker的。
  Azure在去年就推出了容器服务ACS,以其对开源的全面兼容性,开放性,最全面的编排器(DC/OS, Kubernetes,Swarm)支持而广受好评,但在中国和很多地区,ACS并没有上线,如何在这些地区快速大规模部署容器服务一直是个问题。
  而微软更进一步,在11月初,进一步开源了ACS的核心引擎acs-engine,让开发人员可以通过acs-engine快速的生成可以在所有地区当然包括中国部署的ARM模板,并且并不依赖于ACS Container resource provider,对于广大开发和维护人员来说是一大喜讯,不必像我一样为了在Azure中国上部署DC/OS cluster而辛苦调试修改脚本和ARM模板了:)
  新闻:http://www.forbes.com/sites/janakirammsv/2016/11/07/microsoft-open-sources-azure-container-service-adds-support-for-kubernetes/#48e955d270ad
  Acs-engine官方地址:https://github.com/Azure/acs-engine
  很多牛人已经写了一些非常棒的acs-engine的文章,本文是按照我实际测试整理而成的,将碰到的一些问题,解决办法等记录下来,希望对于大家快速部署有所帮助。
  首先简单了解一下本次DC/OS集群的部署架构图,我们有一个master的高可用集,master可以选择1,3,5台虚拟机;有一个public agent的VMSS集合主要部署面向互联网用户访问的应用;一个private agent的VMSS,无法公网访问,运行一些默认的计算:
DSC0000.png

安装配置acs-engine

1.在Go语言官网下载适合你的操作系统的安装包,例如Ubuntu下载安装go 语言包:  wget https://storage.googleapis.com/golang/go1.7.3.linux-amd64.tar.gz
  官网地址:https://golang.org/dl/
DSC0001.png

  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
DSC0002.png


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
DSC0003.png


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
DSC0004.png


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
DSC0005.png

  #创建resource group:
  azure group create --name="stevenacsdcosgp" --location="China East"
DSC0006.png

  #执行部署:
  azure group deployment create --name="mydcoschinadeploy" --resource-group="stevenacsdcosgp" --template-file="./_output/DCOS184-10726092/azuredeploy.json" --parameters-file="./_output/DCOS184-10726092/azuredeploy.parameters.json"
DSC0007.png


10.部署完成后,你可以在新的portal里面看到部署成功信息,在我的实际环境里面部署,整个过程只需要8分多种,请记录下下图黄色高亮显示的master地址:
DSC0008.png


11.然后我们需要连接到dc/os的集群,使用上图中的masterQFDN地址,端口为2200,使用你的private key file(ppk文件),建立tunnel端口为80,进行连接:
DSC0009.png

  Auth配置:
DSC00010.png

  Tunnel配置:

12.连接之后,打开你的浏览器,输入http://localhost/,看到如下DC/OS的dashboard,你就可以愉快的和Docker,DC/OS玩耍了:
DSC00011.png

  TIPS:如果你碰巧很不幸,配置SSH Tunnel的时候,无法链接,检查putty event log,看到Permission Denied错误,我已经找到了解决办法,为节约你的时间,请按照如下方法执行:
DSC00012.png

  检查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

  • 克隆或者下载当前所有文件
  • 修改azuredeploy.json中的http://YOURCHINASERVER为你自己的服务器,
  • 修改azuredeploy.parameters.json中的所有标为CHANGIT的地方
  • 修改deploy.ps1文件中deployName作为你的资源组名称
  • 登陆你的Azure账户,使用ARM模式,执行deploy.ps1部署
  • Linux和Mac用户也可以使用Azure CLI部署

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-389696-1-1.html 上篇帖子: C# 消息队列-Microsoft Azure service bus 服务总线 下篇帖子: Azure ARM (7) ARM Template
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表