スタンバイサーバを自動で起動する

前回、S3にバックアップしたファイルからEC2上にデータをリストアしてみました
次に、本番稼働しているサーバの停止を検知したら自動でEC2上のサーバを書き戻し、データをバックアップから復旧できるように、自動起動の準備を進めます。
前提として、前回やった通りに一度EC2上でバックアップサーバを立ち上げており、データだけ書き戻せば即座に動作可能である状況とします。

起動時に自動リストアする

まずは起動時の書き戻し設定です。前回実行したコマンドをシェルスクリプトに書いて、起動時に読み込むようにします。
シェルの格納位置はどこでも良いですが、今回は/usr/local/bin/restore_wordpress.shを作成しました。

できたらrootで実行可能なようにパーミッションを付与します。

起動時に実行するように/etc/rc.d/rc.localに以下を追記します。S3のマウントコマンドより後に追記しましょう。

これでサーバ起動の度にバックアップからリストアされるようになります。

EC2を起動するlambda関数を作成する

起動するEC2を決定するのにタグを使用するため、EC2のインスタンスからタグを追加します。
Nameタグをwordpressとする前提で関数を作成します。

サービスからLambdaを選択し、関数の作成で一から関数を作成を選びます。今回はpython3.6で実装します。

ロールにはEC2のアクセス権を付与します。
ロールを編集しようとすると、ここではコードベースの編集しかできないようなので、色々調べた結果以下のようにしました。

次に関数の実装ですが、トリガはcloud watchからSNSを発行しますが、まだトピックがないので設定せずに、先に関数だけ実装してしまいます。
コード部分を以下のようにします。

リージョンは固定で環境変数から固定で入れてしまいます。
環境変数の入力ウィンドウで環境変数名regionで東京リージョンの場合はap-northeast-1と入力します。

これで完成です。テストを実行すればタグをwordpressとしたEC2が起動するはずです。
テストイベントの作成は特に変更しなくても動作します。

次回、運用中サーバのヘルスチェックとスタンバイサーバの自動起動を設定していきます。



シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメント

  1. […] 次はcloud watchを使用してオンプレ上のwordpressが停止したことを検知した後、スタンバイサーバを自動起動できるように準備していきます。 […]

  2. […] 前回、スタンバイサーバに切り替えるためにEC2を自動起動するlambdaスクリプトを作成しました。 今回は本番稼働中のサーバに対してヘルスチェックを実行して、失敗した場合に自動でEC2 […]