Placement Group ——置放群组

当创建EC2时,可能会想指定它们的分布,例如分布在同一个AZ实现低延迟访问。placement group可以影响EC2的分布,它总共有三种策略:

  • Cluster:将所有EC2创建在同一个AZ,实现低延迟访问。适合HPC应用
  • Spread:分布在多个AZ、不同硬件上,来保证高可用。
  • Partition:将实例分布在同一个AZ的多个partition(不同机柜),用于Hadoop、Kafka等大型分布式应用。

Cluster模式

image-20191029093345219

Cluster模式适用于对延迟性和网络要求极高的应用。但可用性会降低,如果一个rack坏了,全部机器可能都受影响

使用Cluster Placement Group时,如果后续往同一个placement group里继续添加机器,会有更大机率遇到capacity不足的问题。此时可以先把同一个placement group里的机器全部停了再重新启动,让它们漂移到其他硬件上

Partition模式

partition placement group模式下,EC2分步在不同的partition里,每个partition分属不同的rack,相比于cluster模式,partition模式一定程序上减少了硬件故障带来的影响,增加了可用性

partition模式适用于大型的分布式系统,如HDFS、HBase、Kafka

partition placement group可以将partition分布在多个AZ,每个AZ最多有7个partition,但每个partition里面的机器数量是不限的。

用户能看到EC2具体属于哪个parition

image-20191029094154026

Spread模式

spread模式下,每个机器都分布在不同的硬件上

image-20221008184656181

  • 可以跨多个AZ/也可以分布在一个AZ,机器是分布在不同rack上,增加可用性。适用于对HA要求极高的应用

  • 每个placement group最多7个实例。

placement group实验

本节我们将创建三个placement group,然后测试如何在EC2创建时指定placement group

在EC2页面,点击create placement group:

image-20221008190831159

分别创建三种类型的placement group,cluster、spread和partition:

image-20221008191052681

在创建spread placement group时,有两种类型可以选择,这里选择Rack:

image-20221008190934893

创建partition类型时,可以指定partition的数量(1-7):

创建完成后的效果:

image-20221008191151238

创建EC2

新建实例时,在高级设置里,可能指定实例所在placement group

image-20221008191413130

如果选择的是partition类型,可以指定放到哪个partition,或者自动分配:

image-20221008191429289

更新EC2的placement group

创建完成EC2后,还可以更新它的placement group,但是目前只能通过命令行方式。

在更新前,先要把EC2关机,然后执行:

aws ec2 modify-instance-placement --instance-id i-0123a456700123456 --group-name MySpreadGroup
aws ec2 modify-instance-placement --instance-id i-0123a456700123456 --group-name ""  # 将EC2从placement group中移除

最后再开机。