ReadWrite Japan 第275回

Dockerを大規模にスケールアップするには

ReadWrite Japan

2016年4月11日 7:00

Dockerはアプリケーションをパッケージ化する簡単で新しい手段として、
世界中で急速に受け入れられている。以前にも書いた通りアプリケーションをコンテナ化
できる事は素晴らしい事なのだが、同時に企業が直面している大きな課題として、
大規模なデプロイをどうするかという問題がある。

コンピューティングにおいてスケールと言えばCERNほどの所はないだろう。
スイスのジェノバ郊外に位置する素粒子研究所だ。LHC(Large Hadron Collider)を
擁するところでもあり、500の大学から8000名の科学者たちが詰めている。
CERNとデータセンターOSというコンセプトについて2014年に書いたMesosphereは、
実際に使われているDockerコンテナをスケールアウトするためのアプローチに取り組んでいる。

Mesosphereの共同設立者にしてApache Mesosの製作者、Benjamin Hindmanと、
この件についてより深く知る機会があった。

実際にDockerコンテナを保管、配布する上での課題とは何ですか?

maxresdefault (1)

Benjamin Hindman(以下、BH): コンテナのいいところは仮想マシンなどと違いOS抜きでアプリケーションを
パッケージ化できる事です。つまりその分小さくできる。イメージのサイズが小さくなれば、
ストレージやネットワークに対する要求もそれだけ小さなものになります。

なのですが、コンテナのイメージサイズは巨大になりがちです。依存するライブラリや
ファイルを一緒にまとめてしまえばサイズはかなり大きくなります。
場合によってはいるのか要らないのか分からないものも一緒に入れてしまう事もあります。

Dockerではコンテナ間のファイルシステムの再利用のためにレイヤーを使います。
これによりコンテナは小さいままで保てますが、それも既存のレイヤー上に
全てのコンテナが無駄なく載ればの話です。
これには注意深い作業が必要ですし、私の経験上、実現することはほとんどありません。

Dockerのレイヤーが現実にうまくいかないのはなぜなのでしょうか?

maxresdefault

BH: これまでの経験から言わせてもらえれば、開発者たちがお互いが用意するレイヤ上で
丁寧な実装を行う事は非常に珍しいケースです。
現にレイヤーを作る場合、それを使えば要らないものがたくさんついてくるため、
他の人が使いたがらないようなものになってしまう事は非常によくある話です。

この事がもたらす結果はひどいものです。

二つのケースを考えてみましょう。まずみんなが個別で自分のコンテナに
ライブラリを放り込む場合、そしてライブラリを含むレイヤー上にコンテナを構築する場合です。
コンテナがレイヤーに含まれているケースでは、最初にレイヤーをダウンロードすれば、
その後はコンテナが代わってもそれを再利用することになります。

それぞれがバラバラにライブラリを持つ場合、コンテナが変わるたびに
ライブラリをダウンロードし直さなければなりません。ストレージ的にも
ネットワーク的にも非常に無駄が多くなります。レポジトリのサイズは爆発的に増加し、
ギガバイト単位のDockerのダウンロードによってネットワークを圧迫することになります。

Mesosphereで我々はこの問題で実際に困っている場面に出くわし、
いくつかの代替手段を試してみました。

1つのアプローチは、まず最初にコンテナをいくつかのノードに展開し、
その後はP2Pをつかってノード自身が展開されていくという方法です。
この事から展開されるべきコンテナのイメージを理解し、展開されるデータは
これまで送られたことが無いものだけに限らなければいけないという結論に行きつきました。
つまりコンテンツを含んだレイヤよりも、コンテナに含まれるコンテンツ自体に
目を向けるという事です。

CVMFSとCERNの統合が、この問題の解決にどう役立ったのでしょうか?

Mesosphere.295x190

BH: スイスのCERNで講演を行った際、2008年にCERNで開発された技術であるCernVM-FS(CVMFS)の
設立メンバーに合うことが出来ました。その時、CERNはアプリケーションのデプロイを
どう最適化するかという、今日のコンテナのようなハードウェアの仮想化手段を求めていました。

イメージやパッケージを作る代わりに、CERNはグローバルな分散ファイルシステムを
使う事を考えていました。これにより科学者たちは一度Webサーバにインストールしてしまえば、
世界中のどこからでもそれにアクセスすることが出来るようになります。
ジェノバにいたとき、彼らのCVMFSのデモを見ることが出来、即座にこれは問題を解決できる、
コンテナとの相性が完璧なものだと思いました。

拡張インデックス、冗長データの解消、キャッシングに地域的コストを考慮した
伝達を使って、各々のダウンロード量を自動的に最小化できる事から、
CVMFSはコンテナを展開するのに完璧なものです。
冗長なデータの転送量が飛躍的に縮小され、通信速度が大きく向上しました。

そこでもしCVMFSとApache Mesos、Mesosphere DCOSを統合することが出来れば、
冗長なデータ転送を大きく削減し、コンテナの伝送が相当速くなると気づいたのです。
笑いが止まらない瞬間でした。

Apache Mesos、Mesosphere DCOSはコンテナをどう扱うのですか?

vxhpyhngspj9xg_small

MesosとDCOSは我々がコンテナライザと呼んでいるものに依存しています。
コンテナライザは実行中のタスクを他のタスクと分離するためのものであり、
同時にそれぞれのタスクが使用するリソース(CPU、メモリ、Disk、N/Wなど)を制限するものです。
コンテナライザはまたコンテナがタスクを実行するためのランタイム環境も提供します。

コンテナ自体はLinux上の低レベルなオブジェクトというよりは、コントロールグループ(cgroups)や
名前空間などを使った抽象化されたものです。MesosコンテナライザはDockerやappcを含む、
今日存在するイメージのあらゆるフォーマットをサポートしています。

Apache MesosとCVMFSの組み合わせはどの規模までスケール出来ると思いますか?

BH: 理論上は数百万コンテナの規模まで行けるはずで、これはテストしているところです。
いい知らせとしては、MesosとDCOSの組み合わせとCVMFSは両方ともスケールアウトできる事が
分かっている点です。

実際のインテグレーションは単純なものです。やり方としてはイメージ全体を
ダウンロードするのではなくCVMFSクライアントを使ってリモートのイメージを
ローカルにマウントするのです。インプットとしては(内部的にCVMFSサーバのURLと紐づいている)
CVMFSレポジトリ名とコンテナイメージのルートパスを取ります。

そうすれば同じCSMFSレポジトリ内で複数のコンテナイメージを持つことが出来ます。
コンテナライザからすればこれによって変わるところは何もありません。
コンテナをスタートするためのローカルにあるイメージのディレクトリツリー
を扱うのと同じです。

この事の大きな利点は、CVMFSの細かい冗長性排除(レイヤーというよりはファイルの集まり)により、
全体のイメージをダウンロードすることなくコンテナをスタートする事が出来るという点です。
一旦コンテナがスタートすれば、あとはCVMFSが必要に応じてファイルをダウンロードします。
CVMFSの機能により、同じファイルを2度ダウンロードする事はありません。
結果、ストレージやネットワークを乱用することなく、Dockerコンテナの大規模な
デプロイが可能になるというわけです。

ReadWrite Japan
[原文]

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30