【AWS】EC2インスタンスのあまり触らない設定項目を深掘りしてみる
どもども、もっと広い家に住みたくて物件を漁っているsaisaiです。
みなさん、EC2は使用されておりますでしょうか。
コンテナ化の時代が来ているとはいえ、おそらくAWSを使用してサービスを展開されている企業のほとんどは何かしらの形でEC2にお世話になっているのではないかと思います。
EC2インスタンスはAWSコンソールの起動画面から各設定をぽちぽちとクリックして立ち上げたり、AWS CLIからコマンドラインで起動したりしますがその設定項目の多さに衝撃を受けた人は少なくないはずです。
もちろん全ての設定を操作する必要はなく、用件に応じた必要最低限の対応で問題ないのですが、僕も含め多くの人がEC2の使用回数を重ねるごとにそれぞれのスタンダードな設定を決め込んでしまい、他の設定はノータッチというパターンになってしまっているのではないかと思います。
そこで今回はそんなノータッチになりがちな項目を今一度調査し、柔軟な起動設定ができるようになることを目指します!
キャパシティー予約
最初に紹介するのはキャパシティー予約です。
キャパシティー予約とは指定タイプのインスタンスの稼働時間をあらかじめ予約しておくことができる設定です。
EC2インスタンスを稼働するために必要なホストは有限です。ホストは各AZやVPC単位でそれぞれ割り振られています。
つまり、インスタンスの起動、開始してもホストに空きがなければInsufficientInstanceCapacityエラーを引き起こし、インスタンスが立ち上がらないといったことがあります。
このような事態を防ぐために、確実に特定の時間分の稼働を担保するようあらかじめキャパシティーを予約しておくことが可能です。
ドメイン結合ディレクトリ
こちらは主にWindowsサーバを使用する際に確認しておきたい項目です。
正確には"SimpleADまたは、MicrosoftADを利用してドメインを管理している場合"です。
ドメイン結合ディレクトリにて使用しているActive Directoryのドメインをあらかじめ指定しておくことで、サーバ起動時に自動的に指定したドメインに参加させておくことができます。
停止 – 休止動作
次に紹介するのは停止動作に休止動作(hibernation)を追加する設定です。インスタンスの状態に休止を加えることができます。
休止は停止とは違いメモリが保持している内容をディスクに保存して停止しておくことができます。
例えば起動に時間がかかるアプリケーションの存在など、停止->開始にストレスを伴うインスタンスのハンドリング方法の一つとして選択肢に加えられそうです。
使用にはOSやボリュームタイプなど制限がありますので提案する際は事前に調べておきましょう。
テナンシー
次に紹介するのはテナンシーです。
こちらはEC2インスタンスを使用されている企業の大きさやコンプライアンスによっては考慮される項目かもしれませんが、ほとんどの場合"共有"のまま特に触ることがない項目だと思います。
テナンシーでは起動するインスタンスのテナント属性を指定することが可能です。テナント属性とはハードウェアの共有設定です。選択肢としては以下の3点となります。
・共有 – 共有ハードウェアインスタンスの実行
デフォルトの設定です。複数のAWSが共有するハードウェアに仮想サーバ(インスタンス)を立ち上げます。
EC2インスタンスを使用する上で覚えておきたいことは、一つ一つの仮想サーバが独立した物理ホストを使用することは基本的にはないということです。一つの物理ホスト上に複数の仮想サーバが立ち上がっているのが最もよくあるパターンで、こちらの設定もこのパターンに該当します。
・専用 – 専用ハードウェアインスタンスの実行
二つ目の選択肢です。デフォルトとの設定とは違い、単一のカスタマー専用のハードウェアの Virtual Private Cloud (VPC) で実行される Amazon EC2 インスタンスです。
つまり、一つの物理ホストに複数の仮想サーバが立ち上がることはあっても、他のAWSアカウントから仮想サーバを立ち上げられることはありません。
・専有ホスト – このインスタンスを専有ホスト上で起動する
三つ目の選択肢です。こちらは完全に専用の物理ホストを使用することができます。
それぞれ用途、支払い方法などに違いがありますので用件に合わせて適切な選択ができるように、各項目の内容について抑えておくようにしましょう。
ホストリソースグループ
ホストリソースグループは単一のエンティティとして管理できる専有ホストの集合体のようなものです。専有ホストの管理にしようします。
専有ホストをグループに含めておくことで、開発テスト、実稼働、組織単位、ライセンス制約など、目的別にホストを分けることができます。
License Managerと連携してホストを割り当て、インスタンスを起動、管理を設定に基づいて行うこともできます。
この設定を行うことで専有ホスト内のインスタンスをグループに含めてより統括的な管理をすることができます。
アフィニティ
ホストのアフィニティは、インスタンスと専有ホストの起動状態を制御します。
アフィニティがHostに設定されている場合は、特定のホストで起動したインスタンスが停止しても、常に同じホストで再開されます。
一方アフィニティがOFFに設定されているときにインスタンスを停止して再起動する場合は、使用可能な任意のホスト上で再起動できます。ただし、最後に実行した Dedicated Host 上でベストエフォートベースでの再起動を試みます。
Elastic Inference
EC2インスタンスタイプから判断された適切な量のGPUによる推論アクセラレーションをアタッチさせる、高速コンピューティングサービスです。
ディープラーニングを高速化する際に機能、コスト共にパフォーマンスを発揮します。
他にもAmazon SageMakerやAmazon ECSにも使用できる設定で機械学習分野で使用する際は使用を検討するべき項目となります。
まとめ
今回は普段あまり触らないEC2の設定項目について調べてみました。
実際に調べてみると、使用する要件が特殊なものがほとんどなので普段あまり意識しないのも納得ですね…。
しかし、どの設定も正しい場面で使用することができればかなり大きな効果があることは間違い無いので、常に選択肢に含めた状態で打ち合わせ等に臨んでいきたいと思います。
最後まで読んでいただきありがとうございました!
↓オススメ教材