Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
クックパッドのスケーリング       クックパッド株式会社             高田悟史
自己紹介  ■ 高田悟史(たかださとし)  ■ 787万人を支えるインフラチーム   ■ スケール関連を担当中
目次 ■ キャパシティプランニング ■ サーバ増設のスピードアップ
キャパシティプランニング
キャパシティプランニングとは ユーザがいつまでも快適に 使い続けるためにやるべき こと
キャパシティプランニング          ■ 分析          ■ 予測          ■ 配置
キャパシティプランニング - 分析  ■ 現在のキャパシティを知る   ■ 長期に渡るデータの記録   ■ サーバ特性に合わせて、キャパシティ    を計る指標を決める
キャパシティプランニング - 予測  ■ キャパシティを越える日を予測する   ■ 指標と計測データの結びつけ   ■ 上限を特定して対策をする時期を確定
キャパシティプランニング - 配置  ■ 迅速にサービスインできるようになる   ■ 自動インストール   ■ 自動設定
キャパシティプランニング          ■ 分析          ■ 予測          ■ 配置
サーバ増設のスピードアップ
クックパッドのサーバー増設の流れ                           サーバ管理ツール                                Rails                                  ...
OSインストール時の問題■ 手間がかかる ■ 電源をOn ■ OSのCDROMからインストール  ■ 次へ次へ
OSインストールまでの流れを改善■ 自作のサーバ管理ツールにサーバ情報を登録■ 電源をOn■ PXE Bootでネットブート■ 動的生成されたkickstart.cfgを使ってKickstart ■ インストール終了まで待つだけ
サーバ情報を登録
kickstart.cfgを自動生成■ http://ブートサーバ/deployment/kickstart ■ ホスト名      network --device eth0 --bootproto dhcp --hostname test1...
PXE BootとKickstartとPuppet                          サーバ管理ツール                              Rails                            ...
OSインストール後の問題■ ソフトウェアインストール/設定用スクリプトの メンテナンスコスト■ パッケージの統一■ サーバー毎に異なる設定の反映 ■ database.yml ■ my.cnf
Puppetを導入した ■ Puppetとは  ■ サーバの状態管理ツール  ■ Manifestに状態を記述することで反映  ■ サーバ / クライアント構成
Puppetの構成                        puppetmasterd    (1)Manifestを取得              puppetd                   puppetd (2)Manifes...
パッケージの統一(Passengerの例)    package {     passenger:       provider => gem,       notify => Service[httpd],        ensure => ...
サーバごとに異なる設定(/etc/my.cnfの例) ■ Manifest     $mysql_server_id = $hostname ? {      db1 => 10001,      db2 => 10002,      db3 ...
PXE BootとKickstartとPuppet                           サーバ管理ツール                                Rails                         ...
Puppet導入の副作用 ■ 学習コスト ■ インストール/設定の手間を0にするまでには  それなりに時間がかかる ■ manifestにもリファクタリングが必要
まとめ
まとめ ■ サーバ増設のスピードは重要 ■ OSのインストールにかかる時間は変わらな  いが、手間がかからなくなった ■ Puppetを導入して、ソフトウェアのインス  トール/設定の手間がほぼ0になった
ご清聴ありがとう ございました
Upcoming SlideShare
Loading in …5
×

クックパッドのスケーリング

4,586 views

Published on

Published in: Business, Technology
  • Hi there! Get Your Professional Job-Winning Resume Here - Check our website! http://bit.ly/resumpro
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

クックパッドのスケーリング

  1. 1. クックパッドのスケーリング クックパッド株式会社 高田悟史
  2. 2. 自己紹介 ■ 高田悟史(たかださとし) ■ 787万人を支えるインフラチーム ■ スケール関連を担当中
  3. 3. 目次 ■ キャパシティプランニング ■ サーバ増設のスピードアップ
  4. 4. キャパシティプランニング
  5. 5. キャパシティプランニングとは ユーザがいつまでも快適に 使い続けるためにやるべき こと
  6. 6. キャパシティプランニング ■ 分析 ■ 予測 ■ 配置
  7. 7. キャパシティプランニング - 分析 ■ 現在のキャパシティを知る ■ 長期に渡るデータの記録 ■ サーバ特性に合わせて、キャパシティ を計る指標を決める
  8. 8. キャパシティプランニング - 予測 ■ キャパシティを越える日を予測する ■ 指標と計測データの結びつけ ■ 上限を特定して対策をする時期を確定
  9. 9. キャパシティプランニング - 配置 ■ 迅速にサービスインできるようになる ■ 自動インストール ■ 自動設定
  10. 10. キャパシティプランニング ■ 分析 ■ 予測 ■ 配置
  11. 11. サーバ増設のスピードアップ
  12. 12. クックパッドのサーバー増設の流れ サーバ管理ツール Rails boot用サーバ (2-1)kickstart.cfgの取得 DHCP (1)PXE Boot tftp New(3)puppetd Apache (2-2)パッケージ取得 puppetmasterd
  13. 13. OSインストール時の問題■ 手間がかかる ■ 電源をOn ■ OSのCDROMからインストール ■ 次へ次へ
  14. 14. OSインストールまでの流れを改善■ 自作のサーバ管理ツールにサーバ情報を登録■ 電源をOn■ PXE Bootでネットブート■ 動的生成されたkickstart.cfgを使ってKickstart ■ インストール終了まで待つだけ
  15. 15. サーバ情報を登録
  16. 16. kickstart.cfgを自動生成■ http://ブートサーバ/deployment/kickstart ■ ホスト名 network --device eth0 --bootproto dhcp --hostname test1 ■ %post に出力される # eth0 cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none ONBOOT=yes TYPE=Ethernet IPADDR=192.168.0.1 NETMASK=255.255.255.0 EOF
  17. 17. PXE BootとKickstartとPuppet サーバ管理ツール Rails boot用サーバ (2-1)kickstart.cfgの取得 DHCP (1)PXE Boot tftp New(3)puppetd Apache (2-2)パッケージ取得 puppetmasterd
  18. 18. OSインストール後の問題■ ソフトウェアインストール/設定用スクリプトの メンテナンスコスト■ パッケージの統一■ サーバー毎に異なる設定の反映 ■ database.yml ■ my.cnf
  19. 19. Puppetを導入した ■ Puppetとは ■ サーバの状態管理ツール ■ Manifestに状態を記述することで反映 ■ サーバ / クライアント構成
  20. 20. Puppetの構成 puppetmasterd (1)Manifestを取得 puppetd puppetd (2)Manifestを実行
  21. 21. パッケージの統一(Passengerの例) package { passenger: provider => gem, notify => Service[httpd], ensure => 2.2.5; }
  22. 22. サーバごとに異なる設定(/etc/my.cnfの例) ■ Manifest $mysql_server_id = $hostname ? { db1 => 10001, db2 => 10002, db3 => 10003, db4 => 10004, default => error } ■ Template server-id = <%= mysql_server_id %>
  23. 23. PXE BootとKickstartとPuppet サーバ管理ツール Rails boot用サーバ (2-1)kickstart.cfgの取得 DHCP (1)PXE Boot tftp New(3)puppetd Apache (2-2)パッケージ取得 puppetmasterd
  24. 24. Puppet導入の副作用 ■ 学習コスト ■ インストール/設定の手間を0にするまでには それなりに時間がかかる ■ manifestにもリファクタリングが必要
  25. 25. まとめ
  26. 26. まとめ ■ サーバ増設のスピードは重要 ■ OSのインストールにかかる時間は変わらな いが、手間がかからなくなった ■ Puppetを導入して、ソフトウェアのインス トール/設定の手間がほぼ0になった
  27. 27. ご清聴ありがとう ございました

×