徹底搞懂 etcd 系列文章(三):etcd 集群運維部署

0 專輯概述

etcd 是云原生架構(gòu)中重要的基礎(chǔ)組件鼎俘,由 CNCF 孵化托管款青。etcd 在微服務(wù)和 Kubernates 集群中不僅可以作為服務(wù)注冊與發(fā)現(xiàn)似舵,還可以作為 key-value 存儲的中間件脚猾。

《徹底搞懂 etcd 系列文章》將會從 etcd 的基本功能實踐、API 接口砚哗、實現(xiàn)原理龙助、源碼分析,以及實現(xiàn)中的踩坑經(jīng)驗等幾方面具體展開介紹 etcd蛛芥。預計會有 20 篇左右的文章提鸟,筆者將會每周持續(xù)更新,歡迎關(guān)注常空。

1 etcd 集群部署

在生產(chǎn)環(huán)境中沽一,為了整個集群的高可用,etcd 正常都會集群部署漓糙,避免單點故障铣缠。本節(jié)將會介紹如何進行 etcd 集群部署。引導 etcd 集群的啟動有以下三種機制:

  • 靜態(tài)
  • etcd 動態(tài)發(fā)現(xiàn)
  • DNS 發(fā)現(xiàn)

靜態(tài)啟動 etcd 集群要求每個成員都知道集群中的另一個成員昆禽。 在許多情況下蝗蛙,群集成員的 IP 可能會提前未知。在這些情況下醉鳖,可以在發(fā)現(xiàn)服務(wù)的幫助下引導 etcd 群集捡硅。

下面我們將會分別介紹這幾種方式。

2 靜態(tài)方式啟動 etcd 集群

單機安裝

如果想要在一臺機器上實踐 etcd 集群的搭建盗棵,可以通過 goreman 工具壮韭。

goreman 是一個 Go 語言編寫的多進程管理工具,是對 Ruby 下廣泛使用的 foreman 的重寫(foreman 原作者也實現(xiàn)了一個 Go 版本:forego纹因,不過沒有 goreman 好用)喷屋。

我們需要確認 Go 安裝環(huán)境,然后直接執(zhí)行:

go get github.com/mattn/goreman

編譯后的文件放在 $GOPATH/bin 中瞭恰,$GOPATH/bin目錄已經(jīng)添加到了系統(tǒng) $PATH 中屯曹,所以我們可以方便執(zhí)行命令 goreman 命令。下面就是編寫 Procfile 腳本,我們啟動三個 etcd恶耽,具體對應(yīng)如下:

HostName ip 客戶端交互端口 peer 通信端口
infra1 127.0.0.1 12379 12380
infra2 127.0.0.1 22379 22380
infra3 127.0.0.1 32379 32380

Procfile 腳本如下:

etcd1: etcd --name infra1 --listen-client-urls http://127.0.0.1:12379 --advertise-client-urls http://127.0.0.1:12379 --listen-peer-urls http://127.0.0.1:12380 --initial-advertise-peer-urls http://127.0.0.1:12380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380' --initial-cluster-state new --enable-pprof --logger=zap --log-outputs=stderr
etcd2: etcd --name infra2 --listen-client-urls http://127.0.0.1:22379 --advertise-client-urls http://127.0.0.1:22379 --listen-peer-urls http://127.0.0.1:22380 --initial-advertise-peer-urls http://127.0.0.1:22380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380' --initial-cluster-state new --enable-pprof --logger=zap --log-outputs=stderr
etcd3: etcd --name infra3 --listen-client-urls http://127.0.0.1:32379 --advertise-client-urls http://127.0.0.1:32379 --listen-peer-urls http://127.0.0.1:32380 --initial-advertise-peer-urls http://127.0.0.1:32380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380' --initial-cluster-state new --enable-pprof --logger=zap --log-outputs=stderr

