Etcd 使用

Etcd 簡介

etcd 是一個高可用的鍵值存儲系統(tǒng),主要用于共享配置和服務發(fā)現(xiàn)。etcd是由CoreOS開發(fā)并維護的,靈感來自于 ZooKeeper 和 Doozer芒帕,它使用Go語言編寫,并通過Raft一致性算法處理日志復制以保證強一致性丰介。Raft是一個來自Stanford的新的一致性算法背蟆,適用于分布式系統(tǒng)的日志復制,Raft通過選舉的方式來實現(xiàn)一致性哮幢,在Raft中带膀,任何一個節(jié)點都可能成為Leader。Google的容器集群管理系統(tǒng)Kubernetes橙垢、開源PaaS平臺Cloud Foundry和CoreOS的Fleet都廣泛使用了etcd本砰。

etcd 集群的工作原理基于 raft 共識算法 (The Raft Consensus Algorithm)。
etcd 在 0.5.0 版本中重新實現(xiàn)了 raft 算法钢悲,而非像之前那樣依賴于第三方庫 go-raft 点额。
raft 共識算法的優(yōu)點在于可以在高效的解決分布式系統(tǒng)中各個節(jié)點日志內容一致性問題的同時,也使得集群具備一定的容錯能力莺琳。即使集群中出現(xiàn)部分節(jié)點故障还棱、網絡故障等問題,仍可保證其余大多數(shù)節(jié)點正確的步進惭等。甚至當更多的節(jié)點(一般來說超過集群節(jié)點總數(shù)的一半)出現(xiàn)故障而導致集群不可用時珍手,依然可以保證節(jié)點中的數(shù)據不會出現(xiàn)錯誤的結果。

1. Getting etcd

從 Release 頁面(https://github.com/coreos/etcd/releases/ )下載二進制辞做,或者拉最新 master 代碼進行編譯琳要。

$ git clone https://github.com/coreos/etcd.git
$ cd etcd
$ ./build

還有一種辦法,直接獲取一個 vendor 編譯好的 etcd秤茅,如下:

$ go get github.com/coreos/etcd/cmd/etcd

2. Starting etcd

直接執(zhí)行

$ 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课幕,所有的命令都通過這個客戶端去請求。
執(zhí)行下列命令來查看幫助信息:

$ ETCDCTL_API=3 etcdctl help

想要查看某個具體 command 的幫助五垮,比如查看 get 命令的幫助:

$ ETCDCTL_API=3 etcdctl help get

NAME:
        get - Gets the key or a range of keys
USAGE:
        etcdctl get [options] <key> [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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市放仗,隨后出現(xiàn)的幾起案子润绎,更是在濱河造成了極大的恐慌,老刑警劉巖诞挨,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莉撇,死亡現(xiàn)場離奇詭異,居然都是意外死亡亭姥,警方通過查閱死者的電腦和手機稼钩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來达罗,“玉大人坝撑,你說我怎么就攤上這事×溉啵” “怎么了巡李?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扶认。 經常有香客問我侨拦,道長,這世上最難降的妖魔是什么辐宾? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任狱从,我火速辦了婚禮膨蛮,結果婚禮上,老公的妹妹穿的比我還像新娘季研。我一直安慰自己敞葛,他們只是感情好,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布与涡。 她就那樣靜靜地躺著惹谐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪驼卖。 梳的紋絲不亂的頭發(fā)上氨肌,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天,我揣著相機與錄音酌畜,去河邊找鬼怎囚。 笑死,一個胖子當著我的面吹牛檩奠,可吹牛的內容都是我干的桩了。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼埠戳,長吁一口氣:“原來是場噩夢啊……” “哼井誉!你這毒婦竟也來了?” 一聲冷哼從身側響起整胃,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤颗圣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后屁使,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體在岂,經...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年蛮寂,在試婚紗的時候發(fā)現(xiàn)自己被綠了蔽午。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡酬蹋,死狀恐怖及老,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情范抓,我是刑警寧澤骄恶,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站匕垫,受9級特大地震影響僧鲁,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一寞秃、第九天 我趴在偏房一處隱蔽的房頂上張望斟叼。 院中可真熱鬧,春花似錦蜕该、人聲如沸犁柜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至扒腕,卻和暖如春绢淀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瘾腰。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工皆的, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蹋盆。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓费薄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親栖雾。 傳聞我的和親對象是個殘疾皇子楞抡,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內容