绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
couchbase_Amazon ECS上的Couchbase Docker容器
2022-04-11 15:23:15

couchbase

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

非常感谢@moviolone帮助您理解概念并运行此设置。

什么是Amazon ECS?

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

ec2-container-service

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

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中关键概念的概述:

亚马逊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参考

分享好友

分享这个小栈给你的朋友们,一起进步吧。

Couchbase
创建时间:2022-04-11 10:08:07
Couchbase
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • LCR_
    专家
戳我,来吐槽~