34
チームで Chef Server を運用するには 2014/02/20 gumi study #18

チームでChef serverを運用するには

  • Upload
    -

  • View
    2.681

  • Download
    0

Embed Size (px)

DESCRIPTION

gumi study #18 講演資料 http://connpass.com/event/4822/

Citation preview

Page 1: チームでChef serverを運用するには

チームでChef Serverを運用するには2014/02/20 gumi study #18

Page 2: チームでChef serverを運用するには

Chef Server運用してます(小声)

Page 3: チームでChef serverを運用するには

Chefを扱うにはスキル必要?Yes

Page 4: チームでChef serverを運用するには

Chefを扱うには超高難度スキル必要?No

Page 5: チームでChef serverを運用するには

メンバー全員がちゃんと扱えている?…(´・ω・`)

Page 6: チームでChef serverを運用するには

Chef自体の詳細な技術的内容^

チームでChefを運用するときに注意する所

Page 7: チームでChef serverを運用するには

目次• 自己紹介

• Chef導入以前の業務内容

• Chef導入後の業務内容

• Chefを約1年運用してみての所感

• 改善に向けて取り組んでいること

• まとめ

Page 8: チームでChef serverを運用するには

目次• 自己紹介

• Chef導入以前の業務内容

• Chef導入後の業務内容

• Chefを約1年運用してみての所感

• 改善に向けて取り組んでいること

• まとめ

Page 9: チームでChef serverを運用するには

自己紹介•本間 知教(ほんま とものり) @CkReal

•株式会社gumi

• System Operation Engineer

•国内アプリの運用+社内の開発体制改善活動?

•非リア充担当

•好きなChefのリソース:template

Page 10: チームでChef serverを運用するには

目次• 自己紹介

• Chef導入以前の業務内容

• Chef導入後の業務内容

• Chefを約1年運用してみての所感

• 改善に向けて取り組んでいること

• まとめ

Page 11: チームでChef serverを運用するには

チーム業務概要

3%7%

15%

25%

50%

各環境のサーバ構築サーバ(+AWS)障害対応SWの技術検証開発支援ツール運用アプリ負荷試験

Page 12: チームでChef serverを運用するには

チーム業務概要

3%7%

15%

25%

50%

各環境のサーバ構築サーバ(+AWS)障害対応SWの技術検証開発支援ツール運用アプリ負荷試験

この部分の効率化は必須

Page 13: チームでChef serverを運用するには

Chef導入前(~2012)の業務状況• Puppetを使っていた時期もあった

• AMIをベースにサーバ数十台をセットアップ

• 本番環境のEC2は、十数台~百数十台

•チームメンバーのスキルセットは様々

• psshを利用して、複数サーバのセットアップ

Page 14: チームでChef serverを運用するには

Chef導入前(~2012)の業務状況• Puppetを使っていた時期もあった

• AMIをベースにサーバ数十台をセットアップ

• 本番環境のEC2は、十数台~百数十台

•チームメンバーのスキルセットは様々

• psshを利用して、複数サーバのセットアップ

(力技で)何とかしていた

Page 15: チームでChef serverを運用するには

何が問題だったか• AMIのブラックボックス化

• 歴史的経緯による、職人AMIが生まれやすい

•構築ドキュメントの管理

• 更新されないドキュメントは滅びてしまえばいい

•誰が/いつ/どのように/サーバを準備したかが不明

• 後から他メンバーが追いきれない

Page 16: チームでChef serverを運用するには

目次• 自己紹介

• Chef導入以前の業務内容

• Chef導入後の業務内容

• Chefを約1年運用してみての所感

• 改善に向けて取り組んでいること

• まとめ

Page 17: チームでChef serverを運用するには

Chefの導入経緯•チームメンバーが増えた

• 攻めの運用体制を作ろう!!

•数百台のサーバを一元管理しやすいプロダクト

• Chef Server 11が出た時期もあり、Chef Serverを採用

•既存サーバに影響を与えずに、こっそり導入

• 設定ファイルや公開鍵の配布といった簡単なことから

Page 18: チームでChef serverを運用するには

とはいえ…

Page 19: チームでChef serverを運用するには

Chef導入時に悩む点•使いこなすまでに覚える用語が多い

Environment?

Role?Node?

Cookbook?

Recipe?

Page 20: チームでChef serverを運用するには

•どこまでをChefにやらせるか

アプリの領域レシピの領域AMIの領域

Chef導入時に悩む点

低 高柔軟性

Page 21: チームでChef serverを運用するには

Chef導入時に悩む点•どの切り口でサーバの構築手順を記述するかEnvironment

RoleCookbook

Recipe

Recipe

Recipe

CookbookRecipe

Recipe

Recipe

機能単位?サーバ単位?

Page 22: チームでChef serverを運用するには

目次• 自己紹介

• Chef導入以前の業務内容

• Chef導入後の業務内容

• Chefを約1年運用してみての所感

• 改善に向けて取り組んでいること

• まとめ

Page 23: チームでChef serverを運用するには

Chef Serverを1年運用してみて•開発環境の準備は圧倒的に速くなった

• 設定ファイルのバックアップもChefに任せる

• recipeにアプリ情報は直書きしない

• 他アプリに流用する際の修正コストが大きくなる

•チームメンバーの変動

• 孤独なChef使いを生み出すことに

Page 24: チームでChef serverを運用するには

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]" ]

…なるほど。わからん(;´Д`)

