aws容器服务详解

49
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 2017-02-23 AWS容器服务详解 从基本概念到最新特性

Upload: leon-li

Post on 22-Mar-2017

43 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Aws容器服务详解

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

2017-02-23

AWS容器服务详解从基本概念到最新特性

Page 2: Aws容器服务详解

议程

• 容器与云

• 容器服务基本组件

• 最新特性

Page 3: Aws容器服务详解

容器与云

Page 4: Aws容器服务详解

计算平台的演进

Amazon EC2 Amazon ECS AWS Lambda

服务器 服务器上的容器 无服务器

Page 5: Aws容器服务详解

容器与云

InfrastructureContainer

Code

Infrastructure

ContainerCode

VM

Infrastructure

ContainerCode

VMOn IaaS Cloud用户关注VM、容器和代码,并管理容器集群

On Container Cloud (CaaS/PaaS)用户关注容器和代码

On Serverless Cloud用户只关注代码

Cloud

User

Cloud

Cloud

User

User

Page 6: Aws容器服务详解

Docker

Page 7: Aws容器服务详解

构建Docker应用的要素

负载均衡

容器集群管理

权限管理

监控与日志

服务部署与发现

Page 8: Aws容器服务详解

容器服务基本组件

Page 9: Aws容器服务详解

什么是 Amazon ECS?

可扩展的容器管理 灵活的容器部署 AWS平台集成 为扩展性设计

Page 10: Aws容器服务详解

管理单元与任务定义(Task Definitions)

Volume Definitions

Container Definitions

Shared Data Volume

PHP App Time of day App示例

组成

2个Container

1个Volume

… ...

… ...

一个TASK可以包含一个或多个 Container

Page 11: Aws容器服务详解

Essential to our Task

Create and mount volumes

Expose port 80 in containerto port 80 on host

10 CPU Units (1024 is full CPU),500 Megabytes of Memory

Task Definitions: 基于JSON描述

Page 12: Aws容器服务详解

Amazon ECS工作原理

ALB ALB

AZ 1 AZ 2

user / scheduler

Scheduler

Cluster State Service

Placement Engine

Event Stream

Page 13: Aws容器服务详解

服务部署与发现

Page 14: Aws容器服务详解

调度器与服务(Service)(Container Requirement->Task Definition -> Task -> Service)

App 1App2 Vol A

App 3App4 Vol B

Task Definition 1

Task Definition 2

Service 1

Service 2

Task 1

Task 1

Task 1

Task 2

Task 2

App X 定义ContainerVol X定义存储

每个Task包含1个或多个Containerers

Page 15: Aws容器服务详解

Service Auto Scaling –服务自动扩展

Task 1

Task 1

Task 1

自动扩展

自动缩减

Page 16: Aws容器服务详解

服务发现:通过ECS Services 和 Route 53实现

Route 53 private hosted zone通过VPC DHCP Option设置搜索路径结合ELB定义ECS Service为每个ELB创建CNAME

Page 17: Aws容器服务详解

服务发现与第三方软件

CONSUL

By CoreOS / Go / Raft / HTTP / KV

By Apache / Java / ZAB / TCP / KV

By HashiCorp/ Go / Raft / HTTP / KV/Built-in Service Discovery/Multiple Datacenter

Page 18: Aws容器服务详解

负载均衡

Page 19: Aws容器服务详解

ELB新服务:Application Load Balancer

Page 20: Aws容器服务详解

Classic ELB –固定端口绑定

EC2主机

Service 1

Container Port 80Host Port 8080

Service 2

Container Port 80Host Port 8081

EC2主机

Service 1

Container Port 80Host Port 8080

Service 2

Container Port 80Host Port 8081

Load BalancerService 1Port 80

Load BalancerService 2Port 80

Page 21: Aws容器服务详解

Application Load Balancer

Page 22: Aws容器服务详解

Container Instance

ALB -实现容器灵活部署

Container

Container

Target Group

Container

Target Group

Page 23: Aws容器服务详解
Page 24: Aws容器服务详解

监控与日志

Page 25: Aws容器服务详解

Monitoring with Amazon CloudWatch

Page 26: Aws容器服务详解

容器日志记录与分析

ElasticSearch

Kinesis Firehose

Kinesis

Lambda

Customer Application

EMR Hive

Redshift

EMR Spark

Page 27: Aws容器服务详解

权限管理

Page 28: Aws容器服务详解

用于Task的IAM Roles通过环境变量传递Credential

在S3上存放IAM Policy

Page 29: Aws容器服务详解
Page 30: Aws容器服务详解

最新特性

Page 31: Aws容器服务详解

Amazon ECS工作原理

ALB ALB

AZ 1 AZ 2

user / scheduler

Scheduler

Cluster State Service

Placement Engine

Event Stream

Page 32: Aws容器服务详解

任务置放引擎Task Placement Engine

Page 33: Aws容器服务详解

置放约束和属性(新)

名称 示例

AMI ID attribute:ecs.ami-id == ami-eca289fb

Availability Zone attribute:ecs.availability-zone == us-east-1a

Instance Type attribute:ecs.instance-type == t2.small

Distinct Instances type=“distinctInstance”

Custom attribute:stack == prod

Page 34: Aws容器服务详解

任务置放的原理

Cluster Constraints

Custom Constraints

Placement Strategies

Apply Filter

满足 CPU、内存和端口要求

按照位置、虚机实例类型、AMI或者自定义属性约束进行过滤

找到满足spread或binpack置放策略的虚机实例

选择最后确定的虚机实例

Page 35: Aws容器服务详解

默认支持的置放策略

Binpacking Spread Affinity Distinct Instance

Page 36: Aws容器服务详解

置放策略叠加

Spread tasks across Zonesand Binpack within each Zone

Page 37: Aws容器服务详解

事件流Event Stream

Page 38: Aws容器服务详解

接收和处理实时事件

Page 39: Aws容器服务详解

开始处理事件的三个步骤

第一步:创建CWE Rules 第二步:创建SNS Topic 第三步:向SNS发送事件

Page 40: Aws容器服务详解

基于事件的服务发现

app1-tst à 10.1.0.11db1-tst à 10.1.0.14app2 à 10.1.0.16db2 à 10.1.0.18my-app à 10.1.0.20

websrv1à 10.1.0.1websrv2à 10.1.0.2websrv3à 10.1.0.4app-dev1à 10.1.0.9app-dev2à 10.1.0.5app-dev3à 10.1.0.8

db-devà 10.1.0.19

Page 41: Aws容器服务详解

Blox

Page 42: Aws容器服务详解

什么是Blox?

选项(Choice)

控制(Control)

开发者体验(Developer Experience)

Page 43: Aws容器服务详解

基于Blox构建方案

scheduler cluster state service

Page 44: Aws容器服务详解

t2.small t2.small t2.small

Blox: Daemon Scheduler

t2.small t2.small t2.small

scheduler cluster state service

t2.small t2.small t2.small

Page 45: Aws容器服务详解

新特性总结

Page 46: Aws容器服务详解

Thank you!

Page 47: Aws容器服务详解

扩展性与延迟测试

Page 48: Aws容器服务详解

ECS CLI与 Docker Compose兼容

“Task Definition”

Page 49: Aws容器服务详解

在线更新Task Definition版本:滚动更新(创建新Task),结合ELB实现平滑过渡

ELB

V1 V1

ELB

V1 V1 V2

ELB

V1 V1 V2 V2