狠狠撸

狠狠撸Share a Scribd company logo
AWS EC2の自動リブート
             rebootWatch開発



          株式会社アイビス
      代表取締役社長 神谷栄治
              2012/1/6
自己紹介
 ?   株式会社アイビス 代表取締役社長
 ?   ハンドル:かみやん
 ?   Twitter:@kamiyan
 ?   好きな言語:Java, C++, Objective-C
 ?   代表作:
     – ibisBrowser(アイビスブラウザ)
     – ibisMail(アイビスメール)
     – ibisPaint(アイビスペイント)
础奥厂最高~~~!(镑冲镑)/
rebootWatch開発経緯

? 物理サーバでは発生していな
  かったが、AWSへ移行後、過負
  荷時にAP(Application Server)が、
  フリーズ!!
? SSHもつながらない!!
? AWS管理画面からEC2インスタン
  スをrebootするしかない!
寝られない!!!
(^_^)/
監視プログラム
rebootWatchを
緊急開発せよ!
要件
? 1分に1回cronで起動し、全APと通信
  ができるか確認し、5回連続で通信で
  きない場合は、EC2インスタンスを
  リブートする
? リブート依頼を投げたら管理者に
  メールで知らせる
? リブート完了し通信が復帰したらリ
  ブートにかかった時間を管理者に報
  告
仕様
? AP追加やAP削除の度に監視プログラムを
  修正するのは面倒!
? EC2インスタンスのタグ付け機能を使って、
  「rebootWatch」タグがついているインス
  タンスを自動的に監視対象にする
? rebootWatchタグの値を「8080/ping.jsp」
  などのような値とし、「http://{対象の
  IP}:{タグの値}」にアクセスできるか
  チェックする
監視対象とするかどうか
のON/OFFが超簡単!
(^_^)/
仕様詳細
? 言語:Perl (Rubyにしとけばよかった)
? 設置場所:小さめのEC2ホストか、社内の
  マシン(どっちでもよい)
? リブート依頼の連投にならないように1度
  リブート依頼を投げたら15分は再依頼し
  ないようにする
? 監視のHTTPリクエストのタイムアウトは
  30秒
? 複数台APへのHTTPリクエストはマルチス
  レッドとして同時にリクエストして1分以
  内に死活の判断ができるようにする
ファイル設計 – 状態ファイル
? 状態ファイルは、/root/rebootWatch/ に「{インス
  タンス名(tag:Name)}.txt」のファイル名で置か
  れるテキストファイル
? 1レコードは、「Time Type Message」の3フィール
  ドで、フィールドはスペース区切り、レコードは
  改行区切り。Messageはオプション。
? Typeは、OK, Timeout, Error, Rebootの3種
? OK or Timeout or Errorレコードが最大10件、
  Rebootレコードが最大1件保存される。HTTPリク
  エストするたびに上書き保存する
? Timeout or Errorが5回連続するとリブート依頼を
  投げる
? Rebootレコードは、リブート依頼を投げると追加
  され、リブートが完了して復旧するとレコードが
ファイル設計 – ログファイル
? 一応、後で調べられるように状態ファイ
  ルと同じフォーマットでログファイルを
  保存しておく
? ログファイルは、「{インスタンス名}-
  YYYYMMDD.txt」というファイル名で1日1
  ファイル
実装
楽勝~(^_^)/
試行錯誤
? 当初の設計では、「今はメンテナンス中な
  ので、サービスを停止(ApacheやTomcatを
  stop)する」などのときに、うっかりホスト
  がリブートすると面倒なので、サービスが
  立って(LISTENして)いないときは、リブー
  ト依頼を投げない仕様だった
? しかし、実装してみたらAPが過負荷のとき
  にLISTENしているのにLISTENしていないと応
  答が来る場合があり、仕様を変更して、
  LISTENしてない場合も、リブート依頼を投げ
  ることにした
備えあれば憂いなし!
これで寝られる~(^_^)/

? ダウンロード: http://bit.ly/104LVnC

More Related Content

AWS EC2の自動リブート

  • 1. AWS EC2の自動リブート rebootWatch開発 株式会社アイビス 代表取締役社長 神谷栄治 2012/1/6
  • 2. 自己紹介 ? 株式会社アイビス 代表取締役社長 ? ハンドル:かみやん ? Twitter:@kamiyan ? 好きな言語:Java, C++, Objective-C ? 代表作: – ibisBrowser(アイビスブラウザ) – ibisMail(アイビスメール) – ibisPaint(アイビスペイント)
  • 4. rebootWatch開発経緯 ? 物理サーバでは発生していな かったが、AWSへ移行後、過負 荷時にAP(Application Server)が、 フリーズ!! ? SSHもつながらない!! ? AWS管理画面からEC2インスタン スをrebootするしかない!
  • 7. 要件 ? 1分に1回cronで起動し、全APと通信 ができるか確認し、5回連続で通信で きない場合は、EC2インスタンスを リブートする ? リブート依頼を投げたら管理者に メールで知らせる ? リブート完了し通信が復帰したらリ ブートにかかった時間を管理者に報 告
  • 8. 仕様 ? AP追加やAP削除の度に監視プログラムを 修正するのは面倒! ? EC2インスタンスのタグ付け機能を使って、 「rebootWatch」タグがついているインス タンスを自動的に監視対象にする ? rebootWatchタグの値を「8080/ping.jsp」 などのような値とし、「http://{対象の IP}:{タグの値}」にアクセスできるか チェックする
  • 10. 仕様詳細 ? 言語:Perl (Rubyにしとけばよかった) ? 設置場所:小さめのEC2ホストか、社内の マシン(どっちでもよい) ? リブート依頼の連投にならないように1度 リブート依頼を投げたら15分は再依頼し ないようにする ? 監視のHTTPリクエストのタイムアウトは 30秒 ? 複数台APへのHTTPリクエストはマルチス レッドとして同時にリクエストして1分以 内に死活の判断ができるようにする
  • 11. ファイル設計 – 状態ファイル ? 状態ファイルは、/root/rebootWatch/ に「{インス タンス名(tag:Name)}.txt」のファイル名で置か れるテキストファイル ? 1レコードは、「Time Type Message」の3フィール ドで、フィールドはスペース区切り、レコードは 改行区切り。Messageはオプション。 ? Typeは、OK, Timeout, Error, Rebootの3種 ? OK or Timeout or Errorレコードが最大10件、 Rebootレコードが最大1件保存される。HTTPリク エストするたびに上書き保存する ? Timeout or Errorが5回連続するとリブート依頼を 投げる ? Rebootレコードは、リブート依頼を投げると追加 され、リブートが完了して復旧するとレコードが
  • 12. ファイル設計 – ログファイル ? 一応、後で調べられるように状態ファイ ルと同じフォーマットでログファイルを 保存しておく ? ログファイルは、「{インスタンス名}- YYYYMMDD.txt」というファイル名で1日1 ファイル
  • 14. 試行錯誤 ? 当初の設計では、「今はメンテナンス中な ので、サービスを停止(ApacheやTomcatを stop)する」などのときに、うっかりホスト がリブートすると面倒なので、サービスが 立って(LISTENして)いないときは、リブー ト依頼を投げない仕様だった ? しかし、実装してみたらAPが過負荷のとき にLISTENしているのにLISTENしていないと応 答が来る場合があり、仕様を変更して、 LISTENしてない場合も、リブート依頼を投げ ることにした