SlideShare une entreprise Scribd logo
1  sur  15
AWS EC2の自動リブート
             rebootWatch開発



          株式会社アイビス
      代表取締役社長 神谷栄治
              2012/1/6
自己紹介
 •   株式会社アイビス 代表取締役社長
 •   ハンドル:かみやん
 •   Twitter:@kamiyan
 •   好きな言語:Java, C++, Objective-C
 •   代表作:
     – ibisBrowser(アイビスブラウザ)
     – ibisMail(アイビスメール)
     – ibisPaint(アイビスペイント)
AWS最高~~~!(^_^)/
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

Contenu connexe

Tendances

AWS 初心者抜けきれない私がAWS Samurai と AWS Community Builder の特権フル活用したらどんなものが作れるか挑戦する
AWS 初心者抜けきれない私がAWS Samurai と AWS Community Builder の特権フル活用したらどんなものが作れるか挑戦するAWS 初心者抜けきれない私がAWS Samurai と AWS Community Builder の特権フル活用したらどんなものが作れるか挑戦する
AWS 初心者抜けきれない私がAWS Samurai と AWS Community Builder の特権フル活用したらどんなものが作れるか挑戦するKahori Takeda
 
JAWS DAYS 2015 AWS OpsWorksの仕組みと活用方法のご紹介
JAWS DAYS 2015 AWS OpsWorksの仕組みと活用方法のご紹介JAWS DAYS 2015 AWS OpsWorksの仕組みと活用方法のご紹介
JAWS DAYS 2015 AWS OpsWorksの仕組みと活用方法のご紹介Kenji Funasaki
 
CloudGarageのベンチマークテスト
CloudGarageのベンチマークテストCloudGarageのベンチマークテスト
CloudGarageのベンチマークテストKazunori Inaba
 
モバイルファースト時代のクラウドネイティブアーキテクチャ JAWS DAYS 2015
モバイルファースト時代のクラウドネイティブアーキテクチャ JAWS DAYS 2015モバイルファースト時代のクラウドネイティブアーキテクチャ JAWS DAYS 2015
モバイルファースト時代のクラウドネイティブアーキテクチャ JAWS DAYS 2015Rikitake Oohashi
 
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみてアプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみてSato Shun
 
AWSを利用してDevとOpsの間を考える
AWSを利用してDevとOpsの間を考えるAWSを利用してDevとOpsの間を考える
AWSを利用してDevとOpsの間を考えるJunichiro Ueno
 
5分でできる ebfly
5分でできる ebfly5分でできる ebfly
5分でできる ebflyKazuyuki Honda
 
JAWS-DAYS 2015 / 北海道 x 農業 x クラウド
JAWS-DAYS 2015 / 北海道 x 農業 x クラウドJAWS-DAYS 2015 / 北海道 x 農業 x クラウド
JAWS-DAYS 2015 / 北海道 x 農業 x クラウドTakehito Tanabe
 
EC-CUBEによるECサイトの負荷対策
EC-CUBEによるECサイトの負荷対策EC-CUBEによるECサイトの負荷対策
EC-CUBEによるECサイトの負荷対策Kazunori Inaba
 
Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解都元ダイスケ Miyamoto
 
気が狂わないサーバ増設x10
気が狂わないサーバ増設x10気が狂わないサーバ増設x10
気が狂わないサーバ増設x10Kiyotaka Kunihira
 
Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetupJava + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetupToshiaki Maki
 
Application Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless WorldApplication Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless WorldKeisuke Nishitani
 
JAWS-UG 初心者支部 #4 東急ハンズのEC2の使いかた
JAWS-UG 初心者支部 #4 東急ハンズのEC2の使いかたJAWS-UG 初心者支部 #4 東急ハンズのEC2の使いかた
JAWS-UG 初心者支部 #4 東急ハンズのEC2の使いかたTomoaki Imai
 
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれからReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれからYusuke Murata
 
AWS re:Invent 2015に初参戦→気づいたらOSS二つ作ってた
AWS re:Invent 2015に初参戦→気づいたらOSS二つ作ってたAWS re:Invent 2015に初参戦→気づいたらOSS二つ作ってた
AWS re:Invent 2015に初参戦→気づいたらOSS二つ作ってた佑介 九岡
 
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介Eiji Shinohara
 
Service worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたちService worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたちKinuko Yasuda
 
