Supergiantは、Kubernetesを使って構築された、分散ステートフルアプリケーションのためのコンテナホスティング・プラットフォームだ。Elasticsearchのホスティングを提供するQbox.ioチームによって作られた。
Supergiantは、ステートフルでクラスタ型のアプリケーションをホストするDockerコンテナを動かすフレームワークだ。Kubernetesを利用しているが、永続ストレージや外部ロードバランシングなど、Kubernetesがうまくいかない場合のために独自の構造とコードが含まれている。その技術詳細について知るため、InfoQはQboxのCEOで共同創業者でありSupergiantの作者、Mark Brandon氏にコンタクトした。
QBox.ioチームはElasticsearchのホスティングから始めたのだが、そこで「noisy neighbor」問題によりスケールできないなどの課題に直面したという。ブログによると、ネットワーク化されたコンテナおよびボリュームを管理するのに、DockerとKubernetesが適切な選択であるように思ったという。
Supergiantにデプロイされるアプリケーションのストレージは、高可用性アレイに割り当てられるが、Kubernetesの永続ボリュームを使っていない。SupergiantはAmazonのElastic Block Store (EBS) を使っており、ボリュームはクラスタを自由に動くことができる。EBSボリュームは、仮想マシンにプラグ/アンプラグ(マウント/アンマウント)できるハードドライブのように振る舞うという。EBSボリュームはノードサーバーのリブートを越えて永続されるため、ノードが落ちてもデータが失われることはない。
KubernetesにはネイティブのロードバランシングとHA機能がある。Brandon氏によると、Supergiantチームは特に、外部ロードバランシングのためのコードを書いたという。「Kubernetesは内部ロードバランシングをうまく扱えるのですが、その外部ロードバランシング戦略はElasticsearchのような分散アプリケーションにとって決して理想的なものではありません。」
Supergiant上のアプリケーションとして動かすには、ソフトウェアの一部を"Component"としてパッケージングする必要がある。コンポーネントはNoSQLデータベースや、Webサーバー、node.jsアプリになる。Brandon氏によると「Docker化されたアプリケーションはコンポーネントになる」という。Supergiantはコンポーネントを定義するHTTPベースのAPIを提供している。
AWS上で動くアプリケーションの要件のひとつは、次のレベルであるクロスリージョンをサポートし、アベイラビリティゾーン (AZ) 障害に耐性があることだ。Brandon氏によると、SupergiantはAWSゾーンを越えるクラスタの管理に取り組んでいるという。
Rate this Article
- Editor Review
- Chief Editor Action