Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
AWS EC2の自動リブート             rebootWatch開発          株式会社アイビス      代表取締役社長 神谷栄治              2012/1/6
自己紹介 •   株式会社アイビス 代表取締役社長 •   ハンドル:かみやん •   Twitter:@kamiyan •   好きな言語:Java, C++, Objective-C •   代表作:     – ibisBrowser(ア...
AWS最高~~~!(^_^)/
rebootWatch開発経緯• 物理サーバでは発生していな  かったが、AWSへ移行後、過負  荷時にAP(Application Server)が、  フリーズ!!• SSHもつながらない!!• AWS管理画面からEC2インスタン  スをr...
寝られない!!!(^_^)/
監視プログラムrebootWatchを緊急開発せよ!
要件• 1分に1回cronで起動し、全APと通信  ができるか確認し、5回連続で通信で  きない場合は、EC2インスタンスを  リブートする• リブート依頼を投げたら管理者に  メールで知らせる• リブート完了し通信が復帰したらリ  ブートにか...
仕様• AP追加やAP削除の度に監視プログラムを  修正するのは面倒!• EC2インスタンスのタグ付け機能を使って、  「rebootWatch」タグがついているインス  タンスを自動的に監視対象にする• rebootWatchタグの値を「80...
監視対象とするかどうかのON/OFFが超簡単!(^_^)/
仕様詳細• 言語:Perl (Rubyにしとけばよかった)• 設置場所:小さめのEC2ホストか、社内の  マシン(どっちでもよい)• リブート依頼の連投にならないように1度  リブート依頼を投げたら15分は再依頼し  ないようにする• 監視のH...
ファイル設計 – 状態ファイル• 状態ファイルは、/root/rebootWatch/ に「{インス  タンス名(tag:Name)}.txt」のファイル名で置か  れるテキストファイル• 1レコードは、「Time Type Message」の...
ファイル設計 – ログファイル• 一応、後で調べられるように状態ファイ  ルと同じフォーマットでログファイルを  保存しておく• ログファイルは、「{インスタンス名}-  YYYYMMDD.txt」というファイル名で1日1  ファイル
実装楽勝~(^_^)/
試行錯誤• 当初の設計では、「今はメンテナンス中な  ので、サービスを停止(ApacheやTomcatを  stop)する」などのときに、うっかりホスト  がリブートすると面倒なので、サービスが  立って(LISTENして)いないときは、リブー...
備えあれば憂いなし!これで寝られる~(^_^)/• ダウンロード: http://bit.ly/104LVnC
Upcoming SlideShare
Loading in …5
×

AWS EC2の自動リブート

2,675 views

Published on

  • Be the first to comment

AWS EC2の自動リブート

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

×