70
Asian Automation Alliance 気が狂わないサーバ 増設x10 kuchitama AsianAutomationAlliance 2014/6/28

気が狂わないサーバ増設x10

Embed Size (px)

DESCRIPTION

Asian Automation Alience(http://kokucheese.com/event/index/160374/)にて発表した資料です。

Citation preview

Page 1: 気が狂わないサーバ増設x10

Asian Automation Alliance

気が狂わないサーバ増設x10kuchitama

AsianAutomationAlliance 2014/6/28

Page 2: 気が狂わないサーバ増設x10

Asian Automation Alliance

Kuchitama

• くちたま • FuRyu株式会社 • FuRyuTechBlog編集長 • 先週結婚式を挙げました

Page 3: 気が狂わないサーバ増設x10

Kuchitama

Page 4: 気が狂わないサーバ増設x10

Asian Automation Alliance

Case.1

Page 5: 気が狂わないサーバ増設x10

Kuchitama

and more …

Page 6: 気が狂わないサーバ増設x10

新規サーバ構築

同じ構成で!

Page 7: 気が狂わないサーバ増設x10

Asian Automation Alliance

作った人にお願い

前回と同じ構成で構築してもらえますか?

その人辞めちゃった

インフラチーム

Page 8: 気が狂わないサーバ増設x10

Asian Automation Alliance

作った人にお願い

前回と同じ構成で構築してもらえますか?

その人辞めちゃった

インフラチーム

構築者=退職者

Page 9: 気が狂わないサーバ増設x10

既存サーバを参考に

]# find / … ]# grep … ]# printenv

Page 10: 気が狂わないサーバ増設x10

EC2スケールアウト

_人人人人人人人人人_ > /etc/profile.d < ‾Y^Y^Y^Y^Y^Y^‾

Page 11: 気が狂わないサーバ増設x10

Asian Automation Alliance

Case.2

Page 12: 気が狂わないサーバ増設x10

ある日の出来事

Page 13: 気が狂わないサーバ増設x10

Nginx/Play•http://tech.furyu.jp/blog/?p=2069

Page 14: 気が狂わないサーバ増設x10

AWS•Scale up

• EC2/RDS インスタンスタイプ変更 •サーバのスペックアップ •Scale out

• EC2インスタンス追加

Page 15: 気が狂わないサーバ増設x10

EC2スケールアウトスケールアウト

Page 16: 気が狂わないサーバ増設x10

EC2スケールアウトスケールアウト

Page 17: 気が狂わないサーバ増設x10

EC2スケールアウトスケールアウト

AMI作って

Page 18: 気が狂わないサーバ増設x10

EC2スケールアウトスケールアウト

AMI作って作成

Page 19: 気が狂わないサーバ増設x10

EC2スケールアウトスケールアウト

AMI作って作成手動で

Page 20: 気が狂わないサーバ増設x10

EC2スケールアウト

_人人人人_ > 手動 < ‾Y^Y^Y‾

Page 21: 気が狂わないサーバ増設x10

手順1元になるAMIを選択

Page 22: 気が狂わないサーバ増設x10

手順1元になるAMIを選択

多いわ!

Page 23: 気が狂わないサーバ増設x10

手順2作成したEC2インスタンスに接続

Page 24: 気が狂わないサーバ増設x10

手順2作成したEC2インスタンスに接続

どれやねん!

Page 25: 気が狂わないサーバ増設x10

手順3から]# ntpd stop ]# hostname hoge ]# vi /etc/hosts ]# network restart ]# ... ]# ... ]# ...

Page 26: 気が狂わないサーバ増設x10

手順3から]# ntpd stop ]# hostname hoge ]# vi /etc/hosts ]# network restart ]# ... ]# ... ]# ...

・・・

Page 27: 気が狂わないサーバ増設x10

手順1~3]# ntpd stop ]# hostname hoge ]# vi /etc/hosts ]# network restart ]# ... ]# ... ]# ...

Page 28: 気が狂わないサーバ増設x10

手順1~3]# ntpd stop ]# hostname hoge ]# vi /etc/hosts ]# network restart ]# ... ]# ... ]# ...

