etcdの概要
etcd(エトセディー)は、分散型Key-Valueストアを実現するためのオープンソースです。
元々はContainer Linux(旧称:CoreOS Linux)において、クラスタメンバー間で信頼性の高いデータ共有を実現するための設定レジストリとして開発されました。2020年11月にgraduatedプロジェクトとなっており、今後も多くの活用が見込まれるOSSです。
etcdでは、Raftと呼ばれるアルゴリズムを利用されます。Raftアルゴリズムでは、クラスタメンバーは、自律的に一意のリーダーを投票から選出し、それ以外はフォロワーという役割を担うようになります。クライアントからのリクエストはどのメンバーに送信してもかまいませんが、コンセンサスが必要なリクエスト(値の更新など)は必ずリーダーに転送されて実行されるようになります。リーダーは値の更新が過半数以上のフォロワーで成功したかを確認した上で、その更新リクエストをコミットして応答を返します。一方、コンセンサスが不要なリクエストはどのクラスタメンバーでも応答を返すことができます。上記のような、自律的なリーダーの選出やコンセンサスの仕組みにより、データの一貫性の保持や信頼性の高いレプリケーションが実現します。Raftアルゴリズムの仕組み上、過半数を獲得したかどうかという概念が重要となるため、クラスタのメンバー数は必ず奇数にしておくこと、7ノード以下の構成が推奨されます。
etcdは、Kubernetesにおけるコントロールプレーンのクラスタ設定レポジトリとして利用されていることで有名です。また、同じCNCFのgraduatedプロジェクトであるROOKやCoreDNSでも利用されています。
etcdの特徴
シンプルなインターフェース | curlなどの標準のHTTPクライアントを使用して、値を読み書きすることが可能です。 |
充実したツールおよびライブラリ | 標準のetcdctl以外にも多数のコマンドラインツールおよび言語用ライブラリが公開されています。 |
階層型Key-Valueストレージ | 標準のファイルシステムのように、階層的に編成されたディレクトリにデータを保存します。 |
変更のウォッチ | 特定のキーまたは、ディレクトリの変更を監視して、値の変更に対応することが可能です。 |
認証・認可 | 通常のユーザー認証に加え、SSLクライアント証明書の認証等も可能です。また、ロールにより、特定のKeyの読み書きを制御するなどの認可も可能です。 |
優れたベンチマーク | インスタンスあたり1000回/秒の書き込みが可能です。 |
有効期限 | キーにTTLを設定することが可能です。 |
Raftアルゴリズム | Raftという分散同意アルゴリズムを利用した一貫性/可用性のあるレプリケーションが可能です。 |
統計情報出力 | 統計情報のレポートはPrometheus形式で、サーバー、ディスク、ネットワーク、gRPC、デバッグ用のネームスペースごとに出力されます。 |
etcdの動作環境
動作環境により、Support tierが異なります。
- Tier 1: etcd メンテナーによって完全にサポートされています。etcd は、機能テストやストレステストを含むすべてのテストに合格することが保証されています。
- Tier 2: etcd は、統合およびエンド ツー エンドのテストに合格することが保証されていますが、必ずしも機能テストまたはストレス テストに合格するとは限りません。
- Tier 3: etcd はビルドが保証されており、軽くテストされている (またはテストされていない) 可能性があるため、不安定であるとみなす必要があります。
Architecture | Operating system | Support tier |
---|---|---|
AMD64 | Linux | 1 |
AMD64 | Linux | 3 |
AMD64 | Darwin | 3 |
AMD64 | Windows | 3 |
ARM | Linux | 3 |
386 | Linux | 3 |
ppc64le | Linux | 3 |
s390x | Linux | 3 |
類似の機能をもつOSS
類似機能をもつOSSとして、下記のものがあります。
- ZooKeeper
- Consul
- Cloud Spanner
- CockroachDB
- TiDB
etcdのライセンス
etcdは、Apache2.0ライセンスです。 Apache License(アパッチ・ライセンス)のコードが使用されていることの明記を条件に、ソースコードの自由な改変と公開が認められています。
etcdのライセンスについてご不明な点がありましたら、お気軽にお問い合わせください。
etcdの公式サイト
etcdのダウンロードサイト
https://github.com/etcd-io/etcd/releases/
etcdのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。
・オープンソース年間サポートサービス