
AWS:プレイスメントグループ触ってみたよ
みなさん、こんばんは。ちゃみみです。
今日は、特にdeveloper系でよく問われるケースの多いプレイスメントグループについて触ったので備忘録として残しておこうと思います。
そもそもプレイスメントグループって何?ってところからなんですが、設定上では配置グループなんて呼ばれていますが引用すると、「新しいEC2インスタンスを起動すると、EC2サービスは、相関する障害を最小限に抑えるために、すべてのインスタンスが基盤となるハードウェアに分散するようにインスタンスを配置しようとします。配置グループを使用して、相互依存するインスタンスのグループの配置に影響を与え、ワークロードのニーズを満たすことができます。」
URL:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html
プレイスメントグループは大きく分けて3つあり
・クラスター
→アベイラビリティーゾーン内でインスタンスを密集させられて低遅延のネットワークパフォーマンスを生むことができます
イメージとしてこんな感じ

・パーティション
→1つのパーティション内のインスタンスのグループが、異なるパーティション内のインスタンスのグループと基盤となるハードウェアを共有しないように、インスタンスを論理パーティション全体に分散できます。Hadoop、Cassandra、Kafkaなどの大規模な分散およびレプリケートされたワークロードで使用されるようです。
イメージとしてこんな感じ

・スプレッド
→相関する障害を減らすために、インスタンスの小さなグループを個別の基盤となるハードウェアに厳密に配置します。こっちは、パーティションとイメージはちかいですが、障害含めて影響度を分散させないような配置戦略となりますね。
イメージとしてこんな感じ

実際の設定としては、先にEC2ダッシュボードよりプレイスメントグループを作成する。


今回は、戦略としてはクラスターを選択することにします。

名前から始まって戦略を入力し、グループを作成をクリックします。

そうすると一つグループが出来上がるのでここにEC2を配置していきましょう。

EC2の作成で配置グループの選択が行えるので先ほど作成したものを選択します。
で、ここにもう一台EC2を追加してクラスター内で疎通スピードはどうか図ってみたのですが、、、

つながらない、、、、
色々試行錯誤してみましたがやはり、つながらない。。
あきらめて、プレイスメントグループ同士で疎通のやり取りは通常ベースと異なってどうかチェックしました。

で、比較のためにプレイスメントグループ抜きで単純構成で行った場合の疎通がこちら。

pingスピードが違うのがわかると思います。
そんなに設定含めて難しいシロモノではないですが、よく問われるケースとしては暗にクラスタープレイスメントグループのことを言っている?もしくはパーティション型のことを言っている?という具合の問題で問われるケースがあり、ここで違いを把握していくことは整理する意味でもよいと思います。
あと、プレイスメントグループを作成する過程でちょっと詰まったのが、配置できるインスタンスに制約があるんですよね。。
現時点では、
次のインスタンスタイプがサポートされています。
バースト可能なパフォーマンスインスタンス(T2など)と Mac1インスタンス を除く、現世代のインスタンス。
以下、前世代の インスタンス:A1、C3、 cc2.8xlarge、cr1.8xlarge、G2、 hs1.8xlarge、I2、及びR3。
上記インスタンスタイプがサポートされているようですね。
URL:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html#concepts-placement-groups
2021年10月15日
以下、宣伝です。
仲間も募集中なので、気になる方は↓の記事を覗いてみてくださいませ。
いい会社だと思いますよ。