Amazon ECS上的Couchbase Docker容器

该博客将说明如何使用Amazon EC2容器服务 (Amazon ECS)运行Couchbase Docker容器。

非常感谢@moviolone帮助理解了这些概念并使此设置运行。

什么是Amazon ECS?

Amazon ECS是一项容器管理服务,可轻松在Amazon EC2实例集群上运行,停止和管理Docker容器。 Amazon ECS与其余的AWS基础架构很好地集成在一起,无需操作您自己的集群或配置管理系统。

ec2-container-service

一个显而易见的问题是,它与Docker SwarmKubernetesMesos等其他容器编排框架有何不同? 第一个大的不同是这些框架都是开源的。 亚马逊目前使用专有的业务流程框架。

ECS的一大优势在于,就像其他AWS基础架构一样,这是一项托管服务 。 因此,您只需要担心部署容器而无需担心基础架构。

ECS的更好比较是与适用于AWS / Azure的Docker (由Docker中新引入的Swarm Mode支持), Google Container Engine (由Kubernetes支持), DC / OS (由Mesos支持)一样,它们都是托管服务。

ECS的优势在于,它与AWS基础架构无缝集成,例如使用CloudFormation模板部署容器实例,使用Autoscaling Group扩展容器,使用Security Groups进行端口映射,使用Elastic Load Balancer管理传入的容器流量,使用CloudWatch查看日志等。

如果您已经购买了Amazon基础架构,那么ECS听起来很合适。 在DockerCon上宣布的适用于AWS的Docker在该领域也是类似的产品。

但是,您也需要注意几个缺点:

  • 可移植性 –应用程序设计的Docker Swarm,Kubernetes和Mesos可以在各种平台上运行,例如Amazon,Azure,GCE,OpenStack,本地,VMWare,裸机数据中心等。但是ECS仅与Amazon绑定。 您是否将其视为供应商锁定?
    亚马逊可以将其业务流程平台或调度程序作为独立产品发布,但这不是很典型。
  • 容器格式 – ECS服务仅针对Docker容器。 出于所有实际目的,至少在今天,这可能是完全可以的。 我还没有听说过Rkt的部署或任何其他容器格式。 但是,一旦将来开始出现符合OCI的运行时,这种情况可能会改变。

最后一件事,在我们深入研究概念和代码之前,Amazon EC2 Container Service不收取额外费用。 您需要支付为存储和运行应用程序而创建的AWS资源(例如EC2实例或EBS卷)。

Amazon ECS概念

以下是ECS中关键概念的概述:

亚马逊ECS概念

  • 容器实例 :是为运行容器准备的AMI实例。 默认情况下,每个Amazon实例都使用Amazon ECS优化的Linux AMI 。 这是运行ECS容器服务的推荐映像。 该基本映像的关键组件是:
    • Amazon Linux AMI

    可以配置其他映像,例如CoreOS,Suse或Ubuntu,以符合Container Instance AMI规范。 之所以可以这样做,是因为ECS代理代码在开源中可用。

  • 任务 :任务定义为JSON文件,并描述包含一个或多个容器定义的应用程序。 这通常指向注册表,端口/卷映射等中的Docker映像。
  • 服务 :ECS维护您的应用程序的“所需状态”。 这是通过创建服务来实现的。 服务指定在给定时间需要运行的任务定义的实例数。 如果服务中的任务不正常或停止运行,则服务调度程序将弹跳该任务。 它确保所需状态与实际状态匹配。 这就是在ECS中提供弹性的原因。服务中的新任务在群集中的可用区域之间达到平衡。 服务调度程序会找出哪些容器实例可以满足服务需求,并在最佳可用性区域(运行任务最少的一个容器)中的有效容器实例上调度它。

Amazon EC2 Container Service入门

登录到您的AWS EC2控制台 ,然后单击EC2 Container Service

aws-ec2-container-1

单击Get started按钮定义您的应用程序。

创建ECS任务