Behind-the-Scenes and Goals of LINE Summer Internship Program
Behind-the-Scenes and Goals of LINE Summer Internship ProgramBehind-the-Scenes and Goals of LINE Summer Internship Program
Behind-the-Scenes and Goals of LINE Summer Internship ProgramLINE Corporation
 

Tendances (20)

AWS 初心者抜けきれない私がAWS Samurai と AWS Community Builder の特権フル活用したらどんなものが作れるか挑戦する
AWS 初心者抜けきれない私がAWS Samurai と AWS Community Builder の特権フル活用したらどんなものが作れるか挑戦するAWS 初心者抜けきれない私がAWS Samurai と AWS Community Builder の特権フル活用したらどんなものが作れるか挑戦する
AWS 初心者抜けきれない私がAWS Samurai と AWS Community Builder の特権フル活用したらどんなものが作れるか挑戦する
 
JAWS DAYS 2015 AWS OpsWorksの仕組みと活用方法のご紹介
JAWS DAYS 2015 AWS OpsWorksの仕組みと活用方法のご紹介JAWS DAYS 2015 AWS OpsWorksの仕組みと活用方法のご紹介
JAWS DAYS 2015 AWS OpsWorksの仕組みと活用方法のご紹介
 
CloudGarageのベンチマークテスト
CloudGarageのベンチマークテストCloudGarageのベンチマークテスト
CloudGarageのベンチマークテスト
 
モバイルファースト時代のクラウドネイティブアーキテクチャ JAWS DAYS 2015
モバイルファースト時代のクラウドネイティブアーキテクチャ JAWS DAYS 2015モバイルファースト時代のクラウドネイティブアーキテクチャ JAWS DAYS 2015
モバイルファースト時代のクラウドネイティブアーキテクチャ JAWS DAYS 2015
 
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみてアプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
 
AWSを利用してDevとOpsの間を考える
AWSを利用してDevとOpsの間を考えるAWSを利用してDevとOpsの間を考える
AWSを利用してDevとOpsの間を考える
 
AWS Premier Night #1
AWS Premier Night #1AWS Premier Night #1
AWS Premier Night #1
 
5分でできる ebfly
5分でできる ebfly5分でできる ebfly
5分でできる ebfly
 
JAWS-DAYS 2015 / 北海道 x 農業 x クラウド
JAWS-DAYS 2015 / 北海道 x 農業 x クラウドJAWS-DAYS 2015 / 北海道 x 農業 x クラウド
JAWS-DAYS 2015 / 北海道 x 農業 x クラウド
 
EC-CUBEによるECサイトの負荷対策
EC-CUBEによるECサイトの負荷対策EC-CUBEによるECサイトの負荷対策
EC-CUBEによるECサイトの負荷対策
 
Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解
 
気が狂わないサーバ増設x10
気が狂わないサーバ増設x10気が狂わないサーバ増設x10
気が狂わないサーバ増設x10
 
Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetupJava + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetup
 
Application Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless WorldApplication Lifecycle Management in a Serverless World
Application Lifecycle Management in a Serverless World
 
JAWS-UG 初心者支部 #4 東急ハンズのEC2の使いかた
JAWS-UG 初心者支部 #4 東急ハンズのEC2の使いかたJAWS-UG 初心者支部 #4 東急ハンズのEC2の使いかた
JAWS-UG 初心者支部 #4 東急ハンズのEC2の使いかた
 
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれからReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
 
AWS re:Invent 2015に初参戦→気づいたらOSS二つ作ってた
AWS re:Invent 2015に初参戦→気づいたらOSS二つ作ってたAWS re:Invent 2015に初参戦→気づいたらOSS二つ作ってた
AWS re:Invent 2015に初参戦→気づいたらOSS二つ作ってた
 
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介
AWS Summit San Francisco 2017 Werner Vogelsによる基調講演を徹底紹介
 
Service worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたちService worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたち
 
Behind-the-Scenes and Goals of LINE Summer Internship Program
Behind-the-Scenes and Goals of LINE Summer Internship ProgramBehind-the-Scenes and Goals of LINE Summer Internship Program
Behind-the-Scenes and Goals of LINE Summer Internship Program
 

Similaire à AWS EC2の自動リブート