配置項說明:

  • --name:etcd集群中的節(jié)點名密任,這里可以隨意,可區(qū)分且不重復就行
  • --listen-peer-urls:監(jiān)聽的用于節(jié)點之間通信的url偷俭,可監(jiān)聽多個浪讳,集群內(nèi)部將通過這些url進行數(shù)據(jù)交互(如選舉,數(shù)據(jù)同步等)
  • --initial-advertise-peer-urls:建議用于節(jié)點之間通信的url社搅,節(jié)點間將以該值進行通信驻债。
  • --listen-client-urls:監(jiān)聽的用于客戶端通信的url,同樣可以監(jiān)聽多個形葬。
  • --advertise-client-urls:建議使用的客戶端通信 url,該值用于 etcd 代理或 etcd 成員與 etcd 節(jié)點通信暮的。
  • --initial-cluster-token: etcd-cluster-1笙以,節(jié)點的 token 值,設(shè)置該值后集群將生成唯一 id冻辩,并為每個節(jié)點也生成唯一 id猖腕,當使用相同配置文件再啟動一個集群時,只要該 token 值不一樣恨闪,etcd 集群就不會相互影響倘感。
  • --initial-cluster:也就是集群中所有的 initial-advertise-peer-urls 的合集。
  • --initial-cluster-state:new咙咽,新建集群的標志

注意上面的腳本老玛,etcd 命令執(zhí)行時需要根據(jù)本地實際的安裝地址進行配置。下面我們啟動 etcd 集群钧敞。

goreman -f /opt/procfile start

使用如上的命令啟動啟動 etcd 集群蜡豹,啟動完成之后查看集群內(nèi)的成員。

$ etcdctl --endpoints=http://localhost:22379  member list

8211f1d0f64f3269, started, infra1, http://127.0.0.1:12380, http://127.0.0.1:12379, false
91bc3c398fb3c146, started, infra2, http://127.0.0.1:22380, http://127.0.0.1:22379, false
fd422379fda50e48, started, infra3, http://127.0.0.1:32380, http://127.0.0.1:32379, false

我們在單機搭建的偽集群成功溉苛,需要注意的是在集群啟動時镜廉,我們是通過靜態(tài)的方式指定集群的成員,在實際環(huán)境中愚战,集群成員的 ip 可能不會提前知道娇唯。這時候就需要采用動態(tài)發(fā)現(xiàn)的機制。

docker 啟動集群

etcd 使用 gcr.io/etcd-development/etcd 作為容器的主要加速器寂玲, quay.io/coreos/etcd 作為輔助的加速器塔插。可惜這兩個加速器我們都沒法訪問敢茁,如果下載不了佑淀,可以使用筆者提供的地址:

docker pull bitnami/etcd:3.4.7

然后將拉取的鏡像重新 tag:

docker image tag bitnami/etcd:3.4.7 quay.io/coreos/etcd:3.4.7

鏡像設(shè)置好之后,我們啟動 3 個節(jié)點的 etcd 集群,腳本命令如下:

REGISTRY=quay.io/coreos/etcd

# For each machine
ETCD_VERSION=3.4.7
TOKEN=my-etcd-token
CLUSTER_STATE=new
NAME_1=etcd-node-0
NAME_2=etcd-node-1
NAME_3=etcd-node-2
HOST_1= 192.168.202.128
HOST_2= 192.168.202.129
HOST_3= 192.168.202.130
CLUSTER=${NAME_1}=http://${HOST_1}:2380,${NAME_2}=http://${HOST_2}:2380,${NAME_3}=http://${HOST_3}:2380
DATA_DIR=/var/lib/etcd

# For node 1
THIS_NAME=${NAME_1}
THIS_IP=${HOST_1}
docker run \
  -p 2379:2379 \
  -p 2380:2380 \
  --volume=${DATA_DIR}:/etcd-data \
  --name etcd ${REGISTRY}:${ETCD_VERSION} \
  /usr/local/bin/etcd \
  --data-dir=/etcd-data --name ${THIS_NAME} \
  --initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://0.0.0.0:2380 \
  --advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://0.0.0.0:2379 \
  --initial-cluster ${CLUSTER} \
  --initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}

