クラスタ・インフラストラクチャ
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/01/17 14:26 UTC 版)
「Container Linux」の記事における「クラスタ・インフラストラクチャ」の解説
Container Linuxは、クラスタ内のすべてのコンピュータ上で動作し、動的な設定レジストリとして、etcdを提供している。これにより、様々な設定データを簡単かつ信頼性の高い方法でクラスタメンバー間で共有できる。 etcdに保存されたキーバリューデータは、Raftアルゴリズムを用いて自動的なマスター選出とコンセンサスが確立され、自動的に分散、複製が行われるため、保存されたデータのすべての変更がクラスタ全体に反映されるとともに、1つのクラスタメンバーが障害で失われても、データの損失が生じない冗長性が実現されている。設定の管理に加えて、etcdは自身と自身が提供するサービスを通知することにより、サービスディスカバリの機能も提供している。etcdとの通信は、公開されたRESTベースのAPIにより行われ、内部ではHTTPプロトコル上のJSONが使用されている。APIは直接使用することもできるし(たとえば、curlやwgetを使用して)、CoreOSが提供する専用のコマンドラインユーティリティのetcdctl経由で間接的に利用することもできる。etcdはKubernetesのソフトウェアとしても利用されている。 Container Linuxは、2017年まで、fleetと呼ばれるクラスタマネージャも提供しており、Container Linuxの別のsystemdインスタンスをクラスタレベルで管理することができた。しかし、2017年2月7日、Kubernetesがクラスタマネージャのデファクトスタンダードとなっていることから、1年後の2018年2月1日にfleetを廃止することが発表された。fleetdを使用すると、Container Linuxは別々のsystemdインスタンスを結びつけて分散化されたinit systemを構築することができ、クラスタ全体にetcdをデプロイできる。内部では、fleetdデーモンがローカルのsystemdインスタンスとD-Bus経由で通信しており、etcdのデプロイはsystemdの公開APIで行われる。fleetdにより、1つまたは複数のコンテナ(英語版)をクラスタ全体にデプロイすることが可能になり、さらに冗長化、フェイルオーバー、特定のクラスタメンバーへのデプロイ、コンテナ間の依存関係の定義、コンテナのグループ化デプロイなどの発展的なオプションが利用できる。fleetctlと呼ばれるコマンドラインユーティリティを用いて、この分散initシステムを設定・監視することができる。内部では、fleetdデーモンとの間でHTTP上のJSONベースのAPIを用いて通信を行っており、このAPIは直接利用することもできる。クラスタメンバーのローカルで使用した場合は、fleetctlはローカルのfleetdインスタンスとUnixドメインソケットで通信し、外部のホストからはSSHの公開鍵で認証されたSSHトンネリングが使われる。 これらすべてのデーモンとコマンドラインユーティリティ(etcd、etcdctl、fleetd、fleetctl)は、Go言語で書かれており、Apache License 2.0ライセンスで配布されている。
※この「クラスタ・インフラストラクチャ」の解説は、「Container Linux」の解説の一部です。
「クラスタ・インフラストラクチャ」を含む「Container Linux」の記事については、「Container Linux」の概要を参照ください。
- クラスタ・インフラストラクチャのページへのリンク