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.

30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

2,925 views

Published on

Monitoring Casual Talks #7 での発表資料です.
http://www.zusaar.com/event/9807003

30days Albumという写真サービスの裏側の,監視やインフラCI周りの状況についてお話させていただきました.

Published in: Internet
  • Be the first to comment

30days Albumの裏側〜監視・インフラCI事情〜 #monitoringcasual

  1. 1. 30days Albumの裏側! ∼監視・インフラCI事情∼ Monitoring Casual #7 http://www.zusaar.com/event/9807003 ! OKUMURA Takahiro
  2. 2. OKUMURA Takahiro! @hfm @tacahilo! 2013年ペパボ新卒入社の2年目インフラエンジニア dvorak-jp配列の愛用者です
  3. 3. 容量 603,966.837GBぐらい オブジェクト数 1,858,383,772! レプリカ含むと1.x倍
  4. 4. 30days Albumの裏側 インフラ
  5. 5. 30days Albumの裏側見てる人たち @hfm @tnmt @lamanotrama @pbmasaki インフラ
  6. 6. 監視 普 通 の
  7. 7. nagios
  8. 8. munin
  9. 9. 最初は普通の白い munin 2.0でした! (daysのスクショが無かったので別サービスので代用)
  10. 10. kibanaみたいな色にしたい。
  11. 11.   *'``・* 。   |     `*。 ,。∩      *  system perlの + (´・ω・`) *。+゚  モジュールを `*。 ヽ、  つ *゚*   ごにょごにょ∼  `・+。*・' ゚ +゚  ☆   ∪~ 。*゚   `・+。*・ ゚
  12. 12. これはもうmunin3.0といっても いいんではないだろうか。
  13. 13. 遠くの街が戦火 に包まれているよう なグラフだ。 地獄のグラフ 燃えてるのうちの サーバやで 関係者の声
  14. 14. 変更の一部 --- /usr/lib/perl5/vendor_perl/5.8.8/Munin/Master/GraphOld.pm.orig 2014-03-29 09:26:42.000000000 +0900 +++ /usr/lib/perl5/vendor_perl/5.8.8/Munin/Master/GraphOld.pm 2014-06-09 21:23:19.000000000 +0900 @@ -1677,15 +1677,15 @@ } else { # At least 1.3 @options = ( - '--font', 'DEFAULT:0:DejaVuSans,DejaVu Sans,DejaVu LGC Sans,Bitstream Vera Sans', - '--font', 'LEGEND:7:DejaVuSansMono,DejaVu Sans Mono,DejaVu LGC Sans Mono,Bitstream Vera Sans Mono,monospace', - # Colors coordinated with CSS. - '--color', 'BACK#F0F0F0', # Area around the graph - '--color', 'FRAME#F0F0F0', # Line around legend spot - '--color', 'CANVAS#FFFFFF', # Graph background, max contrast - '--color', 'FONT#666666', # Some kind of gray - '--color', 'AXIS#CFD6F8', # And axis like html boxes - '--color', 'ARROW#CFD6F8', # And arrow, ditto. + '--font', 'DEFAULT:0:Helvetica Neue,DejaVuSans,DejaVu Sans,DejaVu LGC Sans,Bitstream Vera Sans', + '--font', 'LEGEND:7:Helvetica Neue,DejaVuSansMono,DejaVu Sans Mono,DejaVu LGC Sans Mono,Bitstream Vera Sans Mono,monospace', + '--color', 'FONT#EEEEEE', + '--color', 'ARROW#3D3D3D', + '--color', 'AXIS#3D3D3D', + '--color', 'BACK#1F1F1F', + '--color', 'CANVAS#1F1F1F', + '--color', 'SHADEA#1F1F1F', + '--color', 'SHADEB#1F1F1F', ); }
  15. 15. 変更の一部 --- /usr/lib/perl5/vendor_perl/5.8.8/Munin/Master/GraphOld.pm.orig 2014-03-29 09:26:42.000000000 +0900 +++ /usr/lib/perl5/vendor_perl/5.8.8/Munin/Master/GraphOld.pm 2014-06-09 21:23:19.000000000 +0900 @@ -1677,15 +1677,15 @@ } else { # At least 1.3 @options = ( - '--font', 'DEFAULT:0:DejaVuSans,DejaVu Sans,DejaVu LGC Sans,Bitstream Vera Sans', - '--font', 'LEGEND:7:DejaVuSansMono,DejaVu Sans Mono,DejaVu LGC Sans Mono,Bitstream Vera Sans Mono,monospace', - # Colors coordinated with CSS. - '--color', 'BACK#F0F0F0', # Area around the graph - '--color', 'FRAME#F0F0F0', # Line around legend spot - '--color', 'CANVAS#FFFFFF', # Graph background, max contrast - '--color', 'FONT#666666', # Some kind of gray - '--color', 'AXIS#CFD6F8', # And axis like html boxes - '--color', 'ARROW#CFD6F8', # And arrow, ditto. + '--font', 'DEFAULT:0:Helvetica Neue,DejaVuSans,DejaVu Sans,DejaVu LGC Sans,Bitstream Vera Sans', + '--font', 'LEGEND:7:Helvetica Neue,DejaVuSansMono,DejaVu Sans Mono,DejaVu LGC Sans Mono,Bitstream Vera Sans Mono,monospace', + '--color', 'FONT#EEEEEE', + '--color', 'ARROW#3D3D3D', + '--color', 'AXIS#3D3D3D', + '--color', 'BACK#1F1F1F', + '--color', 'CANVAS#1F1F1F', + '--color', 'SHADEA#1F1F1F', + '--color', 'SHADEB#1F1F1F', ); } 他にも /etc/munin/static/style.css とかhtmlも変更入ってるんですが,全部追い切れず
  16. 16. 変更の一部 --- /usr/lib/perl5/vendor_perl/5.8.8/Munin/Master/GraphOld.pm.orig 2014-03-29 09:26:42.000000000 +0900 +++ /usr/lib/perl5/vendor_perl/5.8.8/Munin/Master/GraphOld.pm 2014-06-09 21:23:19.000000000 +0900 @@ -1677,15 +1677,15 @@ } else { # At least 1.3 @options = ( - '--font', 'DEFAULT:0:DejaVuSans,DejaVu Sans,DejaVu LGC Sans,Bitstream Vera Sans', - '--font', 'LEGEND:7:DejaVuSansMono,DejaVu Sans Mono,DejaVu LGC Sans Mono,Bitstream Vera Sans Mono,monospace', - # Colors coordinated with CSS. - '--color', 'BACK#F0F0F0', # Area around the graph - '--color', 'FRAME#F0F0F0', # Line around legend spot - '--color', 'CANVAS#FFFFFF', # Graph background, max contrast - '--color', 'FONT#666666', # Some kind of gray - '--color', 'AXIS#CFD6F8', # And axis like html boxes - '--color', 'ARROW#CFD6F8', # And arrow, ditto. + '--font', 'DEFAULT:0:Helvetica Neue,DejaVuSans,DejaVu Sans,DejaVu LGC Sans,Bitstream Vera Sans', + '--font', 'LEGEND:7:Helvetica Neue,DejaVuSansMono,DejaVu Sans Mono,DejaVu LGC Sans Mono,Bitstream Vera Sans Mono,monospace', + '--color', 'FONT#EEEEEE', + '--color', 'ARROW#3D3D3D', + '--color', 'AXIS#3D3D3D', + '--color', 'BACK#1F1F1F', + '--color', 'CANVAS#1F1F1F', + '--color', 'SHADEA#1F1F1F', + '--color', 'SHADEB#1F1F1F', ); } まあもし壊れても白いmuninに戻せるし別にいいか…
  17. 17. consulとかsensuは? • nagiosで十分安定稼働している実績があるし,これで十分 • consul-alertはカッコいいけど,オンプレでサーバ増減の少ない環境 だと旨味が少ない
  18. 18. consulとかsensuは? • sensu (というかRabbit MQ) はハマるからしんどい • sensu-puppetがイマイチ (触った頃はあまり成熟してなかった) • トラブルの原因は大抵Rabbit MQやRedisで,sensuの構成要素に対 する学習コストが高いのでは?という印象
  19. 19. インフラCI ご め ん な さ い ! 未 完 成 !
  20. 20. UkigumoServerspec Docker
  21. 21. なぜインフラCI?た ぶ ん 普 通 の 理 由
  22. 22. daysのインフラに変更があると… 1. Vagrant (&VirtualBox) でVMを起動 2. Puppet で provisioning 3. Serverspecでテスト 4. PullRequestでレビュー 5. 本番環境へDeploy
  23. 23. 時間かかる 1. Vagrant (&VirtualBox) でVMを起動 2. Puppet で provisioning 3. Serverspecでテスト 4. PullRequestでレビュー 5. 本番環境へDeploy ←重い! ←めんどくさい! ←めんどくさい! ←しょうがない! ←しょうがない
  24. 24. 時間かかる 1. Vagrant (&VirtualBox) でVMを起動 2. Puppet で provisioning 3. Serverspecでテスト 4. PullRequestでレビュー 5. 本番環境へDeploy ←重い! ←めんどくさい! ←めんどくさい! ←しょうがない! ←しょうがない ここをなんとか したい
 => CIしよう
  25. 25. なぜDocker?
  26. 26. 最初はVirtualBoxも検討しました • Vagrant & VirtualBoxを使ってるなら,CI環境もそれに合わせたい • 社内にはMaglicaというInternal Cloud (VM) 環境がある • VM上にCI環境を構築したい,が…
  27. 27. 【資料】Maglica http://www.slideshare.net/mizzy/maglica-techkayac https://github.com/mizzy/maglica
  28. 28. インフラCIをする上での課題 母艦! (Maglica) VM VM VM ••• VM上でVirtualBoxを起動できない!! (VT-xが動かないとかエラーが出る)
 => Vagrant & VirtualBox なCIはキツそう
  29. 29. そうだDockerを使おう • VM on VMは厳しい(vagrant-kvmとかあるけど…) • Dockerはいくつかサービスが動かないけど,妥協点としては上々
  30. 30. なぜUkigumo?
  31. 31. なぜUkigumo? • Jenkinsを愛せなかった • Dockerさえ動けばいいのでJenkinsのような分厚さは不要 • (Ukigumoちゃん可愛い)
  32. 32. UkigumoでCIする • CIサービス自体への依存を極力減らす • Jenkinsの環境変数や,CIから与えられるパラメータを使わない • シェルスクリプト1枚でCI出来るようにする • UkigumoはTravis-CIみたいにyamlで実行内容を記述出来るけど,あ くまでスクリプトを呼び出すだけに留める
  33. 33. ざっくりインフラCIフロー UkigumoServerspec Docker
  34. 34. push
  35. 35. web hook
  36. 36. pull
  37. 37. Puppet provision & Serverspec Container
  38. 38. push web hook & pull Puppet provision & Serverspec Container
  39. 39. 未完成? • 環境自体は完成,Ukigumoちゃんは動いてる • しかしDockerの設定にハマって,十分なCIが出来ていない • コンテナ内でeth1 (lan) を付けるのがしんどかったり起動しないサー ビスのためにprovisioningの条件分岐を考えたり…
  40. 40. 今後の展開予定 1. まずDockerの設定でハマりまくってるのでなんとかする 2. Infratasterで振る舞いテストも導入する 3. CI作った環境の作り方をGitHubとかで公開する • UkigumoちゃんをItamaeでポンと作れるようにしました
  41. 41. ご清聴ありがとうございました 色々間に合ってなくてすいません…

×