本文へ移動

ローカルクラスターの構築

テストと開発用のローカルクラスターを構成する

テストや開発用にデプロイする場合、最も手早く簡単なのはローカルクラスターの構成です。本番環境へのデプロイについては、クラスター構成 のセクションを参照してください。

ローカルの単独クラスター

クラスターの起動

etcdを単独クラスターとしてデプロイするには、次を実行します。

$ ./etcd
...

現在の作業ディレクトリにetcdバイナリーがない場合、$GOPATH/bin/etcdまたは/usr/local/bin/etcdにある可能性があります。その場所に合わせてコマンドを実行してください。

起動したetcdメンバーは、localhost:2379でクライアントリクエストを待ち受けます。

クラスターの操作

etcdctlで実行中のクラスターを操作します。

  1. 例としてキー・バリューペアをクラスターに保存します。

      $ ./etcdctl put foo bar
      OK

    OKと表示されれば、キー・バリューペアの保存は成功です。

  2. fooの値を取得します。

    $ ./etcdctl get foo
    bar

    barが返れば、etcdクラスターとのやり取りは正常に動作しています。

ローカルの複数メンバークラスター

クラスターの起動

etcdのGitリポジトリのルートには、ローカルで複数メンバーのクラスターを簡単に構成するためのProcfileがあります。複数メンバーのクラスターを起動するには、etcdのソースツリーのルートに移動して、次の操作を行います。

  1. Procfileに基づくアプリケーションを制御するため、goremanをインストールします。

    $ go install github.com/mattn/goreman@latest
  2. etcdに付属するProcfileを使い、goremanでクラスターを起動します。

    $ goreman -f Procfile start

    メンバーが起動し、それぞれlocalhost:2379、localhost:22379、localhost:32379でクライアントリクエストを待ち受けます。

クラスターの操作

etcdctlで実行中のクラスターを操作します。

  1. メンバーの一覧を表示します。

    $ etcdctl --write-out=table --endpoints=localhost:2379 member list

    etcdメンバーの一覧が次のように表示されます。

    +------------------+---------+--------+------------------------+------------------------+
    |        ID        | STATUS  |  NAME  |       PEER ADDRS       |      CLIENT ADDRS      |
    +------------------+---------+--------+------------------------+------------------------+
    | 8211f1d0f64f3269 | started | infra1 | http://127.0.0.1:2380  | http://127.0.0.1:2379  |
    | 91bc3c398fb3c146 | started | infra2 | http://127.0.0.1:22380 | http://127.0.0.1:22379 |
    | fd422379fda50e48 | started | infra3 | http://127.0.0.1:32380 | http://127.0.0.1:32379 |
    +------------------+---------+--------+------------------------+------------------------+
  2. 例としてキー・バリューペアをクラスターに保存します。

    $ etcdctl put foo bar
    OK

    OKと表示されれば、キー・バリューペアの保存は成功です。

耐障害性のテスト

etcdの耐障害性を試すため、メンバーを停止してからキーを取得します。

  1. 停止するメンバーのプロセス名を確認します。

    Procfileには、複数メンバーのクラスターのプロパティが記載されています。ここでは、プロセス名がetcd2のメンバーを例にします。

  2. メンバーを停止します。

    # kill etcd2
    $ goreman run stop etcd2
  3. キーを保存します。

    $ etcdctl put key hello
    OK
  4. 前の手順で保存したキーを取得します。

    $ etcdctl get key
    hello
  5. 停止したメンバーからキーを取得します。

    $ etcdctl --endpoints=localhost:22379 get key

    このコマンドでは、接続失敗によるエラーが表示されるはずです。

    2017/06/18 23:07:35 grpc: Conn.resetTransport failed to create client transport: connection error: desc = "transport: dial tcp 127.0.0.1:22379: getsockopt: connection refused"; Reconnecting to "localhost:22379"
    Error:  grpc: timed out trying to connect
  6. 停止したメンバーを再起動します。

    $ goreman run restart etcd2
  7. 再起動したメンバーからキーを取得します。

    $ etcdctl --endpoints=localhost:22379 get key
    hello

    メンバーを再起動すると接続が再確立され、etcdctlでキーを正常に取得できるようになります。etcdの操作について詳しくは、etcdの操作 のセクションを参照してください。