毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話

396
-1

Published on

#dockerlt での発表資料です。
http://connpass.com/event/20561/

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
396
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
1
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

毎日2000個のコンテナをstartする鯖が突然死して僕が驚愕した話

  1. 1. © 2015 Actcat, Inc. 1 毎日2000個のコンテナをstartする 鯖が突然死して僕が驚愕した話
  2. 2. © 2015 Actcat, Inc. @sumyapp n Koichiro Sumi n コードレビューの ためのCIサービス、 SideCI を運営 n 1歳の息子 カワ(・ ・)イイ!! 2
  3. 3. © 2015 Actcat, Inc. DockerのSideCIでの使い方 n ユーザからのGitHub Push(pull_request)毎に 解析ツールの数分のコンテナを起動 n 起動したコンテナ内でコードをclone, 解析 n 解析結果をSideCIの画面とGitHubに送信 3
  4. 4. © 2015 Actcat, Inc. これが1日数百件 * 解析種毎で計2000回弱 n GitHub ⇒ SideCI API ⇒ SideCI DockerHost ⇒ Docker Container ⇒ git clone; analyze…; send; 4
  5. 5. © 2015 Actcat, Inc. アジェンダ: 鯖突然死で驚愕パターン n 「さぁ帰ろうっと」と思った頃に飛んで来 る「No disk space left」 l やばい! n たまにやってくる「Docker disk out of space」 n 突然のカーネルパニックが数十分おきに サーバ各台に発生して冗長化とか無駄状態 5
  6. 6. © 2015 Actcat, Inc. 6 「さぁ帰ろうっと」と思った頃に飛んで来る 「NO DISK SPACE LEFT」
  7. 7. © 2015 Actcat, Inc. 「さぁ帰ろうっと」と思った頃に飛んで来 る「No disk space left」 n アプリケーションで`docker start`と`docker kill; dockr rm;`かをたくさんしている n アプリケーションにバグ(rmされないパ ターン)があったのでそれが累積して、 ディスクがゼロに n バグ直したらほぼ軽減した 7
  8. 8. © 2015 Actcat, Inc. 定期クリーンアップも追加 n 稀に処理中にアプリケーションプロセス が落ちたりするとやっぱコンテナ残る n 数時間以上起動しっぱなしのコンテナと かは全部定期的にcronで吹っ飛ばすことに した n docker psをgrepしてxargsしてrmする感じ 8
  9. 9. © 2015 Actcat, Inc. 9 たまにやってくる「DOCKER DISK OUT OF SPACE」
  10. 10. © 2015 Actcat, Inc. たまにやってくる 「Docker disk out of space」 n Devicemapper使ってたらたまに起こった ディスクの空き容量自体はあった(気がする) l コンテナ残ってるとかじゃない l ローカルじゃほぼ再現しない。 毎日コンテナ立てまくり消しまくりで起きる n `docker rm; docker rmi;`じゃ直らない。 `/mnt/docker/devicemapper`を全削除で直る n わりとすぐ再発するのでaufsに変更。起きなく なった l でもaufsって古くない?誰か教えて!(ΦωΦ) 10
  11. 11. © 2015 Actcat, Inc. 11 突然のカーネルパニックが数十分おきにサーバ 各台に発生して冗長化とか無駄状態
  12. 12. © 2015 Actcat, Inc. 突然のカーネルパニックが数十分おきに サーバ各台に発生して冗長化とか無駄状態 n IVS CTO Night&Day っていう宮崎県のシー ガイアっていうところのイベントに3日間 参加中に起きた n Au電波なくて(3G1本)、会場のwifi死んでて、 という状態でサーバが次々にカーネルパ ニック n => サービスダウン 12
  13. 13. © 2015 Actcat, Inc. とりあえずしたこと n 携帯でGoogle Compute EngineのConsoleか ら死んだやつをリブートを定期的に n その間にパネルディスカッションとか聞き ながらデバッグ n マジ無理 13
  14. 14. © 2015 Actcat, Inc. デバッグでしたこと n 発生ケースを特定 l CPUのロードアベレージが8になった瞬間当 たりでカーネルパニックする(8コア) l ロードアベレージが1とか2とかだとまった く起きない l (なのでデプロイ前気づかなかった…) n 一旦1台当たりの処理量を制限してロードア ベレージが8までいかないように変更… n でも瞬発的にいくことはあるので 必死デバッグ 14
  15. 15. © 2015 Actcat, Inc. 発生原因と対策 n Docker HostをAWSからGCPに移行した時に発 生した。AWSのホストの時は問題なく動いて いた。(GCPをめっちゃ疑った)。 n ソフトウェアレベルの差異はなし。Dockerの バージョンやファイルシステム(aufs)とかも差 異なし n あらゆる差異を探した結果、Linux Kernelの バージョンが新ホストの方が新しかった 15
  16. 16. © 2015 Actcat, Inc. Kernel Versionがちょっと新しい! AWS host Storage Driver: aufs Root Dir: /mnt/docker/aufs Backing Filesystem: extfs Execution Driver: native-0.2 Kernel Version: 3.13.0-48- generic Operating System: Ubuntu 14.04.2 LTS Docker version 1.6.2, build 7c8fca2 GCP Host Storage Driver: aufs Root Dir: /mnt/docker/aufs Backing Filesystem: extfs Dirperm1 Supported: true Execution Driver: native-0.2 Kernel Version: 3.16.0-38- generic Operating System: Ubuntu 14.04.2 LTS Docker version 1.6.2, build 7c8fca2 16
  17. 17. © 2015 Actcat, Inc. 対策 n Kennelを3.16から3.13にダウングレード n カーネルパニック起きなくなった! 全てノーマルな状態に n 以降怖くてカーネルのアップデート出来な い…(誰かおしえて… 17
  18. 18. © 2015 Actcat, Inc. 18 まとめ
  19. 19. © 2015 Actcat, Inc. まとめというか僕の内心 n Docker触るの怖い n 少しでもupdateしたら動かなくなるんじゃ ないか… l そしてそれは長期負荷試験やらないかぎ り事前検知出来ないんじゃないか… n みんなどうしてるの?(ΦωΦ) もうぼくdocker.freezeしておきたいです… 19
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×