couchbase
该博客将说明如何使用Amazon EC2容器服务 (Amazon ECS)运行Couchbase Docker容器。
非常感谢@moviolone帮助您理解概念并运行此设置。
什么是Amazon ECS?
Amazon ECS是一项容器管理服务,可轻松在Amazon EC2实例集群上运行,停止和管理Docker容器。 Amazon ECS与其余的AWS基础架构很好地集成在一起,无需操作您自己的集群或配置管理系统。
一个显而易见的问题是,它与Docker Swarm , Kubernetes或Mesos等其他容器编排框架有何不同? 个大的不同是这些框架都是开源的。 亚马逊目前使用专有的业务流程框架。
ECS的一大优势在于,就像其他AWS基础架构一样,这是一项托管服务 。 因此,您只需要担心部署容器而无需担心基础架构。
ECS的更好比较是与Docker for AWS / Azure (由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绑定。 您是否将其视为供应商锁定?
Amazon可以将其业务流程平台或调度程序作为独立产品发布,但这不是很典型。 - 容器格式 – ECS服务仅针对Docker容器。 出于所有实际目的,至少在今天,这可能是完美的。 我还没有听说过Rkt的部署或任何其他容器格式。 但是,一旦将来出现符合OCI的运行时,这种情况可能会改变。
后一件事,在我们深入研究概念和代码之前,Amazon EC2 Container Service不收取额外费用。 您需要支付为存储和运行应用程序而创建的AWS资源(例如EC2实例或EBS卷)。
Amazon ECS概念
以下是ECS中关键概念的概述:
Amazon EC2 Container Service入门
登录到您的AWS EC2控制台 ,然后单击EC2 Container Service :
单击Get started
按钮定义您的应用程序。
创建ECS任务
在ECS中,将Docker工作负载定义为任务。 一个任务可以包含多个容器。 任务的所有容器都位于同一台计算机上。
输入如下所示的值:
在此步骤中指定的项目很少:
- 任务定义是对包含一个或多个容器定义的应用程序的描述。
- 容器名称是将作为该任务一部分启动的容器的名称。
- 映像允许指定一个或多个需要作为容器启动的映像,作为此应用程序的一部分。 此处指定的图像使用couchbase:latest作为基础图像,并使用Couchbase REST API来配置服务器。 该映像的Dockerfile提供了有关如何准备该映像的更多详细信息。
- 大内存是需要为容器分配的内存(相当于
-m
Docker CLI开关)。 Couchbase需要1GB才能在dev中运行,因此在此处指定。 - 后是端口映射(在Docker CLI上为
-p
)。 Couchbase管理需要端口8091。
有关这些的更多详细信息,请参见“ 任务定义参数” 。
创建ECS服务
单击Next step
以配置服务。
输入服务名称。 可以在此处指定所需状态。 现在,我们将使其保持简单,并启动一个单节点Couchbase容器。 并且由于所需的状态是在单个容器中运行,因此不需要ELB。
有关这些的更多详细信息,请参见服务定义参数 。
创建ECS集群
任务在容器实例上运行,并且这些实例需要在集群中注册。 这使我们可以在以后扩大/缩小集群,以适应运行更多的容器。
单击Next step
以配置集群。
在此图像中:
- 采用默认的群集名称
- 创建容器实例的同构集群。 m3.medium是运行Couchbase节点的合适大小
- 选择一个先前创建的安全密钥。 这将允许打开与容器实例的ssh连接
- 将创建一个新的IAM角色,以允许ECS代理与ECS服务进行通信
群集中的容器实例可以跨越多个可用性区域,并且可以与ELB进行平衡。
查看所有指定的选项:
单击Launch instance & run service
按钮以启动服务。
创建服务后,将显示以下状态:
输出显示集群,服务和任务定义已创建。 配置和初始化实例以及在它们上运行任务需要几分钟。
查看ECS服务和任务
单击View Service
按钮以查看新创建的服务。
此图像中的几件事:
- 该服务显示任务定义
couchbase:6
。 每个服务都分配有一个任务定义,并在结尾处用尾随数字表示多个版本。 在这种情况下,较早创建了一些版本,否则版本号从1
开始。 - 所需和运行计数显示为1。
- 如果需要部署新版本的任务定义,则使用
Minimum healthy percent
和Maximum percent
。 使用100%和200%的对应值,将首先部署任务的新版本,然后终止旧版本。 我们将在后续博客中使用这些数字。 - 运行任务显示在屏幕底部。 单击UUID以了解有关正在运行的任务的更多信息。
任务定义显示了EC2实例的运行位置,当前状态,端口映射和其他一些有用的信息。 我们需要看的关键部分是External Link
。 此URL是可访问我们的Couchbase Web控制台的位置。
Couchbase Web控制台
单击此链接将使用Couchbase Web Console打开一个新选项卡:
以Administrator
身份输入登录名,并以password
输入password
。 这些在arungupta / couchbase image中配置。
在这里,您将看到Couchbase Web Console的全部荣耀!
该博客介绍了如何使用Amazon ECS运行Couchbase Docker容器。
未来的博客将展示……
- 使用ECS设置Couchbase集群
- 使用Docker Compose部署多容器应用程序( 现在支持v2 )
- 使用CLI设置ECS集群
Amazon ECS和Couchbase参考