# For node 2
THIS_NAME=${NAME_2}
THIS_IP=${HOST_2}
docker run \
  -p 2379:2379 \
  -p 2380:2380 \
  --volume=${DATA_DIR}:/etcd-data \
  --name etcd ${REGISTRY}:${ETCD_VERSION} \
  /usr/local/bin/etcd \
  --data-dir=/etcd-data --name ${THIS_NAME} \
  --initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://0.0.0.0:2380 \
  --advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://0.0.0.0:2379 \
  --initial-cluster ${CLUSTER} \
  --initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}

# For node 3
THIS_NAME=${NAME_3}
THIS_IP=${HOST_3}
docker run \
  -p 2379:2379 \
  -p 2380:2380 \
  --volume=${DATA_DIR}:/etcd-data \
  --name etcd ${REGISTRY}:${ETCD_VERSION} \
  /usr/local/bin/etcd \
  --data-dir=/etcd-data --name ${THIS_NAME} \
  --initial-advertise-peer-urls http://${THIS_IP}:2380 --listen-peer-urls http://0.0.0.0:2380 \
  --advertise-client-urls http://${THIS_IP}:2379 --listen-client-urls http://0.0.0.0:2379 \
  --initial-cluster ${CLUSTER} \
  --initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}

注意伸刃,上面的腳本是部署在三臺機器上面谎砾,每臺機器執(zhí)行對應(yīng)的腳本即可。在運行時可以指定 API 版本:

docker exec etcd /bin/sh -c "export ETCDCTL_API=3 && /usr/local/bin/etcdctl put foo bar"

docker 的安裝方式比較簡單捧颅,讀者根據(jù)需要可以定制一些配置景图。

3 動態(tài)發(fā)現(xiàn)啟動 etcd 集群

如前面所述,在實際環(huán)境中碉哑,集群成員的 ip 可能不會提前知道挚币。在這種情況下,需要使用自動發(fā)現(xiàn)來引導 etcd 集群扣典,而不是指定靜態(tài)配置妆毕,這個過程被稱為發(fā)現(xiàn)。我們啟動三個 etcd贮尖,具體對應(yīng)如下:

HostName ip 客戶端交互端口 peer 通信端口
etcd1 192.168.202.128 2379 2380
etcd2 192.168.202.129 2379 2380
etcd3 192.168.202.130 2379 2380

協(xié)議的原理

Discovery service protocol 幫助新的 etcd 成員使用共享 URL 在集群引導階段發(fā)現(xiàn)所有其他成員笛粘。

該協(xié)議使用新的發(fā)現(xiàn)令牌來引導一個唯一的 etcd 集群。一個發(fā)現(xiàn)令牌只能代表一個 etcd 集群湿硝。只要此令牌上的發(fā)現(xiàn)協(xié)議啟動薪前,即使它中途失敗,也不能用于引導另一個 etcd 集群关斜。

提示:Discovery service protocol 僅用于集群引導階段示括,不能用于運行時重新配置或集群監(jiān)視。

Discovery protocol 使用內(nèi)部 etcd 集群來協(xié)調(diào)新集群的引導程序痢畜。首先垛膝,所有新成員都與發(fā)現(xiàn)服務(wù)交互,并幫助生成預期的成員列表裁着。之后繁涂,每個新成員使用此列表引導其服務(wù)器,該列表執(zhí)行與 --initial-cluster 標志相同的功能扔罪,即設(shè)置所有集群的成員信息。

獲取 discovery 的 token

生成將標識新集群的唯一令牌桶雀。 在以下步驟中矿酵,它將用作發(fā)現(xiàn)鍵空間中的唯一前綴。 一種簡單的方法是使用uuidgen:

