etcdクラスタ
16853 ワード
This is the documentation for etcd2 releases. Read etcd3 doc for etcd3 releases.
クラスタガイド
概観
静的にetcdクラスタを起動するには、各メンバーがクラスタ内の別のメンバーを知っている必要があります.多くの場合、クラスタメンバーのIPは不明である可能性があります.これらの場合、etcdクラスタは、サービスの発見の助けを得て起動することができる.
etcdクラスタが起動して実行するとruntime reconfiguration.メンバーを追加または削除します.実行時の再構成の設計をよりよく理解するために、the runtime configuration design documentを読むことをお勧めします.
このガイドでは、etcdクラスタを起動するメカニズムについて説明します.静的 etcd発見 DNS発見 各ブートメカニズムは、次の詳細を含む3台のマシンのetcdクラスタを作成するために使用されます.
名前
アドレス
ホスト名
infra0
10.0.1.10
infra0.example.com
infra1
10.0.1.11
infra1.example.com
infra2
10.0.1.12
infra2.example.com
静的
起動前にクラスタメンバー、クラスタアドレス、クラスタサイズを知っているように、
ここで指定されたURL
テストの目的で複数のクラスタを回転させる(または単一のクラスタを作成して破棄する)場合は、
etcdリスニング
各マシンでは、これらのフラグを使用してetcdを起動できます.
エラー・ケース
次の例では、新しいホストを列挙ノードのリストに含めていません.これが新しいクラスタである場合、ノードは初期クラスタメンバーリストに追加する必要があります.
この例では、クラスタリスト(10.0.1.10:2380)の列挙アドレスではなく、1つのノード(infra 0)を異なるアドレス(127.0.0.1:22380)にマッピングしようとした.このノードが複数のアドレスをリスニングする場合は、すべてのアドレスがinitial-cluster構成コマンドに反映される必要があります.
異なるコンフィギュレーションセットを使用してピアデバイスを構成し、クラスタに参加しようとすると、クラスタIDが一致せず、etcdが終了します.
検出
多くの場合、クラスタ・ピアのIPを事前に知らない可能性があります.これは、クラウドプロバイダまたはネットワークを使用してDHCPを使用する場合によく見られます.これらの場合、静的構成を指定するのではなく、既存のetcdクラスタを使用して新しいクラスタを起動できます.私たちはこの過程を「発見」と呼んでいます.
次の2つの方法があります. etcd検出サービス DNS SRVレコード etcd検出
発見サービスプロトコルの設計をよりよく理解するために、それを読むことをお勧めします.
サイト発見の有効期間
URLは、一意のetcdクラスタを識別します.発見URLを繰り返し使用するのではなく、常に新しいクラスタの発見URLを作成する必要があります.
また,URLはクラスタの初期ブートにのみ使用できることが分かった.クラスタの実行後にクラスタメンバーシップを変更するには、実行時再構成ガイドを参照してください.
カスタムetcd検出サービス
Discoveryは、既存のクラスタを使用して独自に起動します.独自のetcdクラスタを使用する場合は、次のURLを作成できます.
サイズキーをURLに設定すると、予想されるクラスタサイズ3の検出URLを作成できます.
発見サービスを使用してetcdクラスタを起動する回数が予想されるetcdメンバー数を超える場合、追加のetcdプロセスはデフォルトでプロキシサーバにロールバックされます.
この場合、使用するURLは
各メンバーは、異なる名前フラグを指定する必要があります.
各メンバーの関連フラグでetcdを開始します.
これにより、各メンバーがカスタムetcdにサービス登録自体を発見し、すべてのマシン登録後にクラスタを開始します.
パブリックetcd検出サービス
既存のクラスタにアクセスできない場合は、管理する公開発見サービスdiscoveryを使用できます.etcd.io.次のように、「新規」エンドポイントを使用して、プライベート発見サイトを作成できます.
これにより、当初予想されたサイズが3つのメンバーのクラスタが作成されます.サイズを指定しない場合は、既定の3が使用されます.
発見サービスを使用してetcdクラスタを起動する回数が予想されるetcdメンバー数を超える場合、追加のetcdプロセスはデフォルトでプロキシサーバにロールバックされます.
各メンバーは、異なる名前フラグを指定する必要があります.Hostnameまたはmachine-idは良い選択です.または、重複した名前のために失敗することがわかります.
各メンバーの関連フラグでetcdを開始します.
これにより、各メンバーは発見サービスに自分自身を登録し、すべてのメンバーが登録された後にクラスタを開始します.
環境変数ETCD_を使用できます.DISCOVERY_PROXYはetcdにHTTPエージェントを用いて発見サービスに接続させる.
エラーと警告の事例
サーバエラーの検出
ユーザエラー
このエラーは、クラスタに構成数のメンバーがすでに存在し、discovery-fallbackが明示的に無効になっていることが判明した場合に発生します.
警告
これは無害な警告で、このコンピュータの発見URLが無視されることを通知します.
DNS検出
DNS SRV記録は発見機構として利用できる. _etcd-server-ssl._tcp.example.com _etcd-server._tcp.example.com
もし_etcd-server-ssl._tcp.example.comは、etcdがSSLを介してブートプロセスを試みることを発見した.
クライアントがetcdクラスタを検出するのを支援するために、以下のDNS SRVレコードをリストされた順序で検索します. _etcd-client._tcp.example.com _etcd-client-ssl._tcp.example.com
もし_etcd-client-ssl._tcp.example.comは、クライアントがSSLを介してetcdクラスタと通信しようとすることを発見した.
この-discovery-srv-nameフラグは、発見中にクエリのSRV名に接尾辞も構成します.このフラグを使用して、同じドメインの複数のetcdクラスタを区別します.例えば、discovery-srv=exampleである.comおよび-discovery-srv-name=foo設定、次のDNS SRVクエリは次のとおりです. _etcd-server-ssl-foo._tcp.example.com _etcd-server-foo._tcp.example.com
DNS SRVレコードの作成
DNSを使用してetcdクラスタを起動する
etcdクラスタメンバーはドメイン名またはIPアドレスを傍受することができ、ブートプロセスはDNS Aレコードを解析する.
解析されたアドレス--initial-advertise-peer-urlsは、SRVターゲットで解析されたアドレスの1つと一致する必要があります.etcdメンバーは、SRVレコードで定義されたクラスタに属するかどうかを決定するために、解析されたアドレスを読み出す.
また、ドメイン名ではなくIPアドレスを使用してクラスタを起動することもできます.
etcdエージェント構成
DNS SRVレコードは、プロキシ・モードで動作するetcdサーバのピア・リストを構成するためにも使用することができる.
etcdクライアント構成
DNS SRVレコードはまた、クライアントがetcdクラスタを発見するのを助けるために使用することもできる.
公式etcd/クライアントはDNS発見をサポートしています.
エラー・ケース
同様のエラーcannot find local etcd$name from SRV records.が表示される場合があります.これは、etcdメンバーがSRVレコードで定義されたクラスタから自分を見つけることができないことを意味します.解析されたアドレス--initial-advertise-peer-urlsは、SRVターゲットで解析されたアドレスの1つと一致する必要があります.
0.4~2.0+の移行ガイド
etcd 2.0では,複数のアドレスをリスニングし,複数のアドレスをパブリッシュする機能を導入した.複雑なネットワークがある場合、etcdの使用が容易になります.例えば、さまざまなクラウドプロバイダのプライベートネットワークやパブリックネットワークなどです.
この特性をより容易に理解するために、いくつかのフラグの名前を変更しましたが、古いフラグをサポートすることで、古いバージョンから新しいバージョンへの移行が容易になります.
Old Flag
New Flag
Migration Behavior
-peer-addr
--initial-advertise-peer-urls
If specified, peer-addr will be used as the only peer URL. Error if both flags specified.
-addr
--advertise-client-urls
If specified, addr will be used as the only client URL. Error if both flags specified.
-peer-bind-addr
--listen-peer-urls
If specified, peer-bind-addr will be used as the only peer bind URL. Error if both flags specified.
-bind-addr
--listen-client-urls
If specified, bind-addr will be used as the only client bind URL. Error if both flags specified.
-peers
none
Deprecated. The --initial-cluster flag provides a similar concept with different semantics. Please read this guide on cluster startup.
-peers-file
none
Deprecated. The --initial-cluster flag provides a similar concept with different semantics. Please read this guide on cluster startup.
クラスタガイド
概観
静的にetcdクラスタを起動するには、各メンバーがクラスタ内の別のメンバーを知っている必要があります.多くの場合、クラスタメンバーのIPは不明である可能性があります.これらの場合、etcdクラスタは、サービスの発見の助けを得て起動することができる.
etcdクラスタが起動して実行するとruntime reconfiguration.メンバーを追加または削除します.実行時の再構成の設計をよりよく理解するために、the runtime configuration design documentを読むことをお勧めします.
このガイドでは、etcdクラスタを起動するメカニズムについて説明します.
名前
アドレス
ホスト名
infra0
10.0.1.10
infra0.example.com
infra1
10.0.1.11
infra1.example.com
infra2
10.0.1.12
infra2.example.com
静的
起動前にクラスタメンバー、クラスタアドレス、クラスタサイズを知っているように、
initial-cluster
フラグを設定することで、オフラインブート構成を使用することができます.各マシンは、次の環境変数またはコマンドラインを取得します.ETCD_INITIAL_CLUSTER="infra0=http://10.0.1.10:2380,infra1=http://10.0.1.11:2380,infra2=http://10.0.1.12:2380"
ETCD_INITIAL_CLUSTER_STATE=new
--initial-cluster infra0=http://10.0.1.10:2380,infra1=http://10.0.1.11:2380,infra2=http://10.0.1.12:2380 \
--initial-cluster-state new
ここで指定されたURL
initial-cluster
は、initial-advertise-peer-urls
の各ノードの値に一致するように通知されたピアURLであることに注意してください.テストの目的で複数のクラスタを回転させる(または単一のクラスタを作成して破棄する)場合は、
initial-cluster-token
で異なるクラスタに一意のクラスタを指定することを強くお勧めします.これにより、etcdは、完全に同じ構成を有していても、クラスタに一意のクラスタIDおよびメンバーIDを生成することができる.これにより、クラスタを破壊する可能性のあるクラスタ間のインタラクションから保護できます.etcdリスニング
listen-client-urls
は、クライアントトラフィックを受信する.etcdメンバーは、指定されたURL広告advertise-client-urls
を他のメンバー、エージェント、クライアントに渡す.advertise-client-urls
が予想されるお客様から到着できることを確認してください.一般的なエラーは、advertise-client-urls
をlocalhostに設定するか、リモートクライアントがetcdに到達するようにデフォルト値として保持するかです.各マシンでは、これらのフラグを使用してetcdを起動できます.
$ etcd --name infra0 --initial-advertise-peer-urls http://10.0.1.10:2380 \
--listen-peer-urls http://10.0.1.10:2380 \
--listen-client-urls http://10.0.1.10:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://10.0.1.10:2379 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster infra0=http://10.0.1.10:2380,infra1=http://10.0.1.11:2380,infra2=http://10.0.1.12:2380 \
--initial-cluster-state new
$ etcd --name infra1 --initial-advertise-peer-urls http://10.0.1.11:2380 \
--listen-peer-urls http://10.0.1.11:2380 \
--listen-client-urls http://10.0.1.11:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://10.0.1.11:2379 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster infra0=http://10.0.1.10:2380,infra1=http://10.0.1.11:2380,infra2=http://10.0.1.12:2380 \
--initial-cluster-state new
$ etcd --name infra2 --initial-advertise-peer-urls http://10.0.1.12:2380 \
--listen-peer-urls http://10.0.1.12:2380 \
--listen-client-urls http://10.0.1.12:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://10.0.1.12:2379 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster infra0=http://10.0.1.10:2380,infra1=http://10.0.1.11:2380,infra2=http://10.0.1.12:2380 \
--initial-cluster-state new
--initial-cluster
は、後続のetcd実行中に、先頭のコマンドラインパラメータが無視される.ブートプロセスを開始すると、環境変数またはコマンドラインフラグを自由に削除できます.後で構成を変更する必要がある場合(たとえば、クラスタにメンバーを追加したり、クラスタからメンバーを削除したりする場合)、ランタイム構成ガイドを参照してください.エラー・ケース
次の例では、新しいホストを列挙ノードのリストに含めていません.これが新しいクラスタである場合、ノードは初期クラスタメンバーリストに追加する必要があります.
$ etcd --name infra1 --initial-advertise-peer-urls http://10.0.1.11:2380 \
--listen-peer-urls https://10.0.1.11:2380 \
--listen-client-urls http://10.0.1.11:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://10.0.1.11:2379 \
--initial-cluster infra0=http://10.0.1.10:2380 \
--initial-cluster-state new
etcd: infra1 not listed in the initial cluster config
exit 1
この例では、クラスタリスト(10.0.1.10:2380)の列挙アドレスではなく、1つのノード(infra 0)を異なるアドレス(127.0.0.1:22380)にマッピングしようとした.このノードが複数のアドレスをリスニングする場合は、すべてのアドレスがinitial-cluster構成コマンドに反映される必要があります.
$ etcd --name infra0 --initial-advertise-peer-urls http://127.0.0.1:2380 \
--listen-peer-urls http://10.0.1.10:2380 \
--listen-client-urls http://10.0.1.10:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://10.0.1.10:2379 \
--initial-cluster infra0=http://10.0.1.10:2380,infra1=http://10.0.1.11:2380,infra2=http://10.0.1.12:2380 \
--initial-cluster-state=new
etcd: error setting up initial cluster: infra0 has different advertised URLs in the cluster and advertised peer URLs list
exit 1
異なるコンフィギュレーションセットを使用してピアデバイスを構成し、クラスタに参加しようとすると、クラスタIDが一致せず、etcdが終了します.
$ etcd --name infra3 --initial-advertise-peer-urls http://10.0.1.13:2380 \
--listen-peer-urls http://10.0.1.13:2380 \
--listen-client-urls http://10.0.1.13:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://10.0.1.13:2379 \
--initial-cluster infra0=http://10.0.1.10:2380,infra1=http://10.0.1.11:2380,infra3=http://10.0.1.13:2380 \
--initial-cluster-state=new
etcd: conflicting cluster ID to the target cluster (c6ab534d07e8fcc4 != bc25ea2a74fb18b0). Exiting.
exit 1
検出
多くの場合、クラスタ・ピアのIPを事前に知らない可能性があります.これは、クラウドプロバイダまたはネットワークを使用してDHCPを使用する場合によく見られます.これらの場合、静的構成を指定するのではなく、既存のetcdクラスタを使用して新しいクラスタを起動できます.私たちはこの過程を「発見」と呼んでいます.
次の2つの方法があります.
発見サービスプロトコルの設計をよりよく理解するために、それを読むことをお勧めします.
サイト発見の有効期間
URLは、一意のetcdクラスタを識別します.発見URLを繰り返し使用するのではなく、常に新しいクラスタの発見URLを作成する必要があります.
また,URLはクラスタの初期ブートにのみ使用できることが分かった.クラスタの実行後にクラスタメンバーシップを変更するには、実行時再構成ガイドを参照してください.
カスタムetcd検出サービス
Discoveryは、既存のクラスタを使用して独自に起動します.独自のetcdクラスタを使用する場合は、次のURLを作成できます.
$ curl -X PUT https://myetcd.local/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83/_config/size -d value=3
サイズキーをURLに設定すると、予想されるクラスタサイズ3の検出URLを作成できます.
発見サービスを使用してetcdクラスタを起動する回数が予想されるetcdメンバー数を超える場合、追加のetcdプロセスはデフォルトでプロキシサーバにロールバックされます.
この場合、使用するURLは
https://myetcd.local/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83
etcdメンバーであり、https://myetcd.local/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83
の開始時にこのディレクトリを使用して登録されます.各メンバーは、異なる名前フラグを指定する必要があります.
Hostname
またはmachine-id
は良い選択です.または、重複した名前のために失敗することがわかります.各メンバーの関連フラグでetcdを開始します.
$ etcd --name infra0 --initial-advertise-peer-urls http://10.0.1.10:2380 \
--listen-peer-urls http://10.0.1.10:2380 \
--listen-client-urls http://10.0.1.10:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://10.0.1.10:2379 \
--discovery https://myetcd.local/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83
$ etcd --name infra1 --initial-advertise-peer-urls http://10.0.1.11:2380 \
--listen-peer-urls http://10.0.1.11:2380 \
--listen-client-urls http://10.0.1.11:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://10.0.1.11:2379 \
--discovery https://myetcd.local/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83
$ etcd --name infra2 --initial-advertise-peer-urls http://10.0.1.12:2380 \
--listen-peer-urls http://10.0.1.12:2380 \
--listen-client-urls http://10.0.1.12:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://10.0.1.12:2379 \
--discovery https://myetcd.local/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83
これにより、各メンバーがカスタムetcdにサービス登録自体を発見し、すべてのマシン登録後にクラスタを開始します.
パブリックetcd検出サービス
既存のクラスタにアクセスできない場合は、管理する公開発見サービスdiscoveryを使用できます.etcd.io.次のように、「新規」エンドポイントを使用して、プライベート発見サイトを作成できます.
$ curl https://discovery.etcd.io/new?size=3
https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de
これにより、当初予想されたサイズが3つのメンバーのクラスタが作成されます.サイズを指定しない場合は、既定の3が使用されます.
発見サービスを使用してetcdクラスタを起動する回数が予想されるetcdメンバー数を超える場合、追加のetcdプロセスはデフォルトでプロキシサーバにロールバックされます.
ETCD_DISCOVERY=https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de
-discovery https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de
各メンバーは、異なる名前フラグを指定する必要があります.Hostnameまたはmachine-idは良い選択です.または、重複した名前のために失敗することがわかります.
各メンバーの関連フラグでetcdを開始します.
$ etcd --name infra0 --initial-advertise-peer-urls http://10.0.1.10:2380 \
--listen-peer-urls http://10.0.1.10:2380 \
--listen-client-urls http://10.0.1.10:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://10.0.1.10:2379 \
--discovery https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de
$ etcd --name infra1 --initial-advertise-peer-urls http://10.0.1.11:2380 \
--listen-peer-urls http://10.0.1.11:2380 \
--listen-client-urls http://10.0.1.11:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://10.0.1.11:2379 \
--discovery https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de
$ etcd --name infra2 --initial-advertise-peer-urls http://10.0.1.12:2380 \
--listen-peer-urls http://10.0.1.12:2380 \
--listen-client-urls http://10.0.1.12:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://10.0.1.12:2379 \
--discovery https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de
これにより、各メンバーは発見サービスに自分自身を登録し、すべてのメンバーが登録された後にクラスタを開始します.
環境変数ETCD_を使用できます.DISCOVERY_PROXYはetcdにHTTPエージェントを用いて発見サービスに接続させる.
エラーと警告の事例
サーバエラーの検出
$ etcd --name infra0 --initial-advertise-peer-urls http://10.0.1.10:2380 \
--listen-peer-urls http://10.0.1.10:2380 \
--listen-client-urls http://10.0.1.10:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://10.0.1.10:2379 \
--discovery https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de
etcd: error: the cluster doesn’t have a size configuration value in https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de/_config
exit 1
ユーザエラー
このエラーは、クラスタに構成数のメンバーがすでに存在し、discovery-fallbackが明示的に無効になっていることが判明した場合に発生します.
$ etcd --name infra0 --initial-advertise-peer-urls http://10.0.1.10:2380 \
--listen-peer-urls http://10.0.1.10:2380 \
--listen-client-urls http://10.0.1.10:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://10.0.1.10:2379 \
--discovery https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de \
--discovery-fallback exit
etcd: discovery: cluster is full
exit 1
警告
これは無害な警告で、このコンピュータの発見URLが無視されることを通知します.
$ etcd --name infra0 --initial-advertise-peer-urls http://10.0.1.10:2380 \
--listen-peer-urls http://10.0.1.10:2380 \
--listen-client-urls http://10.0.1.10:2379,http://127.0.0.1:2379 \
--advertise-client-urls http://10.0.1.10:2379 \
--discovery https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de
etcdserver: discovery token ignored since a cluster has already been initialized. Valid log found at /var/lib/etcd
DNS検出
DNS SRV記録は発見機構として利用できる.
-discovery-srv
フラグは、SRVレコードを発見するDNSドメイン名を設定するために使用することができる.次のDNS SRVレコードをリストの順序で検索します.もし_etcd-server-ssl._tcp.example.comは、etcdがSSLを介してブートプロセスを試みることを発見した.
クライアントがetcdクラスタを検出するのを支援するために、以下のDNS SRVレコードをリストされた順序で検索します.
もし_etcd-client-ssl._tcp.example.comは、クライアントがSSLを介してetcdクラスタと通信しようとすることを発見した.
この-discovery-srv-nameフラグは、発見中にクエリのSRV名に接尾辞も構成します.このフラグを使用して、同じドメインの複数のetcdクラスタを区別します.例えば、discovery-srv=exampleである.comおよび-discovery-srv-name=foo設定、次のDNS SRVクエリは次のとおりです.
DNS SRVレコードの作成
$ dig +noall +answer SRV _etcd-server._tcp.example.com
_etcd-server._tcp.example.com. 300 IN SRV 0 0 2380 infra0.example.com.
_etcd-server._tcp.example.com. 300 IN SRV 0 0 2380 infra1.example.com.
_etcd-server._tcp.example.com. 300 IN SRV 0 0 2380 infra2.example.com.
$ dig +noall +answer SRV _etcd-client._tcp.example.com
_etcd-client._tcp.example.com. 300 IN SRV 0 0 2379 infra0.example.com.
_etcd-client._tcp.example.com. 300 IN SRV 0 0 2379 infra1.example.com.
_etcd-client._tcp.example.com. 300 IN SRV 0 0 2379 infra2.example.com.
$ dig +noall +answer infra0.example.com infra1.example.com infra2.example.com
infra0.example.com. 300 IN A 10.0.1.10
infra1.example.com. 300 IN A 10.0.1.11
infra2.example.com. 300 IN A 10.0.1.12
DNSを使用してetcdクラスタを起動する
etcdクラスタメンバーはドメイン名またはIPアドレスを傍受することができ、ブートプロセスはDNS Aレコードを解析する.
解析されたアドレス--initial-advertise-peer-urlsは、SRVターゲットで解析されたアドレスの1つと一致する必要があります.etcdメンバーは、SRVレコードで定義されたクラスタに属するかどうかを決定するために、解析されたアドレスを読み出す.
$ etcd --name infra0 \
--discovery-srv example.com \
--initial-advertise-peer-urls http://infra0.example.com:2380 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster-state new \
--advertise-client-urls http://infra0.example.com:2379 \
--listen-client-urls http://infra0.example.com:2379 \
--listen-peer-urls http://infra0.example.com:2380
$ etcd --name infra1 \
--discovery-srv example.com \
--initial-advertise-peer-urls http://infra1.example.com:2380 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster-state new \
--advertise-client-urls http://infra1.example.com:2379 \
--listen-client-urls http://infra1.example.com:2379 \
--listen-peer-urls http://infra1.example.com:2380
$ etcd --name infra2 \
--discovery-srv example.com \
--initial-advertise-peer-urls http://infra2.example.com:2380 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster-state new \
--advertise-client-urls http://infra2.example.com:2379 \
--listen-client-urls http://infra2.example.com:2379 \
--listen-peer-urls http://infra2.example.com:2380
また、ドメイン名ではなくIPアドレスを使用してクラスタを起動することもできます.
$ etcd --name infra0 \
--discovery-srv example.com \
--initial-advertise-peer-urls http://10.0.1.10:2380 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster-state new \
--advertise-client-urls http://10.0.1.10:2379 \
--listen-client-urls http://10.0.1.10:2379 \
--listen-peer-urls http://10.0.1.10:2380
$ etcd --name infra1 \
--discovery-srv example.com \
--initial-advertise-peer-urls http://10.0.1.11:2380 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster-state new \
--advertise-client-urls http://10.0.1.11:2379 \
--listen-client-urls http://10.0.1.11:2379 \
--listen-peer-urls http://10.0.1.11:2380
$ etcd --name infra2 \
--discovery-srv example.com \
--initial-advertise-peer-urls http://10.0.1.12:2380 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster-state new \
--advertise-client-urls http://10.0.1.12:2379 \
--listen-client-urls http://10.0.1.12:2379 \
--listen-peer-urls http://10.0.1.12:2380
etcdエージェント構成
DNS SRVレコードは、プロキシ・モードで動作するetcdサーバのピア・リストを構成するためにも使用することができる.
$ etcd --proxy on --discovery-srv example.com
etcdクライアント構成
DNS SRVレコードはまた、クライアントがetcdクラスタを発見するのを助けるために使用することもできる.
公式etcd/クライアントはDNS発見をサポートしています.
etcdctl
は、--discovery-srv
オプションを指定することによってDNS発見もサポートする.$ etcdctl --discovery-srv example.com set foo bar
エラー・ケース
同様のエラーcannot find local etcd$name from SRV records.が表示される場合があります.これは、etcdメンバーがSRVレコードで定義されたクラスタから自分を見つけることができないことを意味します.解析されたアドレス--initial-advertise-peer-urlsは、SRVターゲットで解析されたアドレスの1つと一致する必要があります.
0.4~2.0+の移行ガイド
etcd 2.0では,複数のアドレスをリスニングし,複数のアドレスをパブリッシュする機能を導入した.複雑なネットワークがある場合、etcdの使用が容易になります.例えば、さまざまなクラウドプロバイダのプライベートネットワークやパブリックネットワークなどです.
この特性をより容易に理解するために、いくつかのフラグの名前を変更しましたが、古いフラグをサポートすることで、古いバージョンから新しいバージョンへの移行が容易になります.
Old Flag
New Flag
Migration Behavior
-peer-addr
--initial-advertise-peer-urls
If specified, peer-addr will be used as the only peer URL. Error if both flags specified.
-addr
--advertise-client-urls
If specified, addr will be used as the only client URL. Error if both flags specified.
-peer-bind-addr
--listen-peer-urls
If specified, peer-bind-addr will be used as the only peer bind URL. Error if both flags specified.
-bind-addr
--listen-client-urls
If specified, bind-addr will be used as the only client bind URL. Error if both flags specified.
-peers
none
Deprecated. The --initial-cluster flag provides a similar concept with different semantics. Please read this guide on cluster startup.
-peers-file
none
Deprecated. The --initial-cluster flag provides a similar concept with different semantics. Please read this guide on cluster startup.