これをx10

Page 29: 気が狂わないサーバ増設x10

結果

Page 30: 気が狂わないサーバ増設x10

Asian Automation Alliance

ここから得られた課題

•見える化/読める化

•暗黙知を作らない •自動化

•ルーチンを一撃で

Page 31: 気が狂わないサーバ増設x10

Asian Automation Alliance

そこで Provisioning

Page 32: 気が狂わないサーバ増設x10

Asian Automation Alliance

Provisioning Framework

Page 33: 気が狂わないサーバ増設x10

Asian Automation Alliance

Provisioning Framework

インフラ運用のコード化 Infrastructure as a code

Page 34: 気が狂わないサーバ増設x10

Asian Automation Alliance

Provisioning Framework

インフラ運用のコード化 Infrastructure as a code

決められた状態に収束 何度繰り返しても同じ結果になる べき等性

Page 35: 気が狂わないサーバ増設x10

Asian Automation Alliance

見える化/読める化

https://gist.github.com/Kuchitama/5547882

Page 36: 気が狂わないサーバ増設x10

Asian Automation Alliance

自動化

•Chef-Serverは構築がめんどうそう •あまり構築済みのサーバをへんこうすることはない

Page 37: 気が狂わないサーバ増設x10

Asian Automation Alliance

Provisioning•Ruby製 • Puppet(Pull/Push) • Chef(Pull) •Python製 • Ansible(Push)

Page 38: 気が狂わないサーバ増設x10

Asian Automation Alliance

Chef

• Chef is an automation platform that transforms infrastructure into code. Stop thinking in terms of physical and virtual servers. With Chef, your real asset is the code that brings those servers and the services they provide to life. An automated infrastructure can accelerate your time to market, help you manage scale and complexity, and safeguard your systems.

• http://www.opscode.com/chef/

Page 39: 気が狂わないサーバ増設x10

Asian Automation Alliance

Chef

• OpsCode製PF • Facebookで採用 • 単一サーバで動作するChef-Solo • サーバ-クライアント構成 • ChefServer-ChefClient

Page 40: 気が狂わないサーバ増設x10

Asian Automation Alliance

Chef

• ドキュメントが充実

• 入門Chefsolo オススメ • Cookbookも充実

Page 41: 気が狂わないサーバ増設x10

Asian Automation Alliance

knife

• ChefのCLI

• Chefと一緒にインストールされる

• Pluggable

Page 42: 気が狂わないサーバ増設x10

Asian Automation Alliance

見える化/読める化

https://gist.github.com/Kuchitama/5547882

Page 43: 気が狂わないサーバ増設x10

Asian Automation Alliance

自動化

•サーバの自動構築 •複数台のサーバに対応

Page 44: 気が狂わないサーバ増設x10

Asian Automation Alliance

knife-solo

• knifeのプラグイン • knife-solo adds a handful of commands that

aim to make working with chef-solo as powerful as chef-server.

• chef-soloをchef-serverみたいに便利にしてくれるCLIツール

• ver.0.3.0以降がオススメ

Page 45: 気が狂わないサーバ増設x10

Asian Automation Alliance

knife-solo

• knife solo prepare {host}

• chef-soloのリモートインストール

• knife solo cook {host}

• cookbookのリモート実行

Page 46: 気が狂わないサーバ増設x10

Asian Automation Alliance

knife-solo

• knife solo prepare {host}

• chef-soloのリモートインストール

• echo host1 host2 host3 | xargs -n 1 knife solo prepare

• knife solo cook {host}

• cookbookのリモート実行

• echo host1 host2 host3 | xargs -n 1 knife solo prepare

Page 47: 気が狂わないサーバ増設x10

Asian Automation Alliance

更に自動化

Page 48: 気が狂わないサーバ増設x10

Asian Automation Alliance

さらに自動化

•AWSの操作 • Ruby-SDK •サーバの操作 • Chef

Page 49: 気が狂わないサーバ増設x10

Asian Automation Alliance

作った

Page 50: 気が狂わないサーバ増設x10

