SlideShare uma empresa Scribd logo
1 de 50
Baixar para ler offline
Fabric + Amazon EC2で

快適サポート生活	
2013/07/27	
  
@shiumachi	
  
アジェンダ	
  
•  前回のおさらい:	
  Fabric	
  とは	
  
•  サポートにおける課題	
  
•  EC2	
  を使った検証環境の構築	
  
お前誰よ?	
  
•  Sho	
  Shimauchi	
  	
  (	
  @shiumachi	
  )	
  
•  Cloudera	
  の問い合わせ担当	
  
←付録B、C、D書きました	
  
おことわり	
  
•  今日話す内容は、私が個人で行っているもの
で、会社全体でやってるわけじゃないです	
  
•  あくまでこういうやり方もありますよ、というア
イデア程度のものと認識してください	
  
2013.03	
  
drillbitsによる	
  
Fabric	
  の紹介	
  
Fabric	
  
•  Python製デプロイ・システム管理支援ツール	
  
•  アプリケーションのデプロイやシステム管理
のコマンドをSSHで実行	
  
•  作成したスクリプトはコマンドラインから実行
可能	
  
特長	
  
	
  
特長	
  
マジ簡単	
  
Fabricスクリプトの例	
  
from	
  fabric.api	
  import	
  run	
  
	
  