UUID=$(uuidgen)

指定集群的大小

獲取令牌時矗积,必須指定群集大小全肮。 發(fā)現(xiàn)服務(wù)使用該大小來了解何時發(fā)現(xiàn)了最初將組成集群的所有成員。

curl -X PUT http://10.0.10.10:2379/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83/_config/size -d value=3

我們需要把該 url 地址 http://10.0.10.10:2379/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83 作為 --discovery 參數(shù)來啟動 etcd棘捣。

節(jié)點會自動使用 http://10.0.10.10:2379/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83 目錄進行 etcd 的注冊和發(fā)現(xiàn)服務(wù)辜腺。

公共發(fā)現(xiàn)服務(wù)

當我們本地沒有可用的 etcd 集群,etcd 官網(wǎng)提供了一個可以公網(wǎng)訪問的 etcd 存儲地址。我們可以通過如下命令得到 etcd 服務(wù)的目錄评疗,并把它作為 --discovery 參數(shù)使用测砂。

公共發(fā)現(xiàn)服務(wù) discovery.etcd.io 以相同的方式工作,但是有一層修飾百匆,可以提取丑陋的 URL砌些,自動生成 UUID,并提供針對過多請求的保護加匈。公共發(fā)現(xiàn)服務(wù)在其上仍然使用 etcd 群集作為數(shù)據(jù)存儲存璃。

$ curl http://discovery.etcd.io/new?size=3

http://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de

以動態(tài)發(fā)現(xiàn)方式啟動集群

etcd 發(fā)現(xiàn)模式下,啟動 etcd 的命令如下:

# etcd1 啟動
$ /opt/etcd/bin/etcd  --name etcd1 --initial-advertise-peer-urls http://192.168.202.128:2380 \
  --listen-peer-urls http://192.168.202.128:2380 \
  --data-dir /opt/etcd/data \
  --listen-client-urls http://192.168.202.128:2379,http://127.0.0.1:2379 \
  --advertise-client-urls http://192.168.202.128:2379 \
  --discovery https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de

# etcd2 啟動
 /opt/etcd/bin/etcd  --name etcd2 --initial-advertise-peer-urls http://192.168.202.129:2380 \
  --listen-peer-urls http://192.168.202.129:2380 \
  --data-dir /opt/etcd/data \
  --listen-client-urls http://192.168.202.129:2379,http://127.0.0.1:2379 \
  --advertise-client-urls http://192.168.202.129:2379 \
  --discovery https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de

# etcd3 啟動
 /opt/etcd/bin/etcd  --name etcd3 --initial-advertise-peer-urls http://192.168.202.130:2380 \
    --listen-peer-urls http://192.168.202.130:2380 \
    --data-dir /opt/etcd/data \
    --listen-client-urls http://192.168.202.130:2379,http://127.0.0.1:2379 \
    --advertise-client-urls http://192.168.202.130:2379 \
    --discovery https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de

需要注意的是雕拼,在我們完成了集群的初始化后纵东,這些信息就失去了作用。當需要增加節(jié)點時啥寇,需要使用 etcdctl 進行操作篮迎。為了安全,每次啟動新 etcd 集群時示姿,都使用新的 discovery token 進行注冊。另外逊笆,如果初始化時啟動的節(jié)點超過了指定的數(shù)量栈戳,多余的節(jié)點會自動轉(zhuǎn)化為 Proxy 模式的 etcd。

結(jié)果驗證

集群啟動好之后难裆,進行驗證子檀,我們看一下集群的成員:

$ /opt/etcd/bin/etcdctl member list
# 結(jié)果如下
    40e2ac06ca1674a7, started, etcd3, http://192.168.202.130:2380, http://192.168.202.130:2379, false
    c532c5cedfe84d3c, started, etcd1, http://192.168.202.128:2380, http://192.168.202.128:2379, false
    db75d3022049742a, started, etcd2, http://192.168.202.129:2380, http://192.168.202.129:2379, false

