etcd常用運維命令

https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/

1. 常用命令

#查看集群member情況
etcdctl --endpoints=${exist-advertise-peer-urls} member list 
#動態(tài)擴容
etcdctl --endpoints=${exist-advertise-peer-urls} member add infra4 --peer-urls=${new-advertise-peer-urls}
#運行時縮容
etcdctl --endpoints=${exist-advertise-peer-urls} member remove ${cluster_id}

2. 重要啟動參數(shù)說明

2.1. --initial-cluster-state

Initial cluster state ("new" or "existing"). Set to new for all members present during initial static or DNS bootstrapping. 
If this option is set to existing, etcd will attempt to join the existing cluster. If the wrong value is set, 
etcd will attempt to start but fail safely.
default: "new"
env variable: ETCD_INITIAL_CLUSTER_STATE
  • 設(shè)置成existing帅涂,必須確保在啟動時候其他member是存活的(peer端口)钝域,否則啟動失敗。用在擴容新實例的啟動。
  • 設(shè)置成new季惩,用在cluster已知member的啟動。

3. 常見操作

3.1. 如何縮容?

使用member remove命令進行縮容

3.2. 如何擴容?

  • 使用member add命令進行擴容液肌。控制臺會輸出如下內(nèi)容(新節(jié)點加入集群的重要啟動參數(shù)):
#新節(jié)點加入集群的重要啟動參數(shù)鸥滨,按照參數(shù)去啟動:
ETCD_NAME="infra1"
ETCD_INITIAL_CLUSTER="infra3=http://127.0.0.1:32380,infra2=http://127.0.0.1:22380,infra1=http://127.0.0.1:12380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://127.0.0.1:12380"
ETCD_INITIAL_CLUSTER_STATE="existing"
  • 啟動新實例的參數(shù):--name嗦哆、--initial-advertise-peer-urls、--initial-cluster-state婿滓、--initial-cluster必須和控制臺輸出保持一致老速,否則啟動失敗。示例:
etcd \
--name ${ETCD_NAME} \
--listen-client-urls http://127.0.0.1:42379 \
--advertise-client-urls http://127.0.0.1:42379 \
--listen-peer-urls http://127.0.0.1:42380 \
--initial-advertise-peer-urls ${ETCD_INITIAL_ADVERTISE_PEER_URLS} \
--initial-cluster-state ${ETCD_INITIAL_CLUSTER_STATE} \
--initial-cluster ${ETCD_INITIAL_CLUSTER}

3.3. 數(shù)據(jù)目錄丟失或被誤刪除凸主,節(jié)點啟動失敗或者加入集群報錯橘券?

3.3.1. 操作步驟

member信息會持久化到磁盤上,數(shù)據(jù)丟失的節(jié)點必須以新的member身份加入,必須嚴格按照如下操作:

  1. 移除failure節(jié)點:使用member remove命令剔除錯誤節(jié)點旁舰。保證當(dāng)前集群的健康狀況锋华。
  2. 徹底清理數(shù)據(jù)目錄:錯誤節(jié)點必須停止,然后刪除data dir鬓梅。保證member信息被清理干凈供置。
  3. 集群擴容:使用member add命令添加步驟1的錯誤節(jié)點谨湘。參考3.2绽快。
  4. 重新啟動:步驟1的錯誤節(jié)點進行啟動,參考3.2

3.3.2. 操作步驟不正確的各種常見錯誤日志

  • 數(shù)據(jù)丟失后紧阔,啟動參數(shù)使用 --initial-cluster-state="new"坊罢,錯誤日志如下,提示:member ddd67b312462fd7b has already been bootstrapped
2019-07-09 00:24:55.880988 I | etcdmain: etcd Version: 3.3.10
2019-07-09 00:24:55.881077 I | etcdmain: Git SHA: 27fc7e2
2019-07-09 00:24:55.881082 I | etcdmain: Go Version: go1.10.4
2019-07-09 00:24:55.881089 I | etcdmain: Go OS/Arch: darwin/amd64
2019-07-09 00:24:55.881093 I | etcdmain: setting maximum number of CPUs to 8, total number of available CPUs is 8
2019-07-09 00:24:55.881099 N | etcdmain: failed to detect default host (default host not supported on darwin_amd64)
2019-07-09 00:24:55.881106 W | etcdmain: no data-dir provided, using default data-dir ./infra1.etcd
2019-07-09 00:24:55.881236 I | embed: listening for peers on http://127.0.0.1:12380
2019-07-09 00:24:55.881254 I | embed: pprof is enabled under /debug/pprof
2019-07-09 00:24:55.881299 I | embed: listening for client requests on 127.0.0.1:2380
2019-07-09 00:24:55.883626 C | etcdmain: member ddd67b312462fd7b has already been bootstrapped
  • 數(shù)據(jù)丟失后擅耽,啟動參數(shù)使用 --initial-cluster-state="existing"活孩,錯誤日志如下,提示:Was the raft log corrupted, truncated, or lost?
tocommit(10) is out of range [lastIndex(0)]. Was the raft log corrupted, truncated, or lost?
panic: tocommit(10) is out of range [lastIndex(0)]. Was the raft log corrupted, truncated, or lost?
 
goroutine 135 [running]:
github.com/coreos/etcd/cmd/vendor/github.com/coreos/pkg/capnslog.(*PackageLogger).Panicf(0xc42000a660, 0x1c0cad8, 0x5d, 0xc42000a160, 0x2, 0x2)
    /tmp/etcd-release-3.3.10/etcd/release/etcd/gopath/src/github.com/coreos/etcd/cmd/vendor/github.com/coreos/pkg/capnslog/pkg_logger.go:75 +0x162
github.com/coreos/etcd/cmd/vendor/github.com/coreos/etcd/raft.(*raftLog).commitTo(0xc420277500, 0xa)
    /tmp/etcd-release-3.3.10/etcd/release/etcd/gopath/src/github.com/coreos/etcd/cmd/vendor/github.com/coreos/etcd/raft/log.go:191 +0x15c
github.com/coreos/etcd/cmd/vendor/github.com/coreos/etcd/raft.(*raft).handleHeartbeat(0xc420244300, 0x8, 0xddd67b312462fd7b, 0x9e737febb6b99eee, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
    /tmp/etcd-release-3.3.10/etcd/release/etcd/gopath/src/github.com/coreos/etcd/cmd/vendor/github.com/coreos/etcd/raft/raft.go:1194 +0x54
github.com/coreos/etcd/cmd/vendor/github.com/coreos/etcd/raft.stepFollower(0xc420244300, 0x8, 0xddd67b312462fd7b, 0x9e737febb6b99eee, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
    /tmp/etcd-release-3.3.10/etcd/release/etcd/gopath/src/github.com/coreos/etcd/cmd/vendor/github.com/coreos/etcd/raft/raft.go:1140 +0x3ff
github.com/coreos/etcd/cmd/vendor/github.com/coreos/etcd/raft.(*raft).Step(0xc420244300, 0x8, 0xddd67b312462fd7b, 0x9e737febb6b99eee, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
    /tmp/etcd-release-3.3.10/etcd/release/etcd/gopath/src/github.com/coreos/etcd/cmd/vendor/github.com/coreos/etcd/raft/raft.go:868 +0x12f1
github.com/coreos/etcd/cmd/vendor/github.com/coreos/etcd/raft.(*node).run(0xc4201df320, 0xc420244300)
    /tmp/etcd-release-3.3.10/etcd/release/etcd/gopath/src/github.com/coreos/etcd/cmd/vendor/github.com/coreos/etcd/raft/node.go:323 +0x1059
  • 3.3.1步驟中1和3正確執(zhí)行乖仇,而遺漏步驟2并且中間有錯誤啟動憾儒,使得磁盤留有錯誤member信息。錯誤日志如下乃沙,提示起趾。
2019-07-09 01:24:19.311630 E | rafthttp: failed to find member 9e737febb6b99eee in cluster 73841b4a9097c907
2019-07-09 01:24:19.311710 E | rafthttp: failed to find member 628170c800dbcee in cluster 73841b4a9097c907
2019-07-09 01:24:19.410573 E | rafthttp: failed to find member 9e737febb6b99eee in cluster 73841b4a9097c907
2019-07-09 01:24:19.410616 E | rafthttp: failed to find member 628170c800dbcee in cluster 73841b4a9097c907
2019-07-09 01:24:19.410678 E | rafthttp: failed to find member 9e737febb6b99eee in cluster 73841b4a9097c907
2019-07-09 01:24:19.410767 E | rafthttp: failed to find member 628170c800dbcee in cluster 73841b4a9097c907
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市警儒,隨后出現(xiàn)的幾起案子训裆,更是在濱河造成了極大的恐慌,老刑警劉巖蜀铲,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件边琉,死亡現(xiàn)場離奇詭異,居然都是意外死亡记劝,警方通過查閱死者的電腦和手機变姨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來厌丑,“玉大人定欧,你說我怎么就攤上這事√阒裕” “怎么了忧额?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長愧口。 經(jīng)常有香客問我睦番,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任托嚣,我火速辦了婚禮巩检,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘示启。我一直安慰自己兢哭,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布夫嗓。 她就那樣靜靜地躺著迟螺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪舍咖。 梳的紋絲不亂的頭發(fā)上矩父,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天,我揣著相機與錄音排霉,去河邊找鬼窍株。 笑死,一個胖子當(dāng)著我的面吹牛攻柠,可吹牛的內(nèi)容都是我干的球订。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼瑰钮,長吁一口氣:“原來是場噩夢啊……” “哼冒滩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起飞涂,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤旦部,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后较店,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體士八,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年梁呈,在試婚紗的時候發(fā)現(xiàn)自己被綠了婚度。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡官卡,死狀恐怖蝗茁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寻咒,我是刑警寧澤哮翘,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站毛秘,受9級特大地震影響饭寺,放射性物質(zhì)發(fā)生泄漏阻课。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一艰匙、第九天 我趴在偏房一處隱蔽的房頂上張望限煞。 院中可真熱鬧,春花似錦员凝、人聲如沸署驻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旺上。三九已至,卻和暖如春骤公,著一層夾襖步出監(jiān)牢的瞬間抚官,已是汗流浹背扬跋。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工阶捆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人钦听。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓洒试,卻偏偏與公主長得像,于是被迫代替她去往敵國和親朴上。 傳聞我的和親對象是個殘疾皇子垒棋,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容