在ECS中,将Docker工作负载定义为任务。 一个任务可以包含多个容器。 任务的所有容器都位于同一台计算机上。

输入如下所示的值:

aws-ec2-container-2

在此步骤中指定的项目很少:

  • 任务定义是对包含一个或多个容器定义的应用程序的描述。
  • 容器名称是将作为该任务的一部分启动的容器的名称。
  • 映像允许指定一个或多个需要作为容器启动的映像,作为此应用程序的一部分。 此处指定的映像使用couchbase:latest作为基本映像,并使用Couchbase REST API来配置服务器。 该映像的Dockerfile提供了有关如何准备该映像的更多详细信息。
  • 最大内存是需要为容器分配的内存(相当于-m Docker CLI开关)。 Couchbase需要1GB才能在dev中运行,因此在此处指定。
  • 最后是端口映射(在Docker CLI上为-p )。 Couchbase管理需要端口8091。

有关这些的更多详细信息,请参见“ 任务定义参数”

创建ECS服务

单击Next step以配置服务。

aws-ec2-container-3

输入服务名称。 可以在此处指定所需状态。 现在,我们将使其保持简单,并启动一个单节点Couchbase容器。 并且由于所需状态是在单个容器中运行,因此不需要ELB。

有关这些的更多详细信息,请参见服务定义参数

创建ECS集群

任务在容器实例上运行,并且这些实例需要在集群中注册。 这使我们可以在以后扩大/缩小集群,以适应运行更多容器的需要。

单击Next step以配置集群。

aws-ec2-container-4

在此图像中:

  • 采用默认的群集名称
  • 创建容器实例的同质集群。 m3.medium是运行Couchbase节点的合适大小
  • 选择一个先前创建的安全密钥。 这将允许打开与容器实例的ssh连接
  • 将创建一个新的IAM角色,以允许ECS代理与ECS服务进行通信

群集中的容器实例可以跨越多个可用性区域,并且可以与ELB进行平衡。

查看所有指定的选项:

aws-ec2-container-5

单击Launch instance & run service按钮以启动服务。

创建服务后,将显示以下状态:

aws-ec2-container-6

输出显示集群,服务和任务定义已创建。 配置和初始化实例以及在它们上运行任务需要几分钟。

查看ECS服务和任务

单击View Service按钮以查看新创建的服务。

AWS-EC2-容器-7-1024x750

此图片中的几件事:

  • 该服务显示任务定义couchbase:6 。 每个服务都分配有一个任务定义,并且在末尾用尾随数字表示多个版本。 在这种情况下,较早创建了一些版本,否则版本号从1开始。
  • 所需和运行计数显示为1。
  • 如果需要部署新版本的任务定义,则使用Minimum healthy percentMaximum percent 。 使用100%和200%的对应值,将首先部署任务的新版本,然后终止旧版本。 我们将在后续博客中使用这些数字。
  • 正在运行的任务显示在屏幕底部。 单击UUID以了解有关正在运行的任务的更多信息。

aws-ec2-container-8

任务定义显示了EC2实例的运行位置,当前状态,端口映射以及其他一些有用的信息。 我们需要看的关键部分是External Link 。 该URL是可访问我们的Couchbase Web控制台的位置。

Couchbase Web控制台

单击此链接将使用Couchbase Web Console打开一个新选项卡:

aws-ec2-container-10

Administrator身份输入登录名,并以password输入password 。 这些在arungupta / couchbase image中配置。

在这里,您将看到Couchbase Web Console的全部荣耀!

aws-ec2-container-11

该博客介绍了如何使用Amazon ECS运行Couchbase Docker容器。

未来的博客将展示……

  • 使用ECS设置Couchbase集群
  • 使用Docker Compose部署多容器应用程序( 现在支持v2
  • 使用CLI设置ECS集群

Amazon ECS和Couchbase参考

翻译自: https://www.javacodegeeks.com/2016/07/couchbase-docker-container-amazon-ecs.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值