def	
  host_type():	
  
	
  	
  	
  	
  run('uname	
  -­‐s')	
  
Fabricスクリプトの例	
  
from	
  fabric.api	
  import	
  run	
  
	
  
def	
  host_type():	
  
	
  	
  	
  	
  run('uname	
  -­‐s')	
  
関数名	
  =	
  	
  
実際のコマンド 	
  
Fabricスクリプトの例	
  
from	
  fabric.api	
  import	
  run	
  
	
  
def	
  host_type():	
  
	
  	
  	
  	
  run('uname	
  -­‐s')	
  
関数名	
  =	
  	
  
実際のコマンド 	
  
リモートマシンで	
  
実行するコマンド 	
  
Fabricコマンドの実行例	
  
$	
  fab	
  -­‐H	
  localhost,linuxbox	
  host_type	
  
Fabricコマンドの実行例	
  
$	
  fab	
  -­‐H	
  localhost,linuxbox	
  host_type	
  
ターゲットのホスト名	
  
“localhost”	
  と	
  “linuxbox”	
  
Fabricコマンドの実行例	
  
$	
  fab	
  -­‐H	
  localhost,linuxbox	
  host_type	
  
ターゲットのホスト名	
  
“localhost”	
  と	
  “linuxbox”	
  
関数をコマンド	
  
として実行 	
  
Fabricコマンドの実行例	
  
$	
  fab	
  -­‐H	
  localhost,linuxbox	
  host_type	
  
[localhost]	
  run:	
  uname	
  -­‐s	
  
[localhost]	
  out:	
  Darwin	
  
[linuxbox]	
  run:	
  uname	
  -­‐s	
  
[linuxbox]	
  out:	
  Linux	
  
	
  
Done.	
  
DisconnecUng	
  from	
  localhost...	
  done.	
  
DisconnecUng	
  from	
  linuxbox...	
  done.	
  
Fabricコマンドの実行例	
  
$	
  fab	
  -­‐H	
  localhost,linuxbox	
  host_type	
  
[localhost]	
  run:	
  uname	
  -­‐s	
  
[localhost]	
  out:	
  Darwin	
  
[linuxbox]	
  run:	
  uname	
  -­‐s	
  
[linuxbox]	
  out:	
  Linux	
  
	
  
Done.	
  
DisconnecUng	
  from	
  localhost...	
  done.	
  
DisconnecUng	
  from	
  linuxbox...	
  done.	
  
localhost	
  
linuxbox	
  
Fabricコマンドの実行例	
  
$	
  fab	
  -­‐H	
  localhost,linuxbox	
  host_type	
  
[localhost]	
  run:	
  uname	
  -­‐s	
  
[localhost]	
  out:	
  Darwin	
  
[linuxbox]	
  run:	
  uname	
  -­‐s	
  
[linuxbox]	
  out:	
  Linux	
  
	
  
Done.	
  
DisconnecUng	
  from	
  localhost...	
  done.	
  
DisconnecUng	
  from	
  linuxbox...	
  done.	
  
localhost	
  
linuxbox	
  
リモートマシンで	
コマンドが実行された	
  
マジ簡単	
  
2013.04	
  
マジ大人気	
  
話は変わって、サポートの話	
  
•  ベンダーサポートのメイン業務は障害対応	
  
•  障害対応のキモは現象再現	
  
•  現象再現のキモは環境再現	
  
理想	
  
全てのお客様の環境の複製を	
  
社内に持っている	
  
理想	
  
全てのお客様の環境の複製を	
  
社内に持っている	
  
現実	
  
そんなの無理	
  
サポートの観点からの検証環境	
  
種類	
   長所	
   短所	
  
ローカルマシンのVM	
   手軽に使える	
  
(VM起動ソフト以外は)無料	
  
リソースの制約が厳しい
(CPU、メモリ、ディスク全て)	
  
社内共有サーバ	
   比較的豊富なリソースを確保
できる	
  
全員で共有するので1人当たり
の設備投資は比較的安価	
  
サーバ自体の専有が難し
い	
  
破壊的な検証ができない	
  
長期的に見れば安くても、
イニシャルコストは結構か
かる	
  
クラウド環境	
   手軽に使える	
  
イニシャルコストがかからない	
  
破壊的な検証も容易	
  
	
  
ネットワークがない環境だ
と使用不能	
  
ランニングコストは結構か
かる	
  
サポート用環境と他の環境の違い	
  
構築期間	
   運用期間	
   環境の種類	
  
Webサービスの環
境	
  
数日〜数週間	
   1年〜数年	
  
(ただし頻繁に更新
する)	
  
そこそこ多い	
  
エンタープライズシ
ステム	
  
数ヶ月〜数年	
   数年以上	
   ほとんどない	
  
サポート用環境	
   	
  
	
  
	
  
	
  
	
  
	
  
サポート用環境と他の環境の違い	
  
構築期間	
   運用期間	
   環境の種類	
  
Webサービスの環
境	
  
数日〜数週間	
   1年〜数年	
  
(ただし頻繁に更新
する)	
  
そこそこ多い	
  
エンタープライズシ
ステム	
  
数ヶ月〜数年	
   数年以上	
   ほとんどない	
  
サポート用環境	
   数分〜数時間	
  
(設計含む)	
  
数時間〜数日	
   コンポーネントの組
み合わせ数だけあ
る(事実上無限)	
  
	
  
	
  
	
  
サポート用環境と他の環境の違い	
  
構築期間	
   運用期間	
   環境の種類	
  
Webサービスの環
境	
  
数日〜数週間	
   1年〜数年	
  
(ただし頻繁に更新
する)	
  
そこそこ多い	
  
エンタープライズシ
ステム	
  
数ヶ月〜数年	
   数年以上	
   ほとんどない	
  
サポート用環境	
   数分〜数時間	
  
(設計含む)	
  
数時間〜数日	
   コンポーネントの組
み合わせ数だけあ
る(事実上無限)	
  
しかも、「間違った」
環境を構築する必
要もある	
  
サポート対象のソフト	
  
•  約20種類	
  
•  メジャーバージョン2つ、それぞれにマイナー
バージョンが5つ、計10バージョン	
  
•  これらのバージョンが組み合わせて使用され
る	
  
Hadoop:	
  サーバの数が多い	
  
マスタ1	
   マスタ2	
   マスタ3	
  
スレーブ	
  
スレーブ	
  
スレーブ	
  
スレーブ	
  
スレーブ	
  
スレーブ	
  
スレーブ	
  
スレーブ	
  
クライアント	
  
管理	
  
サーバ	
  
解決策:	
  fabric	
  +	
  	
  
EC2	
  スポットインスタンス	
  
•  環境の組み合わせ数が多く、しかも毎回異な
る	
  
– chef	
  /	
  ansible	
  などよりも毎回カスタマイズして構
築する方が速い	
  
•  環境は使い捨て	
  
– スポットインスタンスなら安く済ませられる	
  
Amazon	
  EC2	
  スポットインスタンス 	
  
•  安い	
  
– m1.large	
  だと価格は通常の20%以下	
  
– 1時間あたり6.7円	
  
•  永続化できない	
  
– 停止したら削除	
  
m1.large	
  
通常のインスタンス	
  
35円	
  /	
  時間	
  
m1.large	
  
スポットインスタンス	
  
6.7円	
  /	
  時間	
  
基本戦略	
  
•  ローカル環境(VMなど)で再現できるなら、極
力そちらを使う	
  
•  EC2	
  を使うのは必要な場合だけ(サーバ間の
通信の問題やソフトウェアの組み合わせ時の
調査など)	
  
基本戦略	
  
•  ローカル環境(VMなど)で再現できるなら、極
力そちらを使う	
  
•  EC2	
  を使うのは必要な場合だけ(サーバ間の
通信の問題やソフトウェアの組み合わせ時の
調査など)	
  
•  手動でやった方が早いかどうかのトリアージ
が重要	
  
– サポートは1分1秒を争う仕事	
  
現象再現までの流れ	
  
インスタンスの起動	
  
OS周りの構築	
  
ソフトウェアの環境構築	
  
現象再現の試行開始	
  
テストデータの投入	
  
現象再現までの流れ	
  
インスタンスの起動	
  
OS周りの構築	
  
ソフトウェアの環境構築	
  
現象再現の試行開始	
  
テストデータの投入	
  
手動で起動している	
  
毎回必要な数も違うた
め、スクリプト化するより
手動の方が速い	
  
頻度が上がったら自動
化するかも	
  
	
  
現象再現までの流れ	
  
インスタンスの起動	
  
OS周りの構築	
  
ソフトウェアの環境構築	
  
現象再現の試行開始	
  
テストデータの投入	
  
Fabric	
  で構築スクリプト
を保持	
  
作成後はAMI(EC2上の
ディスクイメージみたい
なやつ)として保存	
  
ここは	
  Chef	
  /	
  ansible	
  を
使ってもいいかも	
  
現象再現までの流れ	
  
インスタンスの起動	
  
OS周りの構築	
  
ソフトウェアの環境構築	
  
現象再現の試行開始	
  
テストデータの投入	
  
どのコンポーネントをインス
トールするか、などをFabric
コマンドから選択	
  
インストール後の設定もここ
で行う	
  
バージョンの違いはここで吸
収する	
  
現象再現までの流れ	
  
インスタンスの起動	
  
OS周りの構築	
  
ソフトウェアの環境構築	
  
現象再現の試行開始	
  
テストデータの投入	
  
調査対象のソフトや、お客
様のユースケースによって
テストデータの種類が異な
る	
  
まだ自動化できてないので、
データ生成から自動化した
い	
  
現象再現までの流れ	
  
インスタンスの起動	
  
OS周りの構築	
  
ソフトウェアの環境構築	
  
現象再現の試行開始	
  
テストデータの投入	
  
多くの場合手動での作業	
  
同一の手順が増えたら自動
化する	
  
実際のスクリプトはこんな感じ	
  
サポートとしてのFabricの使い方	
  
•  「手順書書くよりFabric」	
  
•  「メモ帳に残すよりFabric」	
  
•  大抵は同じ環境は二度と使わない	
  
•  しかし、場合によっては一週間後に使うかもし
れない	
  
•  サポートは救急隊員	
  
– 手動の方が早い場合も多い	
  
– 自動・手動のバランスをとりましょう	
  
よくある質問	
  
Q.	
  冪等性はどうなるの?	
  
A.	
  Chef	
  とか Ansible	
  を使ってください	
  
	
  
Q.	
  インストールにも	
  Fabric	
  は使えるの?	
  
A.	
  以下の場合は最初から	
  Chef	
  /	
  Ansible	
  を使いま
しょう。	
  
-­‐  環境の再利用性が高い	
  
-­‐  そこそこ複雑な構成	
  
これらのツールは学習コストが高いので考えなしに
突撃するのはおすすめしない	
  
よくある質問	
  
Q.	
  実運用するときにfabfileを1つだけ作るのか、
それとも分けた方がいいのか	
  
A.	
  場合によりますが、今後修正・拡張するなら
分けた方がいいかと	
  
	
  
Q.	
  fabtool	
  とか	
  cuisine	
  はいつ使えばいいの?	
  
A.	
  fabric	
  だけで書くのがめんどくなったと感じた
ときに調べればいいと思います	
  
よくある質問	
  
Q.	
  sudo	
  するときにパスワード入れるのめんどくさい	
  
A.  /etc/sudoers	
  に NOPASSWD	
  追加してください	
  
Q.	
  同じIPを env.host	
  に設定するとどうなるの?	
  
A.	
  ダブりは削除されます	
  
Q.	
  標準出力のサイズが大きいとどうなるの?	
  
A.	
  プロセスが止まって結果が返ってこなくなるかも	
  
Q.	
  SSHのポートが22番と異なるときはどうすればいい?	
  
A.	
  host:port	
  で普通に指定できます	
  
	
  
おしまい	
  

Mais conteúdo relacionado

Mais procurados

CDP(キャンペーンサイト編)
CDP(キャンペーンサイト編)CDP(キャンペーンサイト編)
CDP(キャンペーンサイト編)
Hiroyasu Suzuki
 
俺のZabbixがこんなに可愛いわけがない
俺のZabbixがこんなに可愛いわけがない俺のZabbixがこんなに可愛いわけがない
俺のZabbixがこんなに可愛いわけがない
Seiichiro Ishida
 
ピクシブの自作インフラ事情
ピクシブの自作インフラ事情ピクシブの自作インフラ事情
ピクシブの自作インフラ事情
Ryuta Kamizono
 
Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術
KinebuchiTomo
 
20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ
Yasuhiro Araki, Ph.D
 
初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし
Oonishi Takaaki
 
Jvm operation casual talks
Jvm operation casual talksJvm operation casual talks
Jvm operation casual talks
oranie Narut
 

Mais procurados (20)

CDP(キャンペーンサイト編)
CDP(キャンペーンサイト編)CDP(キャンペーンサイト編)
CDP(キャンペーンサイト編)
 
俺のZabbixがこんなに可愛いわけがない
俺のZabbixがこんなに可愛いわけがない俺のZabbixがこんなに可愛いわけがない
俺のZabbixがこんなに可愛いわけがない
 
ピクシブの自作インフラ事情
ピクシブの自作インフラ事情ピクシブの自作インフラ事情
ピクシブの自作インフラ事情
 
作られては消えていく泡のように儚いクラスタの運用話
作られては消えていく泡のように儚いクラスタの運用話作られては消えていく泡のように儚いクラスタの運用話
作られては消えていく泡のように儚いクラスタの運用話
 
AWS Auroraよもやま話
AWS Auroraよもやま話AWS Auroraよもやま話
AWS Auroraよもやま話
 
Terraforming
TerraformingTerraforming
Terraforming
 
Rds徹底入門
Rds徹底入門Rds徹底入門
Rds徹底入門
 
Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術
 
Aws privte20110406 arai
Aws privte20110406 araiAws privte20110406 arai
Aws privte20110406 arai
 
20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ
 
Ansibleハンズオン勉強会
Ansibleハンズオン勉強会Ansibleハンズオン勉強会
Ansibleハンズオン勉強会
 
Introduction to arm virtualization
Introduction to arm virtualizationIntroduction to arm virtualization
Introduction to arm virtualization
 
2007 03 17_osc2007spring_02
2007 03 17_osc2007spring_022007 03 17_osc2007spring_02
2007 03 17_osc2007spring_02
 
フロントエンドの人にも知ってもらいたいサーバーの話
フロントエンドの人にも知ってもらいたいサーバーの話フロントエンドの人にも知ってもらいたいサーバーの話
フロントエンドの人にも知ってもらいたいサーバーの話
 
Osoljp201204
Osoljp201204Osoljp201204
Osoljp201204
 
Ansible meetuptokyo 2015 Dynamic Inventory
Ansible meetuptokyo 2015 Dynamic InventoryAnsible meetuptokyo 2015 Dynamic Inventory
Ansible meetuptokyo 2015 Dynamic Inventory
 
初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし
 
Severless&Micro Service
Severless&Micro ServiceSeverless&Micro Service
Severless&Micro Service
 
Jvm operation casual talks
Jvm operation casual talksJvm operation casual talks
Jvm operation casual talks
 
Windows Azure の中でも動いている InfiniBand って何?
Windows Azure の中でも動いている InfiniBand って何?Windows Azure の中でも動いている InfiniBand って何?
Windows Azure の中でも動いている InfiniBand って何?
 

Destaque

Destaque (10)

浅野高等学校 2015年度 卒業生講演
浅野高等学校 2015年度 卒業生講演浅野高等学校 2015年度 卒業生講演
浅野高等学校 2015年度 卒業生講演
 
Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining
Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebminingImpala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining
Impala データサイエンティストのための 高速大規模分散基盤 #tokyowebmining
 
Riakはなぜ良いのか
Riakはなぜ良いのかRiakはなぜ良いのか
Riakはなぜ良いのか
 
DynamoDB活用事例 株式会社マイネット
DynamoDB活用事例 株式会社マイネットDynamoDB活用事例 株式会社マイネット
DynamoDB活用事例 株式会社マイネット
 
運用が楽になる分散データベース Riak
運用が楽になる分散データベース Riak運用が楽になる分散データベース Riak
運用が楽になる分散データベース Riak
 
Azkaban-en
Azkaban-enAzkaban-en
Azkaban-en
 
Azkaban
AzkabanAzkaban
Azkaban
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南
 
いつやるの?Git入門
いつやるの?Git入門いつやるの?Git入門
いつやるの?Git入門
 

Semelhante a Fabric + Amazon EC2で快適サポート生活 #PyFes

20121221 AWS re:Invent 凱旋報告
20121221 AWS re:Invent 凱旋報告20121221 AWS re:Invent 凱旋報告
20121221 AWS re:Invent 凱旋報告
真吾 吉田
 
AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -
SORACOM, INC
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
Daisuke Ikeda
 

Semelhante a Fabric + Amazon EC2で快適サポート生活 #PyFes (20)

捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker
 
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようDockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しよう
 
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
 
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
【アシアル塾】Linux超入門編・第一回はじめてのターミナル(黒い画面)操作
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
Fabric Essentials
Fabric EssentialsFabric Essentials
Fabric Essentials
 
Zynga
ZyngaZynga
Zynga
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用
 
20121221 AWS re:Invent 凱旋報告
20121221 AWS re:Invent 凱旋報告20121221 AWS re:Invent 凱旋報告
20121221 AWS re:Invent 凱旋報告
 
20130326 aws meister-reloaded-windows
20130326 aws meister-reloaded-windows20130326 aws meister-reloaded-windows
20130326 aws meister-reloaded-windows
 
2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム
 
Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
 
.NET vNext
.NET vNext.NET vNext
.NET vNext
 
JAWS DAYS 2015
JAWS DAYS 2015JAWS DAYS 2015
JAWS DAYS 2015
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築
 
Osc2009 Do Xen Hara
Osc2009 Do Xen HaraOsc2009 Do Xen Hara
Osc2009 Do Xen Hara
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
 
AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン(CDP) - Eコマース編 -
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
 
ビルドサーバで使うDocker
ビルドサーバで使うDockerビルドサーバで使うDocker
ビルドサーバで使うDocker
 

Fabric + Amazon EC2で快適サポート生活 #PyFes