結(jié)果符合預期,再看下節(jié)點的健康狀態(tài):

$ /opt/etcd/bin/etcdctl  --endpoints="http://192.168.202.128:2379,http://192.168.202.129:2379,http://192.168.202.130:2379"  endpoint  health
# 結(jié)果如下
    http://192.168.202.128:2379 is healthy: successfully committed proposal: took = 3.157068ms
    http://192.168.202.130:2379 is healthy: successfully committed proposal: took = 3.300984ms
    http://192.168.202.129:2379 is healthy: successfully committed proposal: took = 3.263923ms
image

可以看到乃戈,集群中的三個節(jié)點都是健康的正常狀態(tài)褂痰。以動態(tài)發(fā)現(xiàn)方式啟動集群成功。

4 DNS自發(fā)現(xiàn)模式

etcd 還支持使用 DNS SRV 記錄進行啟動症虑。實際上是利用 DNS 的 SRV 記錄不斷輪訓查詢實現(xiàn)缩歪。DNS SRV 是 DNS 數(shù)據(jù)庫中支持的一種資源記錄的類型,它記錄了計算機與所提供服務(wù)信息的對應(yīng)關(guān)系谍憔。

4.1 Dnsmasq 安裝

這里使用 Dnsmasq 創(chuàng)建 DNS 服務(wù)匪蝙。Dnsmasq 提供 DNS 緩存和 DHCP 服務(wù)、Tftp 服務(wù)功能习贫。作為域名解析服務(wù)器逛球,Dnsmasq 可以通過緩存 DNS 請求來提高對訪問過的網(wǎng)址的連接速度。Dnsmasq 輕量且易配置苫昌,適用于個人用戶或少于 50 臺主機的網(wǎng)絡(luò)颤绕。此外它還自帶了一個 PXE 服務(wù)器。

當接受到一個 DNS 請求時,Dnsmasq 首先會查找 /etc/hosts 這個文件奥务,然后查找 /etc/resolv.conf 中定義的外部 DNS物独。配置 Dnsmasq 為 DNS 緩存服務(wù)器,同時在 /etc/hosts 文件中加入本地內(nèi)網(wǎng)解析汗洒,這樣使得內(nèi)網(wǎng)機器查詢時就會優(yōu)先查詢 hosts 文件议纯,這就等于將 /etc/hosts 共享給全內(nèi)網(wǎng)機器使用,從而解決內(nèi)網(wǎng)機器互相識別的問題溢谤。相比逐臺機器編輯 hosts 文件或者添加 Bind DNS 記錄瞻凤,可以只編輯一個 hosts 文件。

基于筆者使用的 Centos 7 的主機世杀,首先安裝 Dnsmasq:

yum install dnsmasq

安裝好之后阀参,進行配置,所有的配置都在一個文件中完成 /etc/dnsmasq.conf瞻坝。我們也可以在 /etc/dnsmasq.d 中自己寫任意名字的配置文件蛛壳。

配置上游服務(wù)器地址

resolv-file 配置 Dnsmasq 額外的上游的 DNS 服務(wù)器,如果不開啟就使用 Linux 主機默認的 /etc/resolv.conf 里的 nameserver所刀。

$ vim /etc/dnsmasq.conf

# 增加如下的內(nèi)容:
resolv-file=/etc/resolv.dnsmasq.conf
srv-host=_etcd-server._tcp.blueskykong.com,etcd1.blueskykong.com,2380,0,100
srv-host=_etcd-server._tcp.blueskykong.com,etcd2.blueskykong.com,2380,0,100
srv-host=_etcd-server._tcp.blueskykong.com,etcd3.blueskykong.com,2380,0,100

在 dnsmasq.conf 中相應(yīng)的域名記錄衙荐,配置了我們所涉及的三臺服務(wù)器,分別對應(yīng) etcd1浮创,etcd2忧吟,etcd3。

