Upload
-
View
2.681
Download
0
Embed Size (px)
DESCRIPTION
gumi study #18 講演資料 http://connpass.com/event/4822/
Citation preview
チームでChef Serverを運用するには2014/02/20 gumi study #18
Chef Server運用してます(小声)
Chefを扱うにはスキル必要?Yes
Chefを扱うには超高難度スキル必要?No
メンバー全員がちゃんと扱えている?…(´・ω・`)
Chef自体の詳細な技術的内容^
チームでChefを運用するときに注意する所
目次• 自己紹介
• Chef導入以前の業務内容
• Chef導入後の業務内容
• Chefを約1年運用してみての所感
• 改善に向けて取り組んでいること
• まとめ
目次• 自己紹介
• Chef導入以前の業務内容
• Chef導入後の業務内容
• Chefを約1年運用してみての所感
• 改善に向けて取り組んでいること
• まとめ
自己紹介•本間 知教(ほんま とものり) @CkReal
•株式会社gumi
• System Operation Engineer
•国内アプリの運用+社内の開発体制改善活動?
•非リア充担当
•好きなChefのリソース:template
目次• 自己紹介
• Chef導入以前の業務内容
• Chef導入後の業務内容
• Chefを約1年運用してみての所感
• 改善に向けて取り組んでいること
• まとめ
チーム業務概要
3%7%
15%
25%
50%
各環境のサーバ構築サーバ(+AWS)障害対応SWの技術検証開発支援ツール運用アプリ負荷試験
チーム業務概要
3%7%
15%
25%
50%
各環境のサーバ構築サーバ(+AWS)障害対応SWの技術検証開発支援ツール運用アプリ負荷試験
この部分の効率化は必須
Chef導入前(~2012)の業務状況• Puppetを使っていた時期もあった
• AMIをベースにサーバ数十台をセットアップ
• 本番環境のEC2は、十数台~百数十台
•チームメンバーのスキルセットは様々
• psshを利用して、複数サーバのセットアップ
Chef導入前(~2012)の業務状況• Puppetを使っていた時期もあった
• AMIをベースにサーバ数十台をセットアップ
• 本番環境のEC2は、十数台~百数十台
•チームメンバーのスキルセットは様々
• psshを利用して、複数サーバのセットアップ
(力技で)何とかしていた
何が問題だったか• AMIのブラックボックス化
• 歴史的経緯による、職人AMIが生まれやすい
•構築ドキュメントの管理
• 更新されないドキュメントは滅びてしまえばいい
•誰が/いつ/どのように/サーバを準備したかが不明
• 後から他メンバーが追いきれない
目次• 自己紹介
• Chef導入以前の業務内容
• Chef導入後の業務内容
• Chefを約1年運用してみての所感
• 改善に向けて取り組んでいること
• まとめ
Chefの導入経緯•チームメンバーが増えた
• 攻めの運用体制を作ろう!!
•数百台のサーバを一元管理しやすいプロダクト
• Chef Server 11が出た時期もあり、Chef Serverを採用
•既存サーバに影響を与えずに、こっそり導入
• 設定ファイルや公開鍵の配布といった簡単なことから
とはいえ…
Chef導入時に悩む点•使いこなすまでに覚える用語が多い
Environment?
Role?Node?
Cookbook?
Recipe?
•どこまでをChefにやらせるか
アプリの領域レシピの領域AMIの領域
Chef導入時に悩む点
低 高柔軟性
Chef導入時に悩む点•どの切り口でサーバの構築手順を記述するかEnvironment
RoleCookbook
Recipe
Recipe
Recipe
CookbookRecipe
Recipe
Recipe
機能単位?サーバ単位?
目次• 自己紹介
• Chef導入以前の業務内容
• Chef導入後の業務内容
• Chefを約1年運用してみての所感
• 改善に向けて取り組んでいること
• まとめ
Chef Serverを1年運用してみて•開発環境の準備は圧倒的に速くなった
• 設定ファイルのバックアップもChefに任せる
• recipeにアプリ情報は直書きしない
• 他アプリに流用する際の修正コストが大きくなる
•チームメンバーの変動
• 孤独なChef使いを生み出すことに
Chef Serverを1年運用してみて• roleにレシピを詰め込みすぎない
• roleに詰め込みすぎると、サーバの完成形が見えなくなる
"env_run_lists": { "sample": [ "role[sample]", "recipe[sample::hoge_user]", "recipe[sample::hoge_directory]", "recipe[python::python27]", "recipe[python::virtualenv]", "recipe[sample::hoge_mysql]", "recipe[sample::hoge_virtualenv]", "recipe[sample::hoge_nginx]", "recipe[sample::hoge_httpd]", "recipe[sample::hoge_td-agent]", "recipe[sample::hoge_git]", "recipe[sample::hoge_nrpe]", "recipe[sample::hoge_ganglia]", "recipe[sample::hoge_recipe1]", "recipe[sample::hoge_recipe2]", "recipe[sample::hoge_recipe3]", "recipe[sample::hoge_recipe4]" ]
…なるほど。わからん(;´Д`)
運用中に遭遇した出来事• SSHデーモンのチューニング
• AutoScalingで接続台数が多いときはMaxStartupsを変更
knife bootstrapの処理が一番重くなる
運用中に遭遇した出来事•インスタンスタイプ変更
• m1.smallは同時接続クライアントが80台あたりが限界?
• EC2メンテナンス
• knife backup exportで定期的にEBSへバックアップ
Chef Server 自体のバックアップもちゃんと設定しておく必要がある
•いつレシピ書くの?
• 今でしょ、なケースが少ない(´・ω・`)
• 障害発生時にレシピを更新したりする?
• ちょっと検証してみたい場合にもレシピ化?
Chefを導入してから悩む所
何が問題だったか(再掲)
• AMIのブラックボックス化
•構築ドキュメントの管理
•誰が/いつ/どのように/サーバを準備したかが不明
ある程度は改善されたが、運用においても銀の弾丸はない
目次• 自己紹介
• Chef導入以前の業務内容
• Chef導入後の業務内容
• Chefを約1年運用してみての所感
• 改善に向けて取り組んでいること
• まとめ
改善に向けて取り組んでいること
•孤独なChef使いをこれ以上増やさない
• 社内のChatToolを活用
改善に向けて取り組んでいること
•構築手順のrecipe設計見直し
• 機能別→サーバ別へ
•インストール手順もrecipe化
• 極力Chef側へ寄せて構築を行う
• attributesの活用
• バージョン記述はドキュメントとしても使える
目次• 自己紹介
• Chef導入以前の業務内容
• Chef導入後の業務内容
• Chefを約1年運用してみての所感
• 改善に向けて取り組んでいること
• まとめ
まとめ• Chefの最適解はまだ模索中
•日頃からメンバーのChefスキル平準化を行う
• コンソールをチームで共有(≒ChatOps)
•運用チームは日々改善
• 失敗から立ち上がるサイクルが大事
ご清聴ありがとうございました