Asian Automation Alliance

自動でやりたいこと

•AMIからEC2を起動 •EC2でChefレシピを実行 •EC2をAMIとして保存

Page 51: 気が狂わないサーバ増設x10

Asian Automation Alliance

更に自動化

•実行も自動化したい •タイミングはrecipeとかを更新したときがいい

→ Git push時

Page 52: 気が狂わないサーバ増設x10

Asian Automation Alliance

web api

Page 53: 気が狂わないサーバ増設x10

Asian Automation Alliance

web api

Push

POST

Page 54: 気が狂わないサーバ増設x10

Asian Automation Alliance

公開しました

•Kuchitama/ec2_automation •https://github.com/Kuchitama/ec2_automation

Page 55: 気が狂わないサーバ増設x10

Asian Automation Alliance

更に更に自動化

Page 56: 気が狂わないサーバ増設x10

Asian Automation Alliance

更に更に自動化

Page 57: 気が狂わないサーバ増設x10

Asian Automation Alliance

処理の流れ

•ec2_automationと同じことをやる •packerを使うことで… •色々なマシンイメージに対応 •色々なPFに対応(Chef以外もOK)

Page 58: 気が狂わないサーバ増設x10

Asian Automation Alliance

公開しました

•Kuchitama/packer-remote •https://github.com/Kuchitama/packer-remote/

Page 59: 気が狂わないサーバ増設x10

Asian Automation Alliance

実際のチームの現状

Page 60: 気が狂わないサーバ増設x10

Asian Automation Alliance

Chef未導入

Page 61: 気が狂わないサーバ増設x10

Asian Automation Alliance

自動化コスト•暗黙知は手順書化 •初期のサーバ構築自体は機会が少ない •ルーチンはスクリプトで •毎日本番環境をAMI化 •サーバ増設時はAMIからインスタンス起動 •アプリのデプロイは元々別で自動化済 •コマンド一つで任意台数作成可能

Page 62: 気が狂わないサーバ増設x10

Asian Automation Alliance

自動化コスト

•学習コストバランス •自動化したら誰でもできる? •動かすだけならね •自動化≠無知化

Page 63: 気が狂わないサーバ増設x10

Asian Automation Alliance

弊社現状

•今のところ問題は起こってない •シェルスクリプトとAMIを使った環境構築

•そんなことやってる間にAnsibleが

Page 64: 気が狂わないサーバ増設x10

Asian Automation Alliance

Chef-Ansible

Page 65: 気が狂わないサーバ増設x10

Asian Automation Alliance

Chef - Ansible

http://tech.furyu.jp

Page 66: 気が狂わないサーバ増設x10

Asian Automation Alliance

比較• CookBookが充実 • ググらビリティ低い • Chef = 料理人 • Opscode -> Chef • Pull型(knife-soloでpushも可能)

• Rubyの内部DSLで記述 • 日本語で本出てる

• yamlで記述 • モジュールを好きな言語で作成できる

• Push型 • 公式Playbookリポジトリがない(準備中?)

Page 67: 気が狂わないサーバ増設x10

Asian Automation Alliance

Chef•公式リポジトリの充実(コミットは面倒だけど)

• http://community.opscode.com/cookbooks

•Recipeの依存解決ツールがある(Berkshelf) •Ruby内部DSLで書ける(書き方、環境の統一がしやすい) •プロキシに弱い

Page 68: 気が狂わないサーバ増設x10

Asian Automation Alliance

Ansible•好きな言語でモジュールを書ける(組織の特色が強くなる?) •公式リポジトリみたいなのはない •プロキシの設定がしやすい •比較的環境構築が楽 •弊社でも採用

Page 69: 気が狂わないサーバ増設x10

Asian Automation Alliance

まとめ

Page 70: 気が狂わないサーバ増設x10

Asian Automation Alliance

まとめ•Chefによるプロビジョニングで • 暗黙知 -> 形式知 • ルーチン -> 自動化 •自動化の要件 • 手段/ツールが目的化しないように • ヒト/モノ/金/時間 のトレードオフ