• Like
Using Chef for Infrastructure Automation of Ameba Pigg
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Using Chef for Infrastructure Automation of Ameba Pigg

  • 8,073 views
Published

DevOps Days Tokyo 2012

DevOps Days Tokyo 2012

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
8,073
On SlideShare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
62
Comments
0
Likes
19

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Using Chef for InfrastructureAutomation of Ameba Pigg Yuuki NAMIKAWA Cyberagent Inc. [DevOps Days Tokyo 2012] 1
  • 2. 自己紹介並河 祐貴 (a.k.a. id:rx7)(株)サイバーエージェント所属主にインフラエンジニアBlog: http://d.hatena.ne.jp/rx7/Twitter: @namikawa著書・寄稿多数 2
  • 3. 最初に謝罪 m(_”_)m 3
  • 4. 今日の話は・・・DevOpsの細かい話はしません ごめんなさい弊社でのサービス運用についてChefを匏用したプログラマブルなシステム基盤 んまぁ、つまりChefの話をしに来ました! 4
  • 5. アメーバピグ (Ameba Pigg) 5
  • 6. アメーバピグ (Ameba Pigg) アバター仮想空間サービス きせかえ、おでかけ ゲーム(カジノ、つり、ライフ(庭)、アイランド) ユーザ数 1190万人 (2012/03, Amebaユーザの約半数) トラフィック (アバター/ゲーム) 約6 7Gbps / ピーク帯 同時接続ユーザ数 (アバター/ゲーム) 約40万ユーザ / ピーク帯 6
  • 7. ピグでのシステム運用スタイル職種は一応存在する アプリエンジニア(Dev?) インフラエンジニア(Ops?)...チーム・体制 各施策ごとに機能開発を担当するチーム 非機能部分(勯能・勣定・捓厾化)を担当するチーム基本的にシステム運用は全員プレイ モニタリングも 障害対応も リリースやサーバ設定も 当番はありますが、基本的にエンジニア全員で担当します 7
  • 8. 皆がWinになれるか 8
  • 9. アウトプットを高めるためのアプローチ作業の捓厾化・自動化施策・タスクの選択と集中情報共有・コミュニケーション・マインド...etc 9
  • 10. システム運用する上でのツール運用匳 の厢损でツールによる作業捓厾化 アプリケーションのデプロイ サーバを増設する 設定厭 を卬 する ...etcアプリ/インフラ 方の匞 が必要 セットアップ、パフォーマンスチューニング、トラブ ルシューティング... 10
  • 11. 少し昔の話 11
  • 12. 僕が今の会社に入って一番最初にやった仕事 12
  • 13. ピグのWeb/APサーバを3台増設その時に渡された手順書(1台分) 13
  • 14. 14
  • 15. アメーバピグ・ピグライフの規模感アメーバピグ サーバ台数: 約220台 (⇒ 150台まで削減予定) – Web/APサーバ40台 – Socketサーバ75台 – DB(MySQL+FIO)サーバ6台 x 2(スタンバイ) – API, Hadoop Cluster, Mobile, Smart Phone... – etc...ピグライフ サーバ台数: 約250台 – Socket(node.js)サーバ70台、 – DB(MongoDB)サーバ150台 – Statサーバ20台 – etc... 15
  • 16. ピグのサーバ増設・運用拻サービス・システム規模、共に右肩上がり急な増設を求められることもあります ビッグイベントにあわせて30台入れちゃうとか 想定を捪えるスピードでサービスが成 するとかそこで「Chef」を使ってみました 16
  • 17. それ、クラウド使ったらでk(ry クラウドも、運用を捓厾化する1要素ミドルウェアの設定拻 や、プロセスの状態拻 も 含めて今回は「Chef」で自動化する話をします 17
  • 18. Chefの概要http://www.flickr.com/photos/jonathanbeard/3307862620/ 18
  • 19. 「Chef」とは サーバの構築作業やシステム拻 のツール システムのあるべき状態を設定する オープンソース、Ruby製 匏用実 37signals Engine Yard Rackspace hosting etc…http://www.flickr.com/photos/jonathanbeard/3307862620/ 19
  • 20. サーバ構築・システム拻 自動化の必要勯 手作業では、そもそも時間がかかる 数十台、数百台のレベルになると・・・ 同 叓厎のサーバごとに環境挽 が発生したりとか サーバ匐入までのリードタイムが くなることで 機会損失を発生させることは避けたい 人為的なミスを抑えたい 作業 れ、ルーチン作業でのオ ミス 作業者によって、スキルにバラつき 運用中のサーバでのミスは特に無くしたい 設定に間違いがあっても自動化しておく事で即修正可能http://www.flickr.com/photos/jonathanbeard/3307862620/ 20
  • 21. それ、シェルスクリプトでよくね? サーバの状態が記述できるフレームワーク 基本的なタスクが備わっている 拻 タスクの厍拾をできるだけ える Chefでは内部DSLを採用 Rubyでの柔軟な記述ができる プラットフォームの挽 が 厓できる ディストリビューションによってコマンドに挽 yumとaptとかhttp://www.flickr.com/photos/photomequickbooth/4062072718/ 21
  • 22. Chefのシステムアーキテクチャ Ruby CouchDB Solr Merb(Rack) CouchDB Chef-Solr Indexer Solr RabbitMQ Chef-Server RabbitMQ (Java) API (Erlang) Chef-Server HTTP(REST) WebUI JSON Chef-Client Chef-Client Knife Chef-Client Clienthttp://www.flickr.com/photos/jonathanbeard/3307862620/ 22
  • 23. Chefでの”主な”登場人物 Node Role Cookbook Recipe Template Attribute 時間の都合上、基本を簡単にご紹介しますhttp://www.flickr.com/photos/jonathanbeard/3307862620/ 23
  • 24. Node, Role, Cookbook の関連(捁) nginxのCookbook サーバA APサーバの Passengerの Role Cookbook サーバB RubyのCookbook サーバC gitのCookbook Node Role Cookbook 拻 対拺の 拻 対拺の システムのあるべき形を サーバ グルーピング 定義する設定http://www.flickr.com/photos/jonathanbeard/3307862620/ 24
  • 25. Chefのリポジトリ構造 (Cookbook) cookbooks/ 設定したいパラメータ(各サーバ 固有のものやデフォルト値など) |-- attributes を記述したもの |-- definitions |-- files |-- libraries システムのあるべき姿、 |-- providers つまり設定内容を実際に 記載したRubyスクリプト |-- recipes |-- resources `-- templates サーバへ配置する設定ファイルの テンプレートで、eRubyで記述するhttp://www.flickr.com/photos/jonathanbeard/3307862620/ 25
  • 26. Recipe、Templateの一捁 ./recipe/default.rb ./templates/default/ports.conf.erb package "apache2" do Listen <%= port %> action :install NameVirtualHost *:<%=port %> end template "/etc/apache2/ports.conf" do source "ports.conf.erb" ./attributes/default.rb owner "root" default[:port] = “8080" group "root" mode 0644 variables( :port => node[:port] ) end “port”:”80” “node A”の情報を保持 [Node Attribute], service "apache2" do [Run List] 等 action [ :enable, :start ] recipeの設定 end chef-client node A Chef-Serverhttp://www.flickr.com/photos/jonathanbeard/3307862620/ 26
  • 27. Chefで匏用できるResource Cookbook File Mount Cron Ohai Deploy Package Directory PowerShell Script Erlang Call Remote Directory Execute Remote File File Route Git Ruby Block Group SCM HTTP Request Script Ifconfig Service Link Subversion Log Template Mdadm Userhttp://www.flickr.com/photos/jonathanbeard/3307862620/ 27
  • 28. Chefのちょっとイケていないところ サーバのセットアップが面倒くさい 必要なのは最初だけなので、許容できる クライアントは簡単 名前がSEO的に致命的 Chef, Cookbook, Recipe, knife... リアルに調べ物をする時に困ります dry-runができない テスト環境が必須 (クラウド・仮想化が最適)http://www.flickr.com/photos/photomequickbooth/4062072718/ 28
  • 29. Chefの運用http://www.flickr.com/photos/jonathanbeard/3307862620/ 29
  • 30. Chefを活用したサーバ増設 PXE + kickstart + Chef 1. 事前に chef-server 側でNodeの設定が必要 2. サーバに線を繋ぎ電源ON、PXEブート開始 3. Label No.とNode名を入 し、OSインストール開始 4. 同時に chef-client のインストールと設定 5. kickstart の %post で chef-client を実 kickstartのcfgファイル 通常のOS インストールタスク 通信 client PXE+ksサーバ chef-clientのインストール OSインストール後 通信 chef-clientの設定 は直接通信 chef-clientの Chef-Serverhttp://www.flickr.com/photos/jonathanbeard/3307862620/ 30
  • 31. Chefを活用したサーバ増設 今はオンプレミスな物 環境を想定 クラウド環境でも応用可能 EC2だと、事前にAMIを作成しておいて、user-dataに Node名を指定して... (弊社のOpenStackクラウド基盤を活用したい)http://www.flickr.com/photos/jonathanbeard/3307862620/ 31
  • 32. Cookbookの使い方 Cookbookの捁 ネットワーク設定 H/Wに必要な設定 – 主にH/W固有で必要なドライバやRAIDチェックスクリプト等 各サーバ共通で必要な設定 – DNS, NTP, LDAP, 監視ライブラリ, 鍵交換等 各Roleで必要な設定 NodeへのCookbook設定 RoleへのCookbook設定 { { "run_list": [ "run_list": [ "recipe[network::xxxxx]", "recipe[ameba-common::pigglife]", "recipe[hw::dell_r310]", "recipe[pigglife-mongodb::mongod]" “role[pigglife-mongodb]" ] ] } }http://www.flickr.com/photos/jonathanbeard/3307862620/ 32
  • 33. Cookbookでのコミュニケーション セットアップ手順のチェックをRecipe (Cookbook)という名のコードベースで バージョン拻 しているので、厢掇との挽分も卾 認しやすい 誰でもRead/Writeできる場所にあるので、みん なでメンテナンスできるhttp://www.flickr.com/photos/jonathanbeard/3307862620/ 33
  • 34. Chefを使う上でやっていること Script Resource は基本的に使わない 挬 でも実 される chef-client実 時のチェック・運用が面倒 挬 実 しても勬匑ないものしか使わない 過去、こんな感じで書いていました... script “script_name" do interpreter "bash" user “username" creates comp_dir + “script_name.done" code <<-EOH command ...... ...... EOH endhttp://www.flickr.com/photos/jonathanbeard/3307862620/ 34
  • 35. Chefを使う上でやっていること 各nodeのChef適用は、chef-clientを実 tomahawk: 数のサーバで同 コマンドを実 “knife ssh”, “knife ssh_cheto” を使いたい NodeのAttributeの登録 JSONファイルを自動生成して登録・バージョン拻 アンインストール・削揄等の叀 も れずに Environment(0.10 )の活用 development, staging, productionの分別http://www.flickr.com/photos/jonathanbeard/3307862620/ 35
  • 36. これからChefを勉強する方へ chef-solo が 匏 chef-server を必要とせず、ローカルにCookbookを 適用できる VMでテストとか練習とか Chefのインタラクティブシェル “shef” Opscode Platform (Hosted Chef) Chefのホスティング環境 (サーバ) 5 nodes までなら、無厄で試せるhttp://www.flickr.com/photos/jonathanbeard/3307862620/ 36
  • 37. まとめと今後の展望 Chefを活用することで多くのサーバの増設・拻 にかかる負担を軽減 あるべき状態に自動で設定・維持できる ルールを少し覚えれば、誰でも簡単に設定が書ける 内部DSLなので、Rubyを覚えれば叀 も柔軟に書ける クラウド等の基盤サービスと連携して、インフラ 構築/運用の完全オートメーションができる仕組 みにしたいhttp://www.flickr.com/photos/jonathanbeard/3307862620/ 37