ECS(亚马逊弹性计算云容器服务)是一项高度可扩展的,高性能的软件容器管理服务,它支持Docker 软件容器,并允许您轻松地在受 Amazon EC2 实例管理的集群中运行应用程序。 在基于软件容器的架构中部署应用时,通常需要在每一个亚马逊EC2实例上运行一个特定的代理来处理操作或安全事宜(例如监控,安全,测量指标,业务发现,日志等)。传统的方法是使EC2实例在用户数据脚本或init系统(例如Upstart或Systemd)中为每一个代理调用Docker运行命令。虽然这种方法很奏效,但是它有一些缺陷,因为亚马逊ECS对软件容器一无所知,因此不能追踪容器的CPU,内存,和使用的端口。当需要添加,修改,或从实例中删除代理时,使用这种方法也很难管理这些实例,因为这些改变需要在本地对每一个EC2实例进行操作,需要您使用SSH方法连接到每个机器来启动和停止这些容器。 本文章意在向您展示如何使用用户数据脚本,在ECS实例启动时如何为特定的集群启动特定的任务定义过程。
在该举例中,你构建一个样例应用,在每一个ECS实例上运行cAdvisor(容器顾问)工具。这可以让你了解运行中的容器的资源使用率和性能特征。想要了解cAdvisor的更多信息,请访问 GitHub cadvisor repository(GitHub cadvisor知识库)。
开始前,请确保系统已符合以下条件:
创建亚马逊ECS集群
1. 在ECS控制台上,选择Create cluster(创建集群)。
2. 赋予集群一个唯一的名称,选择Create(创建)。
为cAdvisor测量指标代理创建任务定义过程
1. 在ECS控制台上,在左侧的菜单栏中选择Task Definitions(任务定义)。
2. 在Task Definitions(任务定义)页,选择Create new task definition(创建新的任务定义)。
3. 在JSON页签,将下面的JSON文本粘贴到文本区域:
{ "family": "cadvisor", "containerDefinitions": [ { "name": "cadvisor", "image": "google/cadvisor", "cpu": 10, "memory": 300, "portMappings": [ { "containerPort": 8080, "hostPort": 8080 } ], "essential": true, "mountPoints": [ { "sourceVolume": "root", "containerPath": "/rootfs", "readOnly": true }, { "sourceVolume": "var_run", "containerPath": "/var/run", "readOnly": false }, { "sourceVolume": "sys", "containerPath": "/sys", "readOnly": true }, { "sourceVolume": "var_lib_docker", "containerPath": "/var/lib/docker", "readOnly": true } ] } ], "volumes": [ { "name": "root", "host": { "sourcePath": "/" } }, { "name": "var_run", "host": { "sourcePath": "/var/run" } }, { "name": "sys", "host": { "sourcePath": "/sys" } }, { "name": "var_lib_docker", "host": { "sourcePath": "/var/lib/docker/" } } ] }
4. 在Builder(创建)页签,检查你设置的信息并选择Create(创建)。
创建IAM ECS角色
IAM角色有标准的ECS IAM权限,也允许实例调用StartTask操作,在该实例上调用任务定义过程。
1. 根据下面所述的策略文档创建一个新的ECS IAM角色。想要了解更多信息,请参阅 Amazon ECS Container Instance IAM Role。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:CreateCluster", "ecs:RegisterContainerInstance", "ecs:DeregisterContainerInstance", "ecs:DiscoverPollEndpoint", "ecs:Submit*", "ecs:Poll", "ecs:StartTask" ], "Resource": [ "*" ] } ] }
使用定义的任务启动ECS实例
提供的 user data code(用户数据代码)将会为EC2要参加的ECS集群配置名称,从 ECS container agent introspection API中检索ECS容器实例ARN(高级远程节点),并调用 ECS StartTask操作来启动前面已创建的名为cadvisor:1的任务定义过程。
1. 启动ECS实例。想要了解更多信息,请参阅 Launching an Amazon ECS Container Instance,但是在User data部分不能使用下面的代码。记得要替换your_cluster_name部分的值。
注意: [p1] 也应添加到init系统(例如upstart或systemd)脚本。这样重启后的实例就会启动该项任务了。
#!/bin/bash cluster="your_cluster_name" echo ECS_CLUSTER=$cluster >> /etc/ecs/ecs.config yum install -y aws-cli jq instance_arn=$(curl -s https://localhost:51678/v1/metadata | jq -r '. | .ContainerInstanceArn' | awk -F/ '{print $NF}' ) az=$(curl -s https://instance-data/latest/meta-data/placement/availability-zone) region=${az:0:${#az} - 1} aws ecs start-task --cluster $cluster --task-definition cadvisor:1 --container-instances $instance_arn --region $region
这里不确定是以上代码还是your_cluster_name的值,请根据专业知识自己判断一下,感觉应该是your_cluster_name的值。
1. 在 AWS Management Console(AWS管理控制台)上,在你启动实例的区域选择EC2 Container Service(EC2软件容器服务)。
2. 在Clusters(集群)页签,选择前面已配置的ECS集群。
3. 在Tasks(任务)页签,你应该可以看到名称为cadvisor:1的任务定义过程处于RUNNING(运行)状态。
本网页所有文字内容由 imapbox邮箱云存储,邮箱网盘, iurlBox网页地址收藏管理器 下载并得到。
ImapBox 邮箱网盘 工具地址: https://www.imapbox.com/download/ImapBox.5.5.1_Build20141205_CHS_Bit32.exe
PC6下载站地址:PC6下载站分流下载
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox 网页视频 工具地址: https://www.imapbox.com/download/ImovieBox4.7.0_Build20141115_CHS.exe
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算
官方软件产品操作指南 (170)