スタートアップならおさえておきたいAWS(Amazon Web Services)入門 2限目:基本構成とピーク対策編
スタートアップならおさえておきたいAWS(Amazon Web Services)入門  2限目:基本構成とピーク対策編スタートアップならおさえておきたいAWS(Amazon Web Services)入門  2限目:基本構成とピーク対策編
スタートアップならおさえておきたいAWS(Amazon Web Services)入門 2限目:基本構成とピーク対策編schoowebcampus
 
[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic BeanstalkAmazon Web Services Japan
 
AWS勉強会 in 北海道札幌 at smokeymonkey #cmdevio
AWS勉強会 in 北海道札幌 at smokeymonkey #cmdevioAWS勉強会 in 北海道札幌 at smokeymonkey #cmdevio
AWS勉強会 in 北海道札幌 at smokeymonkey #cmdeviosmokey monkey
 
AWS+WordPress - AWSでスケーラブルなWordPressサイトを構築しよう
AWS+WordPress - AWSでスケーラブルなWordPressサイトを構築しようAWS+WordPress - AWSでスケーラブルなWordPressサイトを構築しよう
AWS+WordPress - AWSでスケーラブルなWordPressサイトを構築しようKiminori Yokoi
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話JustSystems Corporation
 
AWS クックパッドの運用事例
AWS クックパッドの運用事例AWS クックパッドの運用事例
AWS クックパッドの運用事例Satoshi Takada
 
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorks
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorksAWS Black Belt Tech シリーズ 2015 - AWS OpsWorks
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorksAmazon Web Services Japan
 
小さく始めて後で困らないためのVPCとChefを使ったAWS運用
小さく始めて後で困らないためのVPCとChefを使ったAWS運用小さく始めて後で困らないためのVPCとChefを使ったAWS運用
小さく始めて後で困らないためのVPCとChefを使ったAWS運用Satoru Nakamura
 
AWS サービスアップデートまとめ 2014年6月
AWS サービスアップデートまとめ 2014年6月AWS サービスアップデートまとめ 2014年6月
AWS サービスアップデートまとめ 2014年6月Yasuhiro Horiuchi
 
サクッとできるEc2インスタンスの作り方。
サクッとできるEc2インスタンスの作り方。サクッとできるEc2インスタンスの作り方。
サクッとできるEc2インスタンスの作り方。Takamasa Sakai
 
Amplify Consoleで かんたん!Webサイト公開
Amplify Consoleで かんたん!Webサイト公開Amplify Consoleで かんたん!Webサイト公開
Amplify Consoleで かんたん!Webサイト公開Daisuke Yagi
 
第2回 JAWS−UG 神戸 開発運用の現場でのChef活用
第2回 JAWS−UG 神戸  開発運用の現場でのChef活用第2回 JAWS−UG 神戸  開発運用の現場でのChef活用
第2回 JAWS−UG 神戸 開発運用の現場でのChef活用Takuro Sasaki
 
Japan AWS User Group (JAWS-UG) Hokuriku 勉強会 第8回 ハンズオン AWS+オープンソースグループウェアの構築
Japan AWS User Group (JAWS-UG) Hokuriku勉強会 第8回 ハンズオン AWS+オープンソースグループウェアの構築Japan AWS User Group (JAWS-UG) Hokuriku勉強会 第8回 ハンズオン AWS+オープンソースグループウェアの構築
Japan AWS User Group (JAWS-UG) Hokuriku 勉強会 第8回 ハンズオン AWS+オープンソースグループウェアの構築Kenichi Nakamichi
 
Azure 高速サイトソリューション
Azure 高速サイトソリューションAzure 高速サイトソリューション
Azure 高速サイトソリューションHiromasa Oka
 
AWS CLIでEC2の利用料金を節約する
AWS CLIでEC2の利用料金を節約するAWS CLIでEC2の利用料金を節約する
AWS CLIでEC2の利用料金を節約するYasuyuki Sato
 
CI/CDパイプラインを定着させる闘い @九州インフラ交流勉強会(Kixs) Vol.006
CI/CDパイプラインを定着させる闘い @九州インフラ交流勉強会(Kixs) Vol.006CI/CDパイプラインを定着させる闘い @九州インフラ交流勉強会(Kixs) Vol.006
CI/CDパイプラインを定着させる闘い @九州インフラ交流勉強会(Kixs) Vol.006Kazuhiro Uchimura
 

Similaire à AWS EC2の自動リブート (20)

スタートアップならおさえておきたいAWS(Amazon Web Services)入門 2限目:基本構成とピーク対策編
スタートアップならおさえておきたいAWS(Amazon Web Services)入門  2限目:基本構成とピーク対策編スタートアップならおさえておきたいAWS(Amazon Web Services)入門  2限目:基本構成とピーク対策編
スタートアップならおさえておきたいAWS(Amazon Web Services)入門 2限目:基本構成とピーク対策編
 
[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk[AWSマイスターシリーズ] AWS Elastic Beanstalk
[AWSマイスターシリーズ] AWS Elastic Beanstalk
 
Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
 
AWS勉強会 in 北海道札幌 at smokeymonkey #cmdevio
AWS勉強会 in 北海道札幌 at smokeymonkey #cmdevioAWS勉強会 in 北海道札幌 at smokeymonkey #cmdevio
AWS勉強会 in 北海道札幌 at smokeymonkey #cmdevio
 
AWS+WordPress - AWSでスケーラブルなWordPressサイトを構築しよう
AWS+WordPress - AWSでスケーラブルなWordPressサイトを構築しようAWS+WordPress - AWSでスケーラブルなWordPressサイトを構築しよう
AWS+WordPress - AWSでスケーラブルなWordPressサイトを構築しよう
 
ChefとOpsWorksで EC2 楽チンクッキング!
ChefとOpsWorksで EC2 楽チンクッキング!ChefとOpsWorksで EC2 楽チンクッキング!
ChefとOpsWorksで EC2 楽チンクッキング!
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
 
AWS クックパッドの運用事例
AWS クックパッドの運用事例AWS クックパッドの運用事例
AWS クックパッドの運用事例
 
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorks
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorksAWS Black Belt Tech シリーズ 2015 - AWS OpsWorks
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorks
 
小さく始めて後で困らないためのVPCとChefを使ったAWS運用
小さく始めて後で困らないためのVPCとChefを使ったAWS運用小さく始めて後で困らないためのVPCとChefを使ったAWS運用
小さく始めて後で困らないためのVPCとChefを使ったAWS運用
 
AWS サービスアップデートまとめ 2014年6月
AWS サービスアップデートまとめ 2014年6月AWS サービスアップデートまとめ 2014年6月
AWS サービスアップデートまとめ 2014年6月
 
サクッとできるEc2インスタンスの作り方。
サクッとできるEc2インスタンスの作り方。サクッとできるEc2インスタンスの作り方。
サクッとできるEc2インスタンスの作り方。
 
Amplify Consoleで かんたん!Webサイト公開
Amplify Consoleで かんたん!Webサイト公開Amplify Consoleで かんたん!Webサイト公開
Amplify Consoleで かんたん!Webサイト公開
 
第2回 JAWS−UG 神戸 開発運用の現場でのChef活用
第2回 JAWS−UG 神戸  開発運用の現場でのChef活用第2回 JAWS−UG 神戸  開発運用の現場でのChef活用
第2回 JAWS−UG 神戸 開発運用の現場でのChef活用
 
Japan AWS User Group (JAWS-UG) Hokuriku 勉強会 第8回 ハンズオン AWS+オープンソースグループウェアの構築
Japan AWS User Group (JAWS-UG) Hokuriku勉強会 第8回 ハンズオン AWS+オープンソースグループウェアの構築Japan AWS User Group (JAWS-UG) Hokuriku勉強会 第8回 ハンズオン AWS+オープンソースグループウェアの構築
Japan AWS User Group (JAWS-UG) Hokuriku 勉強会 第8回 ハンズオン AWS+オープンソースグループウェアの構築
 
Amazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep diveAmazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep dive
 
Azure 高速サイトソリューション
Azure 高速サイトソリューションAzure 高速サイトソリューション
Azure 高速サイトソリューション
 
Aws glacier
Aws glacierAws glacier
Aws glacier
 
AWS CLIでEC2の利用料金を節約する
AWS CLIでEC2の利用料金を節約するAWS CLIでEC2の利用料金を節約する
AWS CLIでEC2の利用料金を節約する
 
CI/CDパイプラインを定着させる闘い @九州インフラ交流勉強会(Kixs) Vol.006
CI/CDパイプラインを定着させる闘い @九州インフラ交流勉強会(Kixs) Vol.006CI/CDパイプラインを定着させる闘い @九州インフラ交流勉強会(Kixs) Vol.006
CI/CDパイプラインを定着させる闘い @九州インフラ交流勉強会(Kixs) Vol.006
 

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してない場合も、リブート依頼を投げ ることにした