容器技术是目前非常流行的技术,尤其是在以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,无法公网访问,运行一些默认的计算:

安装配置acs-engine

1.在Go语言官网下载适合你的操作系统的安装包,例如Ubuntu下载安装go 语言包:

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

官网地址:https://golang.org/dl/

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部署

使用ARM模板在Azure中国大规模部署DCOS集群的更多相关文章

  1. 【Azure Developer】Github Action部署资源(ARM模板)到Azure中国区时,遇见登录问题的解决办法

    问题描述 在参考文档"使用 GitHub Actions 部署 ARM 模板"一文中,由于是在中国区Azure上操作,所以生产的部署凭证为中国区凭证.当创建工作流时,在登录到Azu ...

  2. [CB]IPv6 在中国 - 大规模部署进行中 进展明显

    IPv6 在中国 - 大规模部署进行中 进展明显 2019年02月04日 08:21 3078 次阅读 稿源:solidot 0 条评论 中国有着世界上最大的网民人口,但它的 IPv6 普及度却处于世 ...

  3. 使用acs-engine在Azure中国区部署kubernetes集群详解

    转载请注明出处:http://www.cnblogs.com/wayneiscoming/p/7649642.html 1. acs-engine简介 ACS是微软在2015年12月推出的一项基于容器 ...

  4. Azure vm 扩展脚本自动部署Elasticsearch集群

    一.完整过程比较长,我仅给出Azure vm extension script 一键部署Elasticsearch集群的安装脚本,有需要的同学,可以邮件我,我给你完整的ARM Template 如果你 ...

  5. 庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群

    庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群 一.简介      前面的两篇文章,我们已经介绍了Net Core项目基于Docker容器部署在Linux服 ...

  6. MariaDB Galera Cluster 部署(如何快速部署MariaDB集群)

    MariaDB Galera Cluster 部署(如何快速部署MariaDB集群) [日期:--] 来源:Linux社区 作者:Linux [字体:大 中 小] MariaDB作为Mysql的一个分 ...

  7. 在CentOS7部署zookeeper集群以及简单API使用

    一.部署zookeeper集群 zookeeper是一个针对大型分布式系统的协调系统,提供的功能有统一名称服务.分布式同步等. 1.上传zk安装包 2.解压     tar -xzvf zookeep ...

  8. 二进制安装部署kubernetes集群---超详细教程

    本文收录在容器技术学习系列文章总目录 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建完成后整理的个人心得,分享给大家~~~ 本文所需的安装包,都上传在我的网盘中,需要的可以打赏博主一杯咖啡钱 ...

  9. 高可用Kubernetes集群-14. 部署Kubernetes集群性能监控平台

    参考文档: Github介绍:https://github.com/kubernetes/heapster Github yaml文件: https://github.com/kubernetes/h ...

随机推荐

  1. Java学习笔记--集合元素的比较Comparable,Comparator

    原文见: http://www.cnblogs.com/sunflower627/p/3158042.html 1. Comparator 和 Comparable 相同的地方 他们都是java的一个 ...

  2. Linux Makefile自动生成--config.h

    Linux Makefile自动生成--config.h http://blog.csdn.net/spch2008/article/details/12510805

  3. leetcode_Search in Rotated Sorted Array II

    Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...

  4. msg="No symbol table is loaded. Use the \"file\" command."

    用Eclipse调试的时候,下断点的unresolved breakpoint,报的是标题上的错误.原因显然是没有加载符号表,需要用gdb的file命令加载符号表. (gdb) file [exec_ ...

  5. Linux企业级项目实践之网络爬虫(20)——扩展成为规则插件模式

    为了方便我们爬虫功能的扩展,最好使用插件机制.使用插件技术能够在分析.设计.开发.项目计划.协作生产和产品扩展等很多方面带来好处:(1)结构清晰.易于理解.由于借鉴了硬件总线的结构,而且各个插件之间是 ...

  6. AzCopy – 上传/下载 Windows Azure Blob 文件

    在我们收到的请求中,有一个频繁出现的请求是提供一种能在 Windows Azure Blob 存储与其本地文件系统之间轻松上传或下载文件的方法.一年半前, 我们很高兴地发布了 AzCopy, Wind ...

  7. 算法导论(第三版)Exercises2.1(插入排序、线性查找、N位大数相加)

    关于练习程序的说明参见置顶的那篇. 2.1-1: 31 41 59 26 41 58 31 41 59 26 41 58 31 41 59 26 41 58 26 31 41 59 41 58 26 ...

  8. Ext中图片上传预览的问题,困扰了好几天终于解决了,记录下

    { columnWidth:.50, xtype:'textfield', style:"padding-top:5px", name:'goodsMainPhoto', id:' ...

  9. [转]用Node.js创建自签名的HTTPS服务器

    用Node.js创建自签名的HTTPS服务器 创建自己的CA机构 创建服务器端证书 创建客户端证书 将证书打包 创建自己的CA机构 为CA生成私钥 openssl genrsa -out ca-key ...

  10. Android_HTML解析器_jsoup

    jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据. Jsou ...