Page 25: チームでChef serverを運用するには

運用中に遭遇した出来事• SSHデーモンのチューニング

• AutoScalingで接続台数が多いときはMaxStartupsを変更

knife bootstrapの処理が一番重くなる

Page 26: チームでChef serverを運用するには

運用中に遭遇した出来事•インスタンスタイプ変更

• m1.smallは同時接続クライアントが80台あたりが限界?

• EC2メンテナンス

• knife backup exportで定期的にEBSへバックアップ

Chef Server 自体のバックアップもちゃんと設定しておく必要がある

Page 27: チームでChef serverを運用するには

•いつレシピ書くの?

• 今でしょ、なケースが少ない(´・ω・`)

• 障害発生時にレシピを更新したりする?

• ちょっと検証してみたい場合にもレシピ化?

Chefを導入してから悩む所

Page 28: チームでChef serverを運用するには

何が問題だったか(再掲)

• AMIのブラックボックス化

•構築ドキュメントの管理

•誰が/いつ/どのように/サーバを準備したかが不明

ある程度は改善されたが、運用においても銀の弾丸はない

Page 29: チームでChef serverを運用するには

目次• 自己紹介

• Chef導入以前の業務内容

• Chef導入後の業務内容

• Chefを約1年運用してみての所感

• 改善に向けて取り組んでいること

• まとめ

Page 30: チームでChef serverを運用するには

改善に向けて取り組んでいること

•孤独なChef使いをこれ以上増やさない

• 社内のChatToolを活用

Page 31: チームでChef serverを運用するには

改善に向けて取り組んでいること

•構築手順のrecipe設計見直し

• 機能別→サーバ別へ

•インストール手順もrecipe化

• 極力Chef側へ寄せて構築を行う

• attributesの活用

• バージョン記述はドキュメントとしても使える

Page 32: チームでChef serverを運用するには

目次• 自己紹介

• Chef導入以前の業務内容

• Chef導入後の業務内容

• Chefを約1年運用してみての所感

• 改善に向けて取り組んでいること

• まとめ

Page 33: チームでChef serverを運用するには

まとめ• Chefの最適解はまだ模索中

•日頃からメンバーのChefスキル平準化を行う

• コンソールをチームで共有(≒ChatOps)

•運用チームは日々改善

• 失敗から立ち上がるサイクルが大事

Page 34: チームでChef serverを運用するには

ご清聴ありがとうございました