在指定文件中增加轉(zhuǎn)發(fā) DNS 的地址
$ vim /etc/resolv.dnsmasq.conf

nameserver 8.8.8.8
nameserver 8.8.4.4

這兩個免費的 DNS服務(wù)斩披,大家應(yīng)該不陌生溜族。讀者可以根據(jù)本地實際網(wǎng)絡(luò)進行配置。

本地啟用 Dnsmasq 解析
$ vim /etc/resolv.conf

nameserver 127.0.0.1

將 Dnsmasq 解析配置到本地垦沉,這很好理解煌抒。

添加解析記錄

分別為各個域名配置相關(guān)的 A 記錄指向 etcd 核心節(jié)點對應(yīng)的機器 IP。添加解析記錄有三種方式:使用系統(tǒng)默認 hosts厕倍、使用自定義 hosts 文件寡壮、使用自定義 conf。這里我們使用比較簡單的第一種方式绑青。

$ vim /etc/hosts

# 增加如下的內(nèi)容解析
192.168.202.128 etcd1.blueskykong.com
192.168.202.129 etcd2.blueskykong.com
192.168.202.130 etcd3.blueskykong.com

啟動服務(wù)

service dnsmasq start

啟動好之后诬像,我們進行驗證:

  • DNS 服務(wù)器上 SRV 記錄查詢,查詢到的結(jié)果如下:

    $ dig @192.168.202.128 +noall +answer SRV _etcd-server._tcp.blueskykong.com
    
    _etcd-server._tcp.blueskykong.com. 0 IN SRV     0 100 2380 etcd2.blueskykong.com.
    _etcd-server._tcp.blueskykong.com. 0 IN SRV     0 100 2380 etcd1.blueskykong.com.
    _etcd-server._tcp.blueskykong.com. 0 IN SRV     0 100 2380 etcd3.blueskykong.com.
    
  • 使查詢域名解析結(jié)果

    $ dig @192.168.202.128 +noall +answer etcd1.blueskykong.com etcd2.blueskykong.com etcd3.blueskykong.com
    
    etcd1.blueskykong.com.  0       IN      A       192.168.202.128
    etcd2.blueskykong.com.  0       IN      A       192.168.202.129
    etcd3.blueskykong.com.  0       IN      A       192.168.202.130
    

至此闸婴,我們已成功安裝好 Dnsmasq坏挠。下面我們基于 DNS 發(fā)現(xiàn)啟動 etcd 集群。

啟動集群

做好了上述兩步 DNS 的配置邪乍,就可以使用 DNS 啟動 etcd 集群了降狠。需要刪除ETCD_INITIAL_CLUSTER 配置(用于靜態(tài)服務(wù)發(fā)現(xiàn))对竣,并指定 DNS SRV 域名(ETCD_DISCOVERY_SRV)。配置 DNS 解析的 url 參數(shù)為 -discovery-srv榜配,其中 etcd1 節(jié)點地啟動命令如下:

$ /opt/etcd/bin/etcd   --name etcd1 \
--discovery-srv blueskykong.com \
--initial-advertise-peer-urls http://etcd1.blueskykong.com:2380 \
--initial-cluster-token etcd-cluster-1 \
--data-dir /opt/etcd/data \
--initial-cluster-state new \
--advertise-client-urls http://etcd1.blueskykong.com:2379 \
--listen-client-urls http://0.0.0.0:2379 \
--listen-peer-urls http://0.0.0.0:2380

etcd 群集成員可以使用域名或 IP 地址進行廣播否纬,啟動的過程將解析 DNS 記錄。--initial-advertise-peer-urls 中的解析地址必須與 SRV 目標中的解析地址匹配蛋褥。etcd 成員讀取解析的地址临燃,以查找其是否屬于 SRV 記錄中定義的群集。

