インストールとコマンドetcd学習

ETCD学習

ダウンロードetcd

#下载
wget https://github.com/etcd-io/etcd/releases/download/v3.3.18/etcd-v3.3.18-linux-amd64.tar.gz
#解压
tar zxvf etcd-v3.3.18-linux-amd64.tar.gz
cd etcd-v3.3.18-linux-amd64.tar.gz
#复制到用户目录
cp etcd etcdctl /usr/local/bin
#赋予执行权限
chmod +x etcd
chmod +x etcdctl

スタートetcd

私は練習として、直接IPを介してアクセスすることができ、パブリックネットワークにさらさetcdますよ、一般的にはお勧めしません

./etcd --listen-client-urls 'http://0.0.0.0:2379' --advertise-client-urls 'http://0.0.0.0:2379'
# 后台启动 
#nohup etcd --listen-client-urls 'http://0.0.0.0:2379' --advertise-client-urls 'http://0.0.0.0:2379' &

V3セットの環境変数(デフォルトV2)

export ETCDCTL_API=3
#或者永久设置 vim /etc/profile 在最后添加export ETCDCTL_API=3  然后source /etc/profile

操作はetcd(参考資料

キーと値のコマンド

PUT [オプション] <キー> <値>

存在する場合、PUT設けKV値のペアは、kは、被覆されています

オプションオプション

  • リース - キーに関連付けられたリースID(16進リースID)
  • PREV-KV - 修正を返す前に、元のキー
  • 無視値を - 現在の値は、そのキーを使用して更新されます
  • リースを無視する - 彼らの現在のリース更新キーを使用します

輸出

OK

# 设置
etcdctl put foo bar
# ok

#读取
etcdctl get foo
# foo
# bar

# 设置新kv并读取前一次的kv
etcdctl put foo bar1 --prev-kv
# OK
# foo
# bar

# 读取
etcdctl get foo
# foo
# bar1

# 给key添加租约(需要提前申请租约)
etcdctl put foo bar --lease=1234abcd
# 报错 etcdserver: requested lease not found。需要先申请一个租约

# 申请一个500秒的租约
etcdctl lease grant 500

# 给key添加租约
#lease 694d6ed6e8fed50f granted with TTL(500s)
etcdctl put foo bar --lease=694d6ed6e8fed50f
# OK

# 使用其当前租约更新key(为了使用现有租约)
etcdctl put foo bar4 --ignore-lease
# ok
etcdctl get foo
# foo
# bar4

# 使用当前值更新kv(为了解除租约,保持值不变)
etcdctl put foo --ignore-value
# OK

リマーク

あなたはそうではない場合 これは、コマンドラインパラメータ、標準からの入力値を読み込むためのコマンドの試みとして与えられます。
値は、値が含まれている場合は「 - 」「 - 」解像度、入力にフラグを、この時間が必要として解析されます

etcdctl put foo -bar4
# Error: unknown shorthand flag: 'b' in -bar4

etcdctl put foo -- -bar4
etcdctl put -- foo -bar5
# OK

次のように複数の行やスペースを有していてもよく、それは、二重引用符で囲む必要があります。

etcdctl put foo "bar 1 2 3"
# ok

etcdctl get foo
# foo
# bar 1 2 3

GET [オプション] <キー> [RANGE_END]

RANGE_ENDを指定した場合、GETは、キーまたはキーの範囲になるだろう[キー、RANGE_END)が左と右の開閉に

  • ヘックス - 進符号化された出力KV

  • リミット - 結果セットの最大数を制限します

  • 接頭辞 - 同じプレフィックスキーを取得

  • 順序 - 結果をソートする順序を昇順または降順

  • ソート・バイ - 作成時間に応じて、キー、修正時刻、数値、目標のバージョンの並べ替え

  • REV - 指定されたバージョン

  • プリント価値のみ - 印刷のみ値書き込みアウト=シンプルで使用した場合

  • 一貫性 - リニア同一性または配列同一性

  • キー - 指定されたキー(バイトの比較)からご覧バック

  • キーのみ - 読み取り専用のキー

出力

<キー>

<値>

<next_key>

<next_value>

...

まず、いくつかのキーが設定され

etcdctl put foo bar
# OK
etcdctl put foo1 bar1
# OK
etcdctl put foo2 bar2
# OK
etcdctl put foo3 bar3
# OK

キー値FOOを読みます

etcdctl get foo
# foo
# bar

FOOは、キー値を読み、16進符号化を行います

etcdctl get foo --hex
# \x66\x6f\x6f
# \x62\x61\x72

キー値のプレフィックスFOOを読みます

etcdctl get foo --prefix
# foo
# bar
# foo1
# bar1
# foo2
# foo2
# foo3
# bar3

逆キー値fooという接頭辞を読むと(デフォルトはASCENDです)

etcdctl get foo --prefix --order="DESCEND"
# foo3
# bar3
# foo2
# bar2
# foo1
# bar1
# foo
# bar

すべてのキーの値を読みます

etcdctl get --from-key ''
# foo
# bar
# foo1
# bar1
# foo2
# foo2
# foo3
# bar3

作成時間に従ってすべてのキーの値を読み取り

etcdctl get foo --from-key '' --sort-by=CREATE
# foo
# bar
# foo1
# bar1
# foo2
# foo2
# foo3
# bar3

KVの指定されたバージョンを読み込み

 etcdctl get foo --rev=0
# foo
# bar

Vの唯一の指定されたバージョンを読みます

etcdctl get foo --print-value-only
# foo

Kのみの指定したバージョンを読みます

etcdctl get foo --keys-only
# foo
# 

キーの値を読むことは、すべてのキー等しいfoo1はのバイト順序よりも大きく、

etcdctl get --from-key foo1
# foo1
# bar1
# foo2
# bar2
# foo3
# bar3

キーの値を読み取ると、バイト順序foo1のに等しく、キーfoo3の全てよりも少ないです

etcdctl get foo1 foo3
# foo1
# bar1
# foo2
# bar2    

キー値を読み取ると、すべてのキー2を注文foo1のバイトを等しくする前に

etcdctl get --from-key foo1 --limit 2
# foo1
# bar1
# foo2
# bar2

リマーク

シンプルなフォーマットと出力のラップの結果が明確ではないかもしれないので、任意のキーまたは値が、印刷できない文字や制御文字が含まれている場合。この問題を解決するには、設定され--hexたすべての文字列を16進数のエンコーディングを。

DEL [オプション] <キー> [RANGE_END]

RANGE_ENDは、指定された場合は、[キー、RANGE_END)が左右に開閉するために、指定されたキーまたはキー範囲を削除

オプション

  • 接頭辞 - 指定されたプレフィックスキーを削除します

  • PREV-KV - 戻り値を削除した後KV

  • キー - 指定されたキーの削除(バイトの比較)から後方

指定されたキーを削除します。

etcdctl put foo bar
# OK
etcdctl del foo
# 1
etcdctl get foo

指定されたキーを削除し、KVの値を返します。

etcdctl del foo1 --prev-kv
# 1
# foo1
# bar1

指定されたキーから削除されるようになりました

etcdctl del --from-key foo
# 2

fooというプレフィックスキーに削除します

etcdctl del foo --prefix
# 2

TNX [オプション](総務)

TXNは、標準入力から複数の読み取り要求をetcdし、単一のアトミックトランザクションアプリケーションとしてそれらを送ります。

オプショナル

  • 六角 - 進エンコードされた文字列を出力

  • インタラクティブ - トランザクション・プログラムのための対話型のプロンプトに基づきます

入力形式

<Txn> ::= <CMP>* "\n" <THEN> "\n" <ELSE> "\n"
<CMP> ::= (<CMPCREATE>|<CMPMOD>|<CMPVAL>|<CMPVER>|<CMPLEASE>) "\n"
<CMPOP> ::= "<" | "=" | ">"
<CMPCREATE> := ("c"|"create")"("<KEY>")" <CMPOP> <REVISION>
<CMPMOD> ::= ("m"|"mod")"("<KEY>")" <CMPOP> <REVISION>
<CMPVAL> ::= ("val"|"value")"("<KEY>")" <CMPOP> <VALUE>
<CMPVER> ::= ("ver"|"version")"("<KEY>")" <CMPOP> <VERSION>
<CMPLEASE> ::= "lease("<KEY>")" <CMPOP> <LEASE>
<THEN> ::= <OP>*
<ELSE> ::= <OP>*
<OP> ::= ((see put, get, del etcdctl command syntax)) "\n"
<KEY> ::= (%q formatted string)
<VALUE> ::= (%q formatted string)
<REVISION> ::= "\""[0-9]+"\""
<VERSION> ::= "\""[0-9]+"\""
<LEASE> ::= "\""[0-9]+\""

輸出

SUCCESSetcdがトランザクションを正常に処理した場合、
FAILUREトランザクションは失敗します

二回Enterキーを押す必要と判断された場合、対話型モードでは、次のステップ

etcdctl put key1 1
etcdctl txn -i
# compares:
mod("key1") > "0"

# success requests (get, put, delete):
put key1 "overwrote-key1"

# failure requests (get, put, delete):
put key1 "created-key1"
put key2 "some extra key"

# SUCCESS

# OK
etcdctl get key --prefix

key1
overwrote-key1
key2
some extra key
# OK

非対話型モード

./etcdctl txn <<<'mod("key1") > "0"

put key1 "overwrote-key1"

put key1 "created-key1"
put key2 "some extra key"

'

# FAILURE

# OK

# OK

リマーク

マルチラインTXN指令値を使用する場合、表現しなければならない改行は、Nです。改行文字は、解像度の失敗につながります。

COMPACTION [オプション] <リビジョン>(压缩)

圧縮は予定の改正前にすべてのetcdイベント履歴を破棄します。etcdマルチバージョン同時実行制御モデルので、それは、すべての重要な更新プログラムのイベント履歴を残します。あなたのイベントの歴史を修正する必要のなくなっ、すべて置き換えキーは再利用収納スペースに圧縮することができた場合、バックエンドデータベースをetcd。

物理的 - 物理的にtrueにすべての古いリビジョンを削除するのを待つために圧縮

輸出

圧縮されたバージョンを印刷

etcdctl compaction 1
# compacted revision 1

WATCH [オプション]、[キーまたはプレフィックス] [RANGE_END] [ - ] [EXECコマンドの引数1のARG2 ...](监听)

オプショナル

  • 六角 - ダンプリスト

  • インタラクティブ - オープンインタラクティブセッションモニター

  • 接頭辞 - モニターがプレフィックスキーが含まれています

  • PREV-KV - 変更を取得する前にKVのKV

  • REV - リスニングのバージョン

入力形式

対話型モードのみの入力を受け付けます。

watch [options] <key or prefix>\n

輸出

<イベント>

[

<old_key>

<OLD_VALUE>

]

<キー>

<値>

...

非対話型モード

変更がある場合、キーを聞いて、リスニングを開始するetcdctl時計fooというコマンドを入力し、イベントのキー値をプリントアウト

# bash1
etcdctl watch foo

# bash2
etcdctl put foo bar
# ok

# bash1
# PUT
# foo
# bar

リース<サブコマンド>(リース)

リースは、コマンドのリース管理セットを提供します

リースGRANT <TTL>

新しいTTL値を作成するために(秒)ライブまでの時間を選択したリースGRANTサーバは、以上リース要求に等しいです。

輸出

付与されたリースIDを持つメッセージを印刷します。

etcdctl lease grant 60
# lease 694d6ed6e8fed554 granted with TTL(60s)

リースREVOKE <leaseID>

レンタル撤退は、与えられたリースを破壊し、すべての追加のキーを削除します。

出力

印刷リースが取り消されるのニュース

etcdctl lease revoke 694d6ed6e8fed558
# lease 694d6ed6e8fed558 revoked

リースTimeToLiveの<leaseID> [オプション]

リースTimeToLiveのは、与えられたリースIDのリース情報を取得します。

オプション

  • キー - キーがこのリースに入ります

輸出

印刷リース情報

# 申请一个租约
etcdctl lease grant 500
# lease 694d6ed6e8fed55b granted with TTL(500s)

# 将租约附加到kv上
etcdctl put foo1 bar --lease=694d6ed6e8fed55b
# OK

# 将租约附加到kv上
etcdctl put foo2 bar --lease=694d6ed6e8fed55b
# OK

# 查看租约的信息
etcdctl lease timetolive 694d6ed6e8fed55b
# lease 694d6ed6e8fed55b granted with TTL(500s), remaining(386s)

# 查看租约的信息和签约的keys
etcdctl lease timetolive 2d8257079fa1bc0c --keys
# lease 694d6ed6e8fed55b granted with TTL(500s), remaining(352s), attached keys([foo1 foo2])

# 查看租约的信息,以json输出
etcdctl lease timetolive 2d8257079fa1bc0c --write-out=json
# {"cluster_id":14841639068965178418,"member_id":10276657743932975437,"revision":31,"raft_term":2,"id":7587842816500225371,"ttl":321,"granted-ttl":500,"keys":null}

# 查看租约的信息和签约的keys,以json输出
etcdctl lease timetolive 2d8257079fa1bc0c --write-out=json --keys
# {"cluster_id":14841639068965178418,"member_id":10276657743932975437,"revision":31,"raft_term":2,"id":7587842816500225371,"ttl":289,"granted-ttl":500,"keys":["Zm9vMQ==","Zm9vMg=="]}

# 租约过期
etcdctl lease timetolive 694d6ed6e8fed55b
# lease 694d6ed6e8fed55b already expired

リースLIST

リースLISTは、すべての有効なリースを一覧表示します

輸出

有効なリースリスト

etcdctl lease grant 500
# lease 694d6ed6e8fed560 granted with TTL(500s)

etcdctl lease list
# found 1 leases
# 694d6ed6e8fed560

リースKEEP-ALIVE <leaseID>

リースKEEP-ALIVEは、定期的にそのリースが期限切れにならないことにリフレッシュ

出力

プリントは、各メッセージを送信するためにアクティブのまま、またはリースが期限切れになったことを示すメッセージを印刷します。

# 起一个10秒生存期的租约
etcdctl lease grant 10
# lease 694d6ed6e8fed562 keepalived with TTL(10)
# lease 694d6ed6e8fed562 keepalived with TTL(10)
# lease 694d6ed6e8fed562 keepalived with TTL(10)
# lease 694d6ed6e8fed562 keepalived with TTL(10)
# lease 694d6ed6e8fed562 keepalived with TTL(10)
...

おすすめ

転載: www.cnblogs.com/zhouqi666/p/11996732.html