etcd のクラスタを構築してみた

こんにちは。サイオステクノロジー OSS サポート担当 Y です。

今回は、分散 KVS である etcd のクラスタ環境を構築してみました。(※以下の内容は etcd 3.3.11/CentOS 7.6 にて検証しています。)

■はじめに

前回は etcd をインストールして単体での動作検証を行なってみましたが、etcd は分散 KVS であり etcd 自身がクラスタリングの機能を持ってます。

今回はその機能を使って、etcd のクラスタ環境を構築してみました。

■環境構成

今回は、以下の様な 3ノード構成で etcd のクラスタを構築してみます。

[環境構成]

■構築

それではさっそく etcd クラスタを構築してみます。

最初に etcd のインストールが必要ですが、インストールについては前回の記事に記載されているので、そちらを参照して下さい。本記事には、各ノードに etcd をインストールした後の作業から記載します。

etcd にてクラスタを構築する場合は、各ノードにて etcd を起動する際にノード間での通信を行うための URL を指定するオプション等、複数のオプションを指定して起動します。

今回は、それぞれのノードで以下の様なオプションを付けて etcd を起動します。(各オプションの詳細については割愛します。各オプションの詳細についてはドキュメントに記載されているので、興味がある方はそちらをご参照下さい。)

[実行コマンド (1号機)]

[実行コマンド (2号機)]

[実行コマンド (3号機)]

実際にコマンドを実行すると、以下の様になります。(フォアグラウンドで動作するため、以降の作業は別ターミナルから行なっています。)

[1号機起動]

[2号機起動]

[3号機起動]

各ノード起動後に etcdctl cluster-health コマンドでクラスタの状態を確認してみます。

すると、”cluster is healthy” と出力されており、無事にクラスタ構築が完了したようです。

■動作検証

今度は、構築した etcd クラスタで簡単な動作検証を実施してみます。

まずは、データがクラスタ内で同期されるかを確認するため、etcd1.example.com でデータを追加し、他のノードで参照してみます。

すると、etcd1.example.com で追加した key1 及び key1 の値を etcd2.example.com/etcd3.example.com で参照することができました。

また、以下の様に etcd2.example.com/etcd3.example.com で追加したデータを他のノードから参照することもできました。

上記の通り、各ノードで追加したデータがクラスタ内で同期されていることが確認できました。

次に、データの更新を試してみます。

データの更新についても、特定のノードで更新した値が他のノードに同期され、更新後の値を参照することができました。

最後にデータの削除を試してみます。

データの削除についても、特定のノードで削除したデータは他のノードでも削除 (処理が同期) されていることが確認できました。

■まとめ

今回は 3ノード構成の etcd クラスタの動作検証を実施してみました。

前回ご紹介したように、バイナリファイルをダウンロードするだけでコンパイル等の作業は不要で利用できることに加え、オプションを指定して起動するだけでクラスタを構築することもできました。

もちろん長所/短所があるため一概には言えませんが、導入及びクラスタ構築の手間も少なくて済むので、分散 KVS の利用を検討している方には選択肢の一つとなり得るのではないでしょうか。

また、etcd の長所/短所や他の類似する DB との比較などについてはこちらに記載されているので、etcd に興味がある方はご参考にして頂ければと思います。

>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメント投稿

メールアドレスは表示されません。


*