当创建EC2时,可能会想指定它们的分布,例如分布在同一个AZ实现低延迟访问。placement group
可以影响EC2的分布,它总共有三种策略:
Cluster模式适用于对延迟性和网络要求极高的应用。但可用性会降低,如果一个rack坏了,全部机器可能都受影响
使用Cluster Placement Group
时,如果后续往同一个placement group
里继续添加机器,会有更大机率遇到capacity不足的问题。此时可以先把同一个placement group
里的机器全部停了再重新启动,让它们漂移到其他硬件上
partition placement group
模式下,EC2分步在不同的partition里,每个partition分属不同的rack,相比于cluster模式,partition模式一定程序上减少了硬件故障带来的影响,增加了可用性
partition
模式适用于大型的分布式系统,如HDFS、HBase、Kafka
partition placement group
可以将partition分布在多个AZ,每个AZ最多有7个partition,但每个partition里面的机器数量是不限的。
用户能看到EC2具体属于哪个parition
spread模式下,每个机器都分布在不同的硬件上
可以跨多个AZ/也可以分布在一个AZ,机器是分布在不同rack上,增加可用性。适用于对HA要求极高的应用
每个placement group
最多7个实例。
本节我们将创建三个placement group
,然后测试如何在EC2创建时指定placement group
。
在EC2页面,点击create placement group
:
分别创建三种类型的placement group
,cluster、spread和partition:
在创建spread placement group
时,有两种类型可以选择,这里选择Rack:
创建partition
类型时,可以指定partition的数量(1-7):
创建完成后的效果:
新建实例时,在高级设置里,可能指定实例所在placement group
:
如果选择的是partition类型,可以指定放到哪个partition,或者自动分配:
创建完成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中移除
最后再开机。