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.

【デブサミ関西B4】 壮絶!さくらのレンタルサーバ構築・運用の舞台裏

1,794 views

Published on

Developers Summit 2015 KANSAI B4セッション中山様の資料です。

Published in: Technology
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

【デブサミ関西B4】 壮絶!さくらのレンタルサーバ構築・運用の舞台裏

  1. 1. (C)Copyright 1996-2015 SAKURA Internet Inc. 壮絶!さくらのレンタルサーバ構築・運用の舞台裏 Developer Summit 2015 KANSAI
  2. 2. (C)Copyright 1996-2015 SAKURA Internet Inc. • 中山 幸治 @knakayama • 新卒で入社して3年目 • インターネットサービス事業部 • 主にレンタルサーバの運用を担当 自己紹介
  3. 3. (C)Copyright 1996-2015 SAKURA Internet Inc. さくらのレンタル サーバ リセール サービス始めました 宣伝
  4. 4. (C)Copyright 1996-2015 SAKURA Internet Inc. • 事業者様向けにさくらのレンタルサーバをご提供 • 事業者様は弊社レンタルサーバをエンドユーザ 様にご提供 • サービスの運用/保守は弊社でサポート • アカウント一括登録機能など高機能なコンパネ を用意しました • 高速なサービスのご提供が可能となっています さくらのレンタルサーバ リセールサービス
  5. 5. (C)Copyright 1996-2015 SAKURA Internet Inc. ぜひご活用 下さい さくらのレンタルサーバ リセールサービス
  6. 6. (C)Copyright 1996-2015 SAKURA Internet Inc. 今日の発表 タイトル 発表タイトルが決まった経緯
  7. 7. (C)Copyright 1996-2015 SAKURA Internet Inc. 壮絶!さくらの レンタルサーバ 構築・運用の舞台裏 発表タイトルが決まった経緯
  8. 8. (C)Copyright 1996-2015 SAKURA Internet Inc. 煽り過ぎでは 発表タイトルが決まった経緯
  9. 9. (C)Copyright 1996-2015 SAKURA Internet Inc. • 7月中頃デブサミで発表してくれと依頼される • 以前弊社イベント(さくらの夕べ)で発表した 経験があったため • 発表タイトルは自分で決めてねと言われる • 「さくらのレンタルサーバ運用の現場」 でお願いしますと伝える 発表タイトルが決まった経緯
  10. 10. (C)Copyright 1996-2015 SAKURA Internet Inc. • タイトルが大げさだったのでネタ系で挑む • スベる • 心に傷を負う • 無難なタイトルにしたい ← 今ここ 発表タイトルが決まった経緯
  11. 11. (C)Copyright 1996-2015 SAKURA Internet Inc. 発表タイトルが決まった経緯
  12. 12. (C)Copyright 1996-2015 SAKURA Internet Inc. ええ。。。 発表タイトルが決まった経緯
  13. 13. (C)Copyright 1996-2015 SAKURA Internet Inc. 発表タイトルが決まった経緯
  14. 14. (C)Copyright 1996-2015 SAKURA Internet Inc. ハードルを 上げてみた 発表タイトルが決まった経緯
  15. 15. (C)Copyright 1996-2015 SAKURA Internet Inc. 発表タイトルが決まった経緯
  16. 16. (C)Copyright 1996-2015 SAKURA Internet Inc. やったぜ 発表タイトルが決まった経緯
  17. 17. (C)Copyright 1996-2015 SAKURA Internet Inc. Kさんありがとう ございます! 発表タイトルが決まった経緯
  18. 18. (C)Copyright 1996-2015 SAKURA Internet Inc. 前置きは 以上です 発表タイトルが決まった経緯
  19. 19. (C)Copyright 1996-2015 SAKURA Internet Inc. • デプロイ • バージョン管理 • 監視 • 構築 アジェンダ
  20. 20. (C)Copyright 1996-2015 SAKURA Internet Inc. 歴史のあるサービス の場合必ず技術的 負債が発生する 各アジェンダの流れ
  21. 21. (C)Copyright 1996-2015 SAKURA Internet Inc. さくらのレンタル サーバはお陰様で 生誕11年 各アジェンダの流れ
  22. 22. (C)Copyright 1996-2015 SAKURA Internet Inc. 11年サービスを続けていると 当時は最適なアーキテクチャ であっても時が経過する内に 問題点が出てくる 各アジェンダの流れ
  23. 23. (C)Copyright 1996-2015 SAKURA Internet Inc. いわゆるBlue-Greenデプロ イメントのように既存サービ スをそっくり作り変えるよう なことは現実的に難しい 各アジェンダの流れ
  24. 24. (C)Copyright 1996-2015 SAKURA Internet Inc. そのため既存サービス を時代に合わせて進化 させていく必要がある 各アジェンダの流れ
  25. 25. (C)Copyright 1996-2015 SAKURA Internet Inc. なので各アジェンダ は以下の流れで発表 します 各アジェンダの流れ
  26. 26. (C)Copyright 1996-2015 SAKURA Internet Inc. 以前はどのように 行っていたか 現在はどのように 行っているか 各アジェンダの流れ
  27. 27. (C)Copyright 1996-2015 SAKURA Internet Inc. デプロイ デプロイ
  28. 28. (C)Copyright 1996-2015 SAKURA Internet Inc. 以前はどのよう に行っていたか デプロイ
  29. 29. (C)Copyright 1996-2015 SAKURA Internet Inc. 以前はどのように行っていたか $ cat list | xargs –P n ssh
  30. 30. (C)Copyright 1996-2015 SAKURA Internet Inc. • listファイルに対象のホスト名を記述 • xargsの-Pオプションで並列にssh • デプロイ毎に手順書を作る • 作成した手順書をレビューして作業実施 以前はどのように行っていたか
  31. 31. (C)Copyright 1996-2015 SAKURA Internet Inc. • 手順書の書き方が人によって異なる – レビューがしづらい • デプロイ毎に同じような手順書を書く必要がある – 無駄な工数の発生 • listファイルへの記述漏れ&不要な記述 – インシデントの発生 • デプロイに失敗したホストが分かりづらい – 作業漏れの誘発 以前の方法における問題点
  32. 32. (C)Copyright 1996-2015 SAKURA Internet Inc. • 誰がいつ/どのホストに/何を実施したのか 把握しづらい – 作業履歴が辿りづらい 以前の方法における問題点
  33. 33. (C)Copyright 1996-2015 SAKURA Internet Inc. 現在はどのよう に行っているか デプロイ
  34. 34. (C)Copyright 1996-2015 SAKURA Internet Inc. Ansible + Serverspec + GitHub Flow 現在はどのように行っているか
  35. 35. (C)Copyright 1996-2015 SAKURA Internet Inc. 現在はどのように行っているか
  36. 36. (C)Copyright 1996-2015 SAKURA Internet Inc. • masterブランチからデプロイ用にブランチ切る • デプロイ作業をAnsibleのplaybookとして記述 現在はどのように行っているか $ git checkout –b mainte/hoge
  37. 37. (C)Copyright 1996-2015 SAKURA Internet Inc. • Serverspecでテストコード記述 現在はどのように行っているか
  38. 38. (C)Copyright 1996-2015 SAKURA Internet Inc. • デプロイの作成が終わったらPull Request 現在はどのように行っているか
  39. 39. (C)Copyright 1996-2015 SAKURA Internet Inc. • レビューをして問題がなければmasterにmerge • ansible-playbookコマンドでデプロイ • Serverspecでデプロイ内容確認 現在はどのように行っているか $ ansible-playbook -i ./bin/hosts.sh site.yml --limit bar $ git merge --no-ff mainte/foo $ git push –u origin master $ rake serverspec:baz -t -j n -m
  40. 40. (C)Copyright 1996-2015 SAKURA Internet Inc. • Gitリポジトリを見れば誰が/何時/何を/どの ホストにデプロイしたのか分かる – 作業履歴の検索性向上 • 同じような作業をplaybookとして使い回せる – 無駄な工数の低減 • playbookは単なるyamlなので作業者による記述 方法のブレが少ない – レビューしやすい 現在はどのように行っているか
  41. 41. (C)Copyright 1996-2015 SAKURA Internet Inc. • デプロイに失敗したホストはretryファイルに 記述してくれる – 作業漏れの防止 • 並列実行もしてくれる(forksオプション) – デプロイ時間も申し分ない 現在はどのように行っているか
  42. 42. (C)Copyright 1996-2015 SAKURA Internet Inc. • Dynamic Inventoryを使用することでデプロイ 毎に対象ホストを記述したファイルを用意する 必要がなくなった 現在はどのように行っているか $ ansible-playbook -i ./bin/hosts.sh site.yml
  43. 43. (C)Copyright 1996-2015 SAKURA Internet Inc. • -i オプションにplaybookの対象ホストを特定の 形式のJSONで返すスクリプトを指定 • その形式でJSON返せば言語は何でもOK • サーバの役割&環境毎にグルーピングする – バックアップサーバ/DBサーバ/ホストサーバ/etc – production/staging Dynamic Inventory
  44. 44. (C)Copyright 1996-2015 SAKURA Internet Inc. • _meta属性のhostvarsでホスト固有の設定を 入れる – pythonのパス指定している – FreeBSD/Linux混在環境のため • これを記述しないとホスト毎に--hostつきで 実行されてしまい遅すぎて使いものにならない Dynamic Inventory
  45. 45. (C)Copyright 1996-2015 SAKURA Internet Inc. Dynamic Inventory
  46. 46. (C)Copyright 1996-2015 SAKURA Internet Inc. Serverspecを使う理由 テストコードを書く大前提として、 利用しているサーバ構成管理ツールを 信頼し、インフラコードを書く自分や 他人を信頼しないという立場を取りま しょう。
  47. 47. (C)Copyright 1996-2015 SAKURA Internet Inc. • Ansibleはサーバを「あるべき状態」にしてくれる • しかし何が「あるべき状態」か判断してくれない – ファイルのパーミッション間違えても間違った状態を 「あるべき状態」と判断してしまう • なので作業ミス防止のため使っている Serverspecを使う理由
  48. 48. (C)Copyright 1996-2015 SAKURA Internet Inc. バージョン管理 バージョン管理
  49. 49. (C)Copyright 1996-2015 SAKURA Internet Inc. 以前はどのよう に行っていたか バージョン管理
  50. 50. (C)Copyright 1996-2015 SAKURA Internet Inc. CVS 以前はどのように行っていたか
  51. 51. (C)Copyright 1996-2015 SAKURA Internet Inc. ツラい 以前はどのように行っていたか
  52. 52. (C)Copyright 1996-2015 SAKURA Internet Inc. ツラさは説明しなく ても分かると思うの で割愛します 以前の方法における問題点
  53. 53. (C)Copyright 1996-2015 SAKURA Internet Inc. 現在はどのよう に行っているか バージョン管理
  54. 54. (C)Copyright 1996-2015 SAKURA Internet Inc. Git 現在はどのように行っているか
  55. 55. (C)Copyright 1996-2015 SAKURA Internet Inc. 普通ですね Git
  56. 56. (C)Copyright 1996-2015 SAKURA Internet Inc. CVSからGitへの 移行方法 CVSからGitへ
  57. 57. (C)Copyright 1996-2015 SAKURA Internet Inc. • git-cvsimport 使って変換する • 踏み台サーバ経由でcvsサーバにアクセス するのでCVS_RSHでsshのラッパースクリプト 指定する CVSからGitへ #!/bin/sh target=“$*” ssh -i <priv-key> -tt hoge “sudo ssh $target”
  58. 58. (C)Copyright 1996-2015 SAKURA Internet Inc. CVSからGitへ • -v verbosity • -a imports all commits • -d cvs root • -C git repo $ export CVS_RSH=“/path/to/cvssh.sh” $ git cvsimport -v -a - d :ext:cvs@hoge:/path/to/cvsroot -C <git- repo> <cvs-repo>
  59. 59. (C)Copyright 1996-2015 SAKURA Internet Inc. • このままだとcommitログがAuthor: cvs <cvs> なので変換する必要がある • 幸いCVSのcommitログにはby <user> と書く 習慣があったのでそれを利用する • 変換にはgit-filter-branchを使って一括 で変換する CVSからGitへ
  60. 60. (C)Copyright 1996-2015 SAKURA Internet Inc. • --commit-filter commitの書き換え • GIT_AUTHOR_(NAME|EMAIL) commitした人 • git-commit-tree 新しいcommitオブジェクト作る CVSからGitへ
  61. 61. (C)Copyright 1996-2015 SAKURA Internet Inc. • commitログがUTF-8で書かれてないものを git-rebaseで変換 • commitログ変換したいだけなのでreword • 手動で行った。。。 • 刺し身たんぽぽ CVSからGitへ $ git rebase -i HEAD~n
  62. 62. (C)Copyright 1996-2015 SAKURA Internet Inc. 監視 監視
  63. 63. (C)Copyright 1996-2015 SAKURA Internet Inc. 以前はどのよう に行っていたか 監視
  64. 64. (C)Copyright 1996-2015 SAKURA Internet Inc. • DBサーバ(MySQL)でInnoDBのクラッシュが発生 • 外部からSQL実行できるか/mysqldプロセスが 動作しているかという点は監視できていた • すぐにCrash Recoverするのでアラートが発砲 しないため障害に気付けなかった • 対応が遅れるとmysqldプロセス自体が起動しない などの障害に至る 以前はどのように行っていたか
  65. 65. (C)Copyright 1996-2015 SAKURA Internet Inc. 現在はどのよう に行っているか 監視
  66. 66. (C)Copyright 1996-2015 SAKURA Internet Inc. ログ監視 現在はどのように行っているか
  67. 67. (C)Copyright 1996-2015 SAKURA Internet Inc. • InnoDBのクラッシュが発生する原因は多岐に渡る • ストレージ,H/W,データベースのデータ自体 • そのためMySQLのerrorログにCrashが発生した と記述されたことを監視する • ログ監視はZabbixで行う 現在はどのように行っているか InnoDB: Database was not shut down normally!
  68. 68. (C)Copyright 1996-2015 SAKURA Internet Inc. • logrt ローテーションされるlogを監視 • regexp 指定した文字列が出力されているか 現在はどのように行っているか
  69. 69. (C)Copyright 1996-2015 SAKURA Internet Inc. 構築 構築
  70. 70. (C)Copyright 1996-2015 SAKURA Internet Inc. データベース
  71. 71. (C)Copyright 1996-2015 SAKURA Internet Inc. • コンパネからボタンをポチポチクリックする だけですぐに使える • MySQL • バージョンは(4.0/5.1/5.5) • phpmyadminも使える レンサバデータベース
  72. 72. (C)Copyright 1996-2015 SAKURA Internet Inc. 構築フロー 構築の流れ
  73. 73. (C)Copyright 1996-2015 SAKURA Internet Inc. • ラック確保 • 機材確保 • ラック工事 • ネットワーク設定 • サーバ構築 構築フロー
  74. 74. (C)Copyright 1996-2015 SAKURA Internet Inc. • ファシリティ部門にラック確保依頼を出す • データベース残数を調査してサーバが不足する ことが無いようにする必要がある • 現在のところ1日約100データベース消費される • 1ラック約3ヶ月もつ • 適したラックを選定する必要がある • 現在のサーバは1Uサーバなのでコールド/ホット にする必要がある(空調に区別がある場合) ラック確保
  75. 75. (C)Copyright 1996-2015 SAKURA Internet Inc. ラックの利用状況の例 ・コールドアイル 冷たい風が出てくるとこ ろ ・ホットアイル サーバから排出された温 まった風が出てくるとこ ろ ・1Uサーバの場合前面か ら冷たい風を受けて、背 面から温まった風を出す
  76. 76. (C)Copyright 1996-2015 SAKURA Internet Inc. • 物流を担当している部署へ確保依頼出す • 不足していれば発注も行う • 現在の構成では1ラックにつき – 1Uサーバ x 12 – SSD/HDD x 30 – メモリ 8G x 158 – WAN側スイッチ x 1 – LAN側スイッチ x 1 ラック確保 -> 機材確保
  77. 77. (C)Copyright 1996-2015 SAKURA Internet Inc. • ラックが使用できる状態にする作業 • データセンターチームに依頼を出す • ゴミ掃除 • マウントレール取り付け • 電源タップ取り付け • etc 機材確保 -> ラック工事
  78. 78. (C)Copyright 1996-2015 SAKURA Internet Inc. こんな感じでデータセンター チームの方々に作って もらいます ラック図
  79. 79. (C)Copyright 1996-2015 SAKURA Internet Inc. • WAN/LAN用スイッチの設定 • ネットワーク担当部署に依頼 • WAN側スイッチはエッジルータに接続 • LAN側スイッチはIPMI接続に使用するために使う • 使用可能なIPの割り出しなどもお願いする • 割り出された範囲からIP選んでDNS登録 ラック工事 -> ネットワーク設定
  80. 80. (C)Copyright 1996-2015 SAKURA Internet Inc. ネットワーク構成
  81. 81. (C)Copyright 1996-2015 SAKURA Internet Inc. • データセンターチームでPXEブート&セット アップスクリプト実行し最低限の設定実施 • ラックに設置してパッケージスクリプトの適用 • 構築後の動作検証 • 各種細々とした登録作業 – 監視/ラック図/リソースグラフ/etc • 完成 ネットワーク設定 -> サーバ構築
  82. 82. (C)Copyright 1996-2015 SAKURA Internet Inc. 以前はどのよう に行っていたか 構築
  83. 83. (C)Copyright 1996-2015 SAKURA Internet Inc. 構築手順書 以前はどのように行っていたか
  84. 84. (C)Copyright 1996-2015 SAKURA Internet Inc. • 構築手順書見ながらサーバにsshで入って コマンドぽちぽち打って構築する – 10台前後とはいえ時間かかりすぎる – 作業ミスの誘発 • 不要/非効率な各種サーバへの登録作業 – 大昔に作ったリソースグラフへの登録など – 運用/CS部門に聞いても誰も使ってない。。。 – 監視サーバへの登録手動で行っている 以前はどのように行っていたか
  85. 85. (C)Copyright 1996-2015 SAKURA Internet Inc. 現在はどのよう に行っているか 構築
  86. 86. (C)Copyright 1996-2015 SAKURA Internet Inc. SSH禁止 現在はどのように行っているか
  87. 87. (C)Copyright 1996-2015 SAKURA Internet Inc. • あえてsshを禁止することでサーバ内オペ レーションせず効率的なサーバ構築を目指す • 手順書をAnsible化 • 検証作業もServerspec化 – 外部からのアクセス検証にはまだシェルを使ってる • 監視サーバ(Zabbix)への登録はZabbix APIを利用 • リソースグラフはZabbixのスクリーン機能使う 現在はどのように行っているか
  88. 88. (C)Copyright 1996-2015 SAKURA Internet Inc. • 今のところRubyのzabbixapiというモジュール を利用している Zabbix API
  89. 89. (C)Copyright 1996-2015 SAKURA Internet Inc. • リソースグラフを複数サーバ間で比較できる機能 • 誰も使ってなかったグラフサーバへの代替 として利用中 • 障害対応時などに同じ構成のサーバとリソースを 比較することで障害原因の特定に役立てている • サーバの傾向などの分析にも利用中 Zabbix Screen
  90. 90. (C)Copyright 1996-2015 SAKURA Internet Inc. Zabbix Screen
  91. 91. (C)Copyright 1996-2015 SAKURA Internet Inc. • Zabbix Screenの登録もAPI利用 – 今のところXML作ってimportしてる。。。 – Ansibleの2.xからZabbix API叩けるようなので検証中 Zabbix Screen
  92. 92. (C)Copyright 1996-2015 SAKURA Internet Inc. Zabbix Screen
  93. 93. (C)Copyright 1996-2015 SAKURA Internet Inc. • 歴史あるサービスは時代に追従する必要がある • 放置しておくととてもツラいことになる • 最初からモダンなインフラ環境がそろっている のもいいけど、どうやって作り変えていくかと 考えていくことに楽しさがある • 若干エモいですが割と今は仕事が楽しいです まとめ
  94. 94. (C)Copyright 1996-2015 SAKURA Internet Inc. さくらではモダンなインフラ構築 方法を知りつつ歴史あるサービス にどう適用していくかを考え出せ るエンジニアを募集中です! 一緒に改善していきませんか? 求人情報です
  95. 95. (C)Copyright 1996-2015 SAKURA Internet Inc. ご静聴ありがとう ございました 終わり

×