前言
什么是Azure Container Service(简称ACS)
目前越来越多的企业正在尝试使用容器来构建他们的服务,他们或者在自己的本地数据中心搭建基于容器的集群,或者利用公有云来承载基于容器和微服务的集群架构,然而很多企业发现搭建一套能够适用于生产环境的容器集群并不是一件容易的事情。容器服务集群所带来的高密度和高复杂性的分布式运算使得传统的IT管理和运维手段变得非常的低效。
ACS是微软在2015年12月推出的一项基于容器的云端PaaS服务。ACS的诞生就是为了给企业提供一套经过优化的,可适用于生产环境的,配置简单的基于开源编排框架来简化企业部署容器集群的复杂程度。ACS engine是微软提供的一个 “转换器” ,用户只需要配置几个简单的参数来描述容器集群的规格,然后ACS engine就可以将这个 “集群规格说明” 文档转化成ARM模板来自动化地在Azure公有云上生成容器集群。
ACS完全基于开源组件,目前ACS支持主流的编排框架有:DC/OS,Swarm,Kubernetes。ACS engine也已经在GitHub上开源(https://github.com/azure/acs-engine),企业可以在任何的云平台使用并迁移这套容器服务,避免了对某个平台的耦合。有兴趣的朋友可以下载尝试。
DC/OS介绍
DC/OS是一套企业级的容器编排框架,它不仅支持Docker镜像,同时也支持其他的镜像格式。DC/OS已经被很多著名的公司使用,包括Twitter,Apple,Yelp等等。Azure DC/OS是微软和Mesosphere公司联合开发的分布式容器解决方案。基于这套方案可以为企业带来很多的便利:
* 高可用性 – 基于Marathon编排算法,保证服务的高可用性
* 定制化部署方案 – 方便用户将容器部署到指定的环境中
* 服务发现/负载均衡 – 灵活的服务发现和负载均衡机制,满足业务的弹性扩展
* 服务状态监测 – 实时服务健康状态监测,保证服务随时可用
* 灰度发布 – 实现新旧版本服务的平滑升级和回滚
* 丰富的UI和API接口 – 支持CLI和REST API
ACS Engine架构解读
首先我们可以看一下acs engine的架构图(以DCOS为例):
ACS engine是一个ARM模板生成器,通过acs engine我们可以将预先配置好的集群描述文件转化成一组ARM模板,然后通过azure提供的CLI命令,可以将这组模板部署到Azure上面。下面是一个DC/OS集群描述文件的例子:
{
"apiVersion": "vlabs",
"properties": {
"orchestratorProfile": {
"orchestratorType": "DCOS"
},
"masterProfile": {
"count": 1,
"dnsPrefix": "",
"vmSize": "Standard_D2_v2"
},
"agentPoolProfiles": [
{
"name": "agentprivate",
"count": 3,
"vmSize": "Standard_D2_v2"
},
{
"name": "agentpublic",
"count": 3,
"vmSize": "Standard_D2_v2",
"dnsPrefix": "",
"ports": [
80,
443,
8080
]
}
],
"linuxProfile": {
"adminUsername": "azureuser",
"ssh": {
"publicKeys": [
{
"keyData": ""
}
]
}
}
}
}