我們驗證基于 DNS 發(fā)現(xiàn)啟動集群的正確性烙心,查看集群的成員列表:

$ /opt/etcd/bin/etcdctl member list

# 結(jié)果如下:
40e2ac06ca1674a7, started, etcd3, http://192.168.202.130:2380, http://etcd3.blueskykong.com:2379, false
c532c5cedfe84d3c, started, etcd1, http://192.168.202.128:2380, http://etcd1.blueskykong.com:2379, false
db75d3022049742a, started, etcd2, http://192.168.202.129:2380, http://etcd2.blueskykong.com:2379, false

可以看到膜廊,結(jié)果輸出 etcd 集群有三個成員,符合預期淫茵。下面我們使用 IP 地址的方式爪瓜,繼續(xù)驗證集群節(jié)點的狀態(tài)。

$ /opt/etcd/bin/etcdctl  --endpoints="http://192.168.202.128:2379,http://192.168.202.129:2379,http://192.168.202.130:2379"  endpoint  health

# 結(jié)果如下:
http://192.168.202.129:2379 is healthy: successfully committed proposal: took = 2.933555ms
http://192.168.202.128:2379 is healthy: successfully committed proposal: took = 7.252799ms
http://192.168.202.130:2379 is healthy: successfully committed proposal: took = 7.415843ms

更多的 etcd 集群操作匙瘪,讀者可以自行嘗試铆铆,筆者不在此一一展開。

5 小結(jié)

本文在上一篇文章單機安裝 etcd 的基礎(chǔ)上進行了補充丹喻,主要介紹了 etcd 集群的多種安裝啟動方式:靜態(tài)單體薄货,靜態(tài) docker,動態(tài)發(fā)現(xiàn)以及 DNS 發(fā)現(xiàn)的啟動方式碍论。這么多的安裝姿勢菲驴,都是為了我們實際的使用,下一篇我們將具體進入 etcdctl 的使用講解骑冗。

訂閱最新文章,歡迎關(guān)注我的公眾號

image

推薦閱讀

  1. etcd 與 Zookeeper先煎、Consul 等其它 k-v 組件的對比
  2. 徹底搞懂 etcd 系列文章(一):初識 etcd
  3. 徹底搞懂 etcd 系列文章(二):etcd 的多種安裝姿勢

參考

etcd docs

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贼涩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子薯蝎,更是在濱河造成了極大的恐慌遥倦,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件占锯,死亡現(xiàn)場離奇詭異袒哥,居然都是意外死亡,警方通過查閱死者的電腦和手機消略,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門堡称,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人艺演,你說我怎么就攤上這事却紧⊥╇” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵晓殊,是天一觀的道長断凶。 經(jīng)常有香客問我,道長巫俺,這世上最難降的妖魔是什么认烁? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮介汹,結(jié)果婚禮上却嗡,老公的妹妹穿的比我還像新娘。我一直安慰自己痴昧,他們只是感情好稽穆,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赶撰,像睡著了一般舌镶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上豪娜,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天餐胀,我揣著相機與錄音,去河邊找鬼瘤载。 笑死否灾,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的鸣奔。 我是一名探鬼主播墨技,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挎狸!你這毒婦竟也來了扣汪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤锨匆,失蹤者是張志新(化名)和其女友劉穎崭别,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恐锣,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡茅主,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了土榴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诀姚。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖玷禽,靈堂內(nèi)的尸體忽然破棺而出学搜,到底是詐尸還是另有隱情娃善,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布瑞佩,位于F島的核電站聚磺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏炬丸。R本人自食惡果不足惜瘫寝,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望稠炬。 院中可真熱鬧焕阿,春花似錦、人聲如沸首启。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毅桃。三九已至褒纲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钥飞,已是汗流浹背莺掠。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留读宙,地道東北人彻秆。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像结闸,于是被迫代替她去往敵國和親唇兑。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355