溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ETCD集群安裝實(shí)驗(yàn)

發(fā)布時(shí)間:2020-09-07 13:53:33 來源:網(wǎng)絡(luò) 閱讀:3037 作者:貓貓maomao 欄目:數(shù)據(jù)庫


目錄


【1、下載二進(jìn)制程序】
【2、安裝etcd集群】
【3、查詢集群狀態(tài)】
【4、存入讀取數(shù)據(jù)】
【5、注意事項(xiàng)】
【6、參考鏈接】


簡(jiǎn)介:
???? Etcd的官網(wǎng)文檔及其在GitHub上的文檔,已經(jīng)非常全了,而且簡(jiǎn)潔明了,無論是二進(jìn)制安裝、還是Docker下運(yùn)行、命令操作,都有詳細(xì)的說明。但直接復(fù)制安裝還是會(huì)出錯(cuò)的,只有親手做一遍,才能發(fā)現(xiàn)有哪些問題。


【1、下載二進(jìn)制程序】

#分別在三臺(tái)主機(jī)上下載并安裝etcd和etcdctl程序
#設(shè)定ETCD的版本

ETCD_VER=v3.3.8

# 設(shè)置下載地址URL
GITHUB_URL=
https://github.com/coreos/etcd/releases/download
DOWNLOAD_URL=${GITHUB_URL}

#清除之前的臨時(shí)文件和目錄,創(chuàng)建新的目錄
rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test

#使用curl下載etcd二進(jìn)制文件
#地址為
https://github.com/coreos/etcd/releases/download/v3.3.8/etcd-v3.3.8-linux-amd64.tar.gz
#解包后刪除壓縮包
curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz

#將etcd 和 etcdctl可執(zhí)行程序移動(dòng)到系統(tǒng)路徑中,方便直接運(yùn)行程序
sudo mv /tmp/etcd-download-test/etcd* /usr/local/bin

#查詢etcd和etcdctl版本,
#檢查是否能正常運(yùn)行程序。

etcd --version
ETCDCTL_API=3 etcdctl version


【2、安裝etcd集群】

#在節(jié)點(diǎn)node1上執(zhí)行

TOKEN=token-01
CLUSTER_STATE=new
NAME_1=node1
NAME_2=node2
NAME_3=node3
HOST_1=192.168.3.161
HOST_2=192.168.3.162
HOST_3=192.168.3.163
CLUSTER=${NAME_1}=
http://${HOST_1}:2380,${NAME_2}=http://${HOST_2}:2380,${NAME_3}=http://${HOST_3}:2380

THIS_NAME=${NAME_1}
THIS_IP=${HOST_1}
etcd --data-dir=data.etcd --name ${THIS_NAME} \
--initial-advertise-peer-urls
http://${THIS_IP}:2380 --listen-peer-urls http://${THIS_IP}:2380 \
--advertise-client-urls
http://${THIS_IP}:2379 --listen-client-urls http://${THIS_IP}:2379 \
--initial-cluster ${CLUSTER} \
--initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}

#此處注意,直接復(fù)制github網(wǎng)站上的代碼,執(zhí)行時(shí)會(huì)報(bào)錯(cuò)
#2018-06-29 16:57:54.048863 E | etcdmain: error verifying flags, '.--initial-advertise-peer-urls' is not a valid flag. See 'etcd --help'.
#
https://github.com/coreos/etcd/blob/master/Documentation/demo.md
#需要清除掉--短橫線之前的空格字符


#在節(jié)點(diǎn)node2上執(zhí)行

TOKEN=token-01
CLUSTER_STATE=new
NAME_1=node1
NAME_2=node2
NAME_3=node3
HOST_1=192.168.3.161
HOST_2=192.168.3.162
HOST_3=192.168.3.163
CLUSTER=${NAME_1}=
http://${HOST_1}:2380,${NAME_2}=http://${HOST_2}:2380,${NAME_3}=http://${HOST_3}:2380

THIS_NAME=${NAME_2}
THIS_IP=${HOST_2}
etcd --data-dir=data.etcd --name ${THIS_NAME} \
--initial-advertise-peer-urls
http://${THIS_IP}:2380 --listen-peer-urls http://${THIS_IP}:2380 \
--advertise-client-urls
http://${THIS_IP}:2379 --listen-client-urls http://${THIS_IP}:2379 \
--initial-cluster ${CLUSTER} \
--initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}


#在節(jié)點(diǎn)node3上執(zhí)行

TOKEN=token-01
CLUSTER_STATE=new
NAME_1=node1
NAME_2=node2
NAME_3=node3
HOST_1=192.168.3.161
HOST_2=192.168.3.162
HOST_3=192.168.3.163
CLUSTER=${NAME_1}=
http://${HOST_1}:2380,${NAME_2}=http://${HOST_2}:2380,${NAME_3}=http://${HOST_3}:2380

THIS_NAME=${NAME_3}
THIS_IP=${HOST_3}
etcd --data-dir=data.etcd --name ${THIS_NAME} \
--initial-advertise-peer-urls
http://${THIS_IP}:2380 --listen-peer-urls http://${THIS_IP}:2380 \
--advertise-client-urls
http://${THIS_IP}:2379 --listen-client-urls http://${THIS_IP}:2379 \
--initial-cluster ${CLUSTER} \
--initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}


【3、查詢集群狀態(tài)】
export ETCDCTL_API=3
HOST_1=192.168.3.161
HOST_2=192.168.3.162
HOST_3=192.168.3.163
ENDPOINTS=$HOST_1:2379,$HOST_2:2379,$HOST_3:2379

etcdctl --endpoints=$ENDPOINTS --write-out=table member list
etcdctl --endpoints=$ENDPOINTS --write-out=table endpoint status
etcdctl --endpoints=$ENDPOINTS --write-out=table endpoint health

圖1查詢集群的狀態(tài)

ETCD集群安裝實(shí)驗(yàn)


【4、存入讀取數(shù)據(jù)】
#在同一網(wǎng)段的其他機(jī)器上,下載并解包etcdctl,
#使用etcdctl命令訪問etcd的集群

export ETCDCTL_API=3
HOST_1=192.168.3.161
HOST_2=192.168.3.162
HOST_3=192.168.3.163
ENDPOINTS=$HOST_1:2379,$HOST_2:2379,$HOST_3:2379

etcdctl --endpoints=$ENDPOINTS put myurl www.sina.com.cn
etcdctl --endpoints=$ENDPOINTS get myurl

圖2使用etcdctl 存入和讀取數(shù)據(jù)

ETCD集群安裝實(shí)驗(yàn)


#或者使用curl 訪問etcd集群,
#通過集群中的任何一個(gè)節(jié)點(diǎn),都可以訪問到數(shù)據(jù)

HOST_1=192.168.3.161
HOST_2=192.168.3.162
HOST_3=192.168.3.163
curl -X PUT
http://${HOST_1}:2379/v2/keys/myurl -d value=www.china.com
curl -X GET
http://${HOST_1}:2379/v2/keys/myurl
curl -X GET http://${HOST_2}:2379/v2/keys/myurl
curl -X GET http://${HOST_3}:2379/v2/keys/myurl
curl http://192.168.3.161:2379/v2/keys

圖3使用curl 存入和讀取數(shù)據(jù)

ETCD集群安裝實(shí)驗(yàn)


【5、注意事項(xiàng)】
1、直接復(fù)制粘貼github上的代碼會(huì)出錯(cuò),需要清除etcd命令中--短橫線之前的空格
2018-06-29 16:57:54.048863 E | etcdmain: error verifying flags, '.--initial-advertise-peer-urls' is not a valid flag. See 'etcd --help'.
2、主機(jī)的時(shí)間應(yīng)該同步,可以安裝NTP服務(wù),否則會(huì)告警:
2018-06-29 18:04:29.328082 W | rafthttp: the clock difference against peer 5d5a6e579c03726b is too high [3.777632896s > 1s]


【6、參考鏈接】
etcd官方網(wǎng)址
https://coreos.com/etcd/docs/latest/demo.html
https://github.com/coreos/etcd/releases/
https://github.com/coreos/etcd/blob/master/Documentation/demo.md

etcd rest API基本操作
https://segmentfault.com/a/1190000005649865

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI