Etcd使用
5641 ワード
Etcdの概要
etcdは、主に構成とサービス発見を共有するために使用される、高可用性のキー値ストレージシステムです.etcdはCoreOSによって開発され維持されており、ZooKeeperとDoozerからインスピレーションを受けており、Go言語で記述され、Raftコンシステンシアルゴリズムによってログレプリケーションを処理し、強いコンシステンシを保証しています.RaftはStanfordからの新しいコンシステンシアルゴリズムであり,分散システムのログレプリケーションに適しており,Raftは選挙によってコンシステンシを実現し,RaftではどのノードもLeaderになる可能性がある.Googleのコンテナクラスタ管理システムKubernetes、オープンソースPaaSプラットフォームCloud Foundry、CoreOSのFleetはetcdを広く使用しています.
etcdクラスタの動作原理はraft共通認識アルゴリズム(The Raft Consensus Algorithm)に基づいている.etcdは0.5である.0バージョンでは、以前のようにサードパーティライブラリgo-raftに依存するのではなく、raftアルゴリズムが再実現されました.raft共通認識アルゴリズムの利点は,分散システムにおける各ノードログコンテンツの一貫性の問題を効率的に解決するとともに,クラスタに一定のフォールトトレランス能力を持たせることである.クラスタに一部のノード障害、ネットワーク障害などの問題が発生しても、残りのほとんどのノードの正しいステップが保証されます.さらに、より多くのノード(一般的にクラスタノードの総数の半分を超える)に障害が発生してクラスタが使用できなくなった場合でも、ノード内のデータにエラーの結果が発生しないことを保証できます.
1. Getting etcd
Releaseページ(https://github.com/coreos/etcd/releases/)バイナリをダウンロードするか、最新のmasterコードを引いてコンパイルします.
もう1つの方法は、vendorでコンパイルされたetcdを直接取得することです.以下のようにします.
2. Starting etcd
直接実行
またはdata-dirを指定します
詳細な構成オプションについては、次を参照してください.https://coreos.com/etcd/docs/latest/op-guide/configuration.html
簡単な例human readable:
参照先:https://coreos.com/etcd/docs/latest/getting-started-with-etcd.html https://docs.portworx.com/run-etcd.html
3. etcd cluster
参照先:https://coreos.com/etcd/docs/latest/v2/docker_guide.html#running-etcd-in-standalone-mode https://coreos.com/etcd/docs/latest/op-guide/clustering.html
4.etcdctlヘルプの表示
上記で起動したetcdはサーバであり、政府はcommandlineクライアント、すなわちetcdctlを提供し、すべてのコマンドはこのクライアントを通じて要求される.ヘルプ情報を表示するには、次のコマンドを実行します.
getコマンドのヘルプを表示するなど、特定のcommandのヘルプを表示します.
5. Command examples
次のようなkeysがあると仮定します.
デフォルトetcdctlではkeyとvalueが印刷され、valueの値だけを印刷します.
すべてのprefixがfooのkeyに対応するvalueを取得
その他のコマンド:https://coreos.com/etcd/docs/latest/dev-guide/interacting_v3.html
etcdは、主に構成とサービス発見を共有するために使用される、高可用性のキー値ストレージシステムです.etcdはCoreOSによって開発され維持されており、ZooKeeperとDoozerからインスピレーションを受けており、Go言語で記述され、Raftコンシステンシアルゴリズムによってログレプリケーションを処理し、強いコンシステンシを保証しています.RaftはStanfordからの新しいコンシステンシアルゴリズムであり,分散システムのログレプリケーションに適しており,Raftは選挙によってコンシステンシを実現し,RaftではどのノードもLeaderになる可能性がある.Googleのコンテナクラスタ管理システムKubernetes、オープンソースPaaSプラットフォームCloud Foundry、CoreOSのFleetはetcdを広く使用しています.
etcdクラスタの動作原理はraft共通認識アルゴリズム(The Raft Consensus Algorithm)に基づいている.etcdは0.5である.0バージョンでは、以前のようにサードパーティライブラリgo-raftに依存するのではなく、raftアルゴリズムが再実現されました.raft共通認識アルゴリズムの利点は,分散システムにおける各ノードログコンテンツの一貫性の問題を効率的に解決するとともに,クラスタに一定のフォールトトレランス能力を持たせることである.クラスタに一部のノード障害、ネットワーク障害などの問題が発生しても、残りのほとんどのノードの正しいステップが保証されます.さらに、より多くのノード(一般的にクラスタノードの総数の半分を超える)に障害が発生してクラスタが使用できなくなった場合でも、ノード内のデータにエラーの結果が発生しないことを保証できます.
1. Getting etcd
Releaseページ(https://github.com/coreos/etcd/releases/)バイナリをダウンロードするか、最新のmasterコードを引いてコンパイルします.
$ git clone https://github.com/coreos/etcd.git
$ cd etcd
$ ./build
もう1つの方法は、vendorでコンパイルされたetcdを直接取得することです.以下のようにします.
$ go get github.com/coreos/etcd/cmd/etcd
2. Starting etcd
直接実行
$ etcd
またはdata-dirを指定します
$ etcd -data-dir=/var/edata
詳細な構成オプションについては、次を参照してください.https://coreos.com/etcd/docs/latest/op-guide/configuration.html
簡単な例human readable:
# This config is meant to be consumed by the config transpiler, which will
# generate the corresponding Ignition config. Do not pass this config directly
# to instances of Container Linux.
etcd:
name: my-etcd-1
listen_client_urls: https://10.240.0.1:2379
advertise_client_urls: https://10.240.0.1:2379
listen_peer_urls: https://10.240.0.1:2380
initial_advertise_peer_urls: https://10.240.0.1:2380
initial_cluster: my-1=https://10.240.0.1:2380,my-2=https://10.240.0.2:2380,my-3=https://10.240.0.3:2380
initial_cluster_token: my-etcd-token
initial_cluster_state: new
参照先:https://coreos.com/etcd/docs/latest/getting-started-with-etcd.html https://docs.portworx.com/run-etcd.html
3. etcd cluster
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
参照先:https://coreos.com/etcd/docs/latest/v2/docker_guide.html#running-etcd-in-standalone-mode https://coreos.com/etcd/docs/latest/op-guide/clustering.html
4.etcdctlヘルプの表示
上記で起動したetcdはサーバであり、政府はcommandlineクライアント、すなわちetcdctlを提供し、すべてのコマンドはこのクライアントを通じて要求される.ヘルプ情報を表示するには、次のコマンドを実行します.
$ ETCDCTL_API=3 etcdctl help
getコマンドのヘルプを表示するなど、特定のcommandのヘルプを表示します.
$ ETCDCTL_API=3 etcdctl help get
NAME:
get - Gets the key or a range of keys
USAGE:
etcdctl get [options] [range_end]
OPTIONS:
--consistency="l" Linearizable(l) or Serializable(s)
--from-key[=false] Get keys that are greater than or equal to the given key using byte compare
--keys-only[=false] Get only the keys
--limit=0 Maximum number of results
--order="" Order of results; ASCEND or DESCEND (ASCEND by default)
--prefix[=false] Get keys with matching prefix
--print-value-only[=false] Only write values when using the "simple" output format
--rev=0 Specify the kv revision
--sort-by="" Sort target; CREATE, KEY, MODIFY, VALUE, or VERSION
GLOBAL OPTIONS:
--cacert="" verify certificates of TLS-enabled secure servers using this CA bundle
--cert="" identify secure client using this TLS certificate file
--command-timeout=5s timeout for short running command (excluding dial timeout)
--debug[=false] enable client-side debug logging
--dial-timeout=2s dial timeout for client connections
--endpoints=[127.0.0.1:2379] gRPC endpoints
--hex[=false] print byte strings as hex encoded strings
--insecure-skip-tls-verify[=false] skip server certificate verification
--insecure-transport[=true] disable transport security for client connections
--key="" identify secure client using this TLS key file
--user="" username[:password] for authentication (prompt if password is not supplied)
-w, --write-out="simple" set the output format (fields, json, protobuf, simple, table)
5. Command examples
次のようなkeysがあると仮定します.
foo = bar
foo1 = bar1
foo2 = bar2
foo3 = bar3
デフォルトetcdctlではkeyとvalueが印刷され、valueの値だけを印刷します.
$ etcdctl get foo --print-value-only
bar
すべてのprefixがfooのkeyに対応するvalueを取得
$ etcdctl get --prefix foo
foo
bar
foo1
bar1
foo2
bar2
foo3
bar3
その他のコマンド:https://coreos.com/etcd/docs/latest/dev-guide/interacting_v3.html