SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

AWSの深いところ見せちゃいます! by AWSクラウドサポートエンジニア

Amazon EC2のイベント対応を楽にするためのアイデアと「Design for Failure」の考え方

AWSの深いところ見せちゃいます! by AWSクラウドサポートエンジニア 第5回


イベント対応を楽にするために(2)

代替インスタンスへのサービス切り替えを楽にする

 代替EC2インスタンスが起動できたら、外部からアクセス先を変えて新しいインスタンスを利用する必要があります。

 アクセス元のクライアント数が少ないサーバーの場合には各クライアントで設定を変更すればそれで問題ありません。しかし、クライアントが多数ある場合には、なんらかの対応が必要になります。

 解決案の一つは、旧インスタンスから新インスタンスへのIPアドレスの付け替えです。VPC環境ではEC2インスタンスのENIに対し複数のIPアドレスを付与することができ、プライマリー以外のIPアドレスについてはインスタンス間で付け替えが可能です。

 このため、イベント対象のインスタンスから代替インスタンスにIPアドレスを付け替えることで、クライアント側での設定変更なしでアクセス先の切り替えが可能になります。

 また、EC2インスタンスへのアクセス先としてElastic IPアドレス(EIP)を利用している場合は、EIPの割り当て先を変更するだけでアクセス先を切り替えることもできます。この方法は、クラウド環境でのアーキテクチャ設計のノウハウを集めたクラウドデザインパターンでもFloating IPパターンとして紹介されています。

 また、AWSで提供されるロードバランサーであるELBを利用することも可能です。 エンドポイントURLは同一ELBを利用している間は変更されることがありませんので、ELBのバックエンドインスタンスとなっている場合は代替インスタンスにも旧インスタンスにも同一のURLでアクセスが可能です。

 ELBの詳細についてはBlackbeltセミナー資料AWSの公式ドキュメントもご確認ください。

イベント情報の取得を楽にする

 また、これらの対応を確実に実施するため、イベント通知を受け取る仕組みについても確認をしておきましょう。

 実は、先日行われたAWSのイベントre:Invent 2016で、イベント通知について新たな機能が発表されています。それはAWS Personal Health DashboardとAWS Health APIです。

発表時のスライド
発表時のスライド

 AWS Personal Health Dashboardは自分が利用しているAWSリソースに関連した障害・スケジュールイベント・通知が一覧できる機能です。

 EC2インスタンスだけに止まらず、RDS等複数のサービスのリソース情報を一覧で確認することができます。

PHDスクリーンショット
PHDスクリーンショット

 AWS Personal Health Dashboardは同じタイミングで提供が開始されたAWS Health APIの機能を活用しています。

 このAPIを直接利用することで、これまでサービスごと・リソースごとに分かれていたメンテナンスやイベントの情報を集約し、取得できるようになりました。

 さらに、このAWS Health APIで発生したイベントをCloudWatch Eventsと連携させることもできるようになっています。CloudWatch Eventsでは任意のイベントをトリガーとしてLambda関数の実行やAmazon SNS(Simple Notification Service)・Amazon SQS(Simple Queueing Service)を介した通知といったアクションが実行できる機能です。

 これにより、EC2インスタンスにリタイアメント通知が来たら自動で対応させる(代替インスタンスを起動する、Slackに通知を送る、担当者にメールする等)といったことをとても簡単に設定することができるようになりました。

 実際の設定手順としては以下のような形になります。

  1. イベント発生時に、EC2インスタンスの停止などイベントへの対応を実行するLambda関数を作成する。
  2. CloudWatch Eventsでルールを作成する。対象のイベントとしてAWS Health配下のメンテナンスを指定する。例えばEC2インスタンスのリタイアメントスケジュールを対象とする場合、AWS_EC2_INSTANCE_RETIREMENT_SCHEDULEDというイベントを指定する
  3. CloudWatch Eventsルールのターゲットとして実行するLambda関数を設定する。
CloudWatch Events
CloudWatch Events

 設定はこれだけで完了です。あとは実際にイベントが発生したら処理が実行されていることを確認してください。

 AWS Health APIやPersonal Health Dashboardについてはまだ英語のドキュメントしか提供されていませんが、もし興味があればぜひ読んでみてください。

 なお、Personal Health Dashboardは全AWSアカウントでご利用いただけますが、AWS Health APIについてはビジネスもしくはエンタープライズのAWSサポート契約を持っていることが利用の前提条件になります。もしサポート契約をお持ちでない場合には、ぜひ加入をご検討ください。ビジネスおよびエンタープライズサポートでは、他にも電話・チャットでの問い合わせやTrusted Advisorの追加チェック項目もご利用いただけるようになります。

次のページ
Design for Failureに向けて

この記事は参考になりましたか?

AWSの深いところ見せちゃいます! by AWSクラウドサポートエンジニア連載記事一覧

もっと読む

この記事の著者

半田 達郎(アマゾン ウェブ サービス ジャパン株式会社)(ハンダ タツロウ)

 AWS クラウドサポートエンジニア。新卒で外資系ITベンダーに入社後、サーバー仮想化やデスクトップ仮想化基盤の設計・構築・提案に携わり 、インフラエンジニアとしての一歩を踏み出す。2014年よりAWSサポートに勤務し、2016年秋、家族と共にアイルランドに移住。インフラ系技術を中心に、学生時代に培...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/9925 2017/04/05 15:19

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー