摘要:地址這里介紹集群的啟動方式,假設我們有兩臺機器機器一機器二注兩臺機器無需建立互信下載從頁面下載最新版本這里下載當前年月日最新版本,解壓并進入目錄注集群中的每一臺機器都需進行該操作。
由于 etcd 的安裝、啟動等過程與官方文檔所說的有些不同,這里備忘以免重復采坑。1. 下載Github 地址:https://github.com/coreos/etcd
這里介紹集群的啟動方式,假設我們有兩臺機器:
機器一:192.168.33.10
機器二:192.168.33.11注:兩臺機器無需建立 SSH 互信
從 Github release 頁面下載最新版本:Releases · coreos/etcd · GitHub
這里下載當前( 2018 年 07 月 01 日 )最新版本,Linux amd64:https://github.com/coreos/etc...
解壓并進入目錄:
tar -zvxf etcd-v3.3.8-linux-amd64.tar.gz cd etcd-v3.3.8-linux-amd64
注:集群中的每一臺機器都需進行該操作。
2. 啟動官方文檔:Install etcd | Get Started with etcd | CoreOS
根據官網文檔的介紹,我們可以使用參數或配置文件啟動,以下分別介紹這兩種方式。
2.1 通過參數啟動注:以下使用 nohup,使其以后臺方式運行
2.1.1 在 192.168.33.10 中啟動nohup ./etcd --name my-etcd-1 --listen-client-urls http://192.168.33.10:2379 --advertise-client-urls http://192.168.33.10:2379 --listen-peer-urls http://192.168.33.10:2380 --initial-advertise-peer-urls http://192.168.33.10:2380 --initial-cluster my-etcd-1=http://192.168.33.10:2380,my-etcd-2=http://192.168.33.11:2380 --initial-cluster-token my-etcd-token --initial-cluster-state new >/dev/null 2>&1 &2.1.2 在 192.168.33.11 中啟動
nohup ./etcd --name my-etcd-2 --listen-client-urls http://192.168.33.11:2379 --advertise-client-urls http://192.168.33.11:2379 --listen-peer-urls http://192.168.33.11:2380 --initial-advertise-peer-urls http://192.168.33.11:2380 --initial-cluster my-etcd-1=http://192.168.33.10:2380,my-etcd-2=http://192.168.33.11:2380 --initial-cluster-token my-etcd-token --initial-cluster-state new >/dev/null 2>&1 &2.2 通過配置文件啟動
配置文件參考:Install etcd | Get Started with etcd | CoreOS 及 etcd/etcd.conf.yml.sample at master · coreos/etcd · GitHub
我們將配置文件命名為:etcd.conf.yml,并將其置于與 etcd-v3.3.8-linux-amd64 同級目錄下。
2.2.1 在 192.168.33.10 中添加配置文件并啟動vim ./etcd.conf.yml
內容為:
name: my-etcd-1 listen-client-urls: http://192.168.33.10:2379 advertise-client-urls: http://192.168.33.10:2379 listen-peer-urls: http://192.168.33.10:2380 initial-advertise-peer-urls: http://192.168.33.10:2380 initial-cluster: my-etcd-1=http://192.168.33.10:2380,my-etcd-2=http://192.168.33.11:2380 initial-cluster-token: my-etcd-token initial-cluster-state: new
然后執行:
nohup ./etcd --config-file ./etcd.conf.yml >/dev/null 2>&1 &2.2.2 在 192.168.33.11 中添加配置文件并啟動
vim ./etcd.conf.yml
name: my-etcd-2 listen-client-urls: http://192.168.33.11:2379 advertise-client-urls: http://192.168.33.11:2379 listen-peer-urls: http://192.168.33.11:2380 initial-advertise-peer-urls: http://192.168.33.11:2380 initial-cluster: my-etcd-1=http://192.168.33.10:2380,my-etcd-2=http://192.168.33.11:2380 initial-cluster-token: my-etcd-token initial-cluster-state: new
然后執行:
nohup ./etcd --config-file ./etcd.conf.yml >/dev/null 2>&1 &3. 檢測啟動
按照官方文檔所說,我們可以在集群的任意一臺節點上,通過執行如下指令檢測集群的運行情況:
# 仍然在 etcd-v3.3.8-linux-amd64 目錄下 ./etcdctl cluster-health
然而,當執行這句指令后,我們會得到如下信息:
[vagrant@192-168-33-10 etcd-v3.3.8-linux-amd64]$ ./etcdctl cluster-health cluster may be unhealthy: failed to list members Error: client: etcd cluster is unavailable or misconfigured; error #0: dial tcp 127.0.0.1:2379: getsockopt: connection refused ; error #1: dial tcp 127.0.0.1:4001: getsockopt: connection refused error #0: dial tcp 127.0.0.1:2379: getsockopt: connection refused error #1: dial tcp 127.0.0.1:4001: getsockopt: connection refused
這個報錯很奇怪,啟動時明明指定的不是 127.0.0.1。
查閱了一些資料,最終在 Github issue 中找到了問題所在:
I faced the same situation. After searching, I find etcdctl cmd use default endpoints "http://127.0.0.1:2379,http://127.0.0.1:4001". If etcd start with --listen-client-urls http://HOST_IP:2379, then you can use etcdctl like etcdctl --endpoints "http://HOST_IP:2379" member list
這個 issue 中提供了多種方式,個人感覺最好的解決方式是通過追加 --endopoints 參數:
./etcdctl --endpoints http://192.168.33.10:2379,http://192.168.33.11:2379 cluster-health
當然,--endpoints 參數的值可以只添加其中一臺機器,如:
./etcdctl --endpoints http://192.168.33.10:2379 cluster-health
細節可以參考:Etcd2 cluster working but etcdctl broken · Issue #1028 · coreos/bugs · GitHub
這樣我們就能發現,etcd 集群已經成功啟動了:
[vagrant@192-168-33-10 etcd-v3.3.8-linux-amd64]$ ./etcdctl --endpoints http://192.168.33.10:2379 cluster-health member 42ab269b4f75b118 is healthy: got healthy result from http://192.168.33.11:2379 member 7118e8ab00eced36 is healthy: got healthy result from http://192.168.33.10:2379 cluster is healthy
當然,我們也可以添加 member list 指令查看:
[vagrant@192-168-33-11 etcd-v3.3.8-linux-amd64]$ ./etcdctl --endpoints http://192.168.33.10:2379 member list 42ab269b4f75b118: name=my-etcd-2 peerURLs=http://192.168.33.11:2380 clientURLs=http://192.168.33.11:2379 isLeader=true 7118e8ab00eced36: name=my-etcd-1 peerURLs=http://192.168.33.10:2380 clientURLs=http://192.168.33.10:2379 isLeader=false參考鏈接
linux重定向及nohup不輸出的方法 - CSDN博客
etcd/etcd.conf.yml.sample at master · coreos/etcd · GitHub
Etcd2 cluster working but etcdctl broken · Issue #1028 · coreos/bugs · GitHub
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27343.html
摘要:基于近期學習的內容,整理與網絡相關的知識。針對這一問題,采用網絡來解決。但這篇博客的重點不在,我們可以在啟動時,為其指定一個分布式存儲,從而使得我們能夠實驗網絡。 基于近期學習的 Docker 內容,整理與 Docker 網絡相關的知識。實驗環境:Centos 7.4 Docker 版本如下: Client: Version: 18.03.1-ce API versio...
摘要:是谷歌官方根據自己容器經驗開源的產品。當然,這不可能是,而且它的底層是替換成了,但是這不能掩蓋它解決的問題。因此筆者決定嘗試玩玩。不然啟動會報錯。 背景 容器技術在目前很火,而且確確實實的解決了很多的痛點,但是如果只使用目前 Docker 官方提供的 engine+compose+swarm 方案,是很難再實際生產中使用的。Kubernetes 是谷歌官方根據自己容器經驗 Borg 開...
摘要:是谷歌官方根據自己容器經驗開源的產品。當然,這不可能是,而且它的底層是替換成了,但是這不能掩蓋它解決的問題。因此筆者決定嘗試玩玩。不然啟動會報錯。 背景 容器技術在目前很火,而且確確實實的解決了很多的痛點,但是如果只使用目前 Docker 官方提供的 engine+compose+swarm 方案,是很難再實際生產中使用的。Kubernetes 是谷歌官方根據自己容器經驗 Borg 開...
摘要:如果用命令行參數,應該將下列參數附在的啟動命令后面其中表示這是在從無到有搭建集群。命令行參數環境變量以命令行參數啟動方式為例公共服務如果沒有已有的集群,也可以用提供的公共服務。 etcd 是一個高可用的分布式 key-value(鍵值) 存儲系統。在暴漫我們用他用來做配置管理和服務發現。 這一次我們主要介紹關于 etcd 集群的搭建與管理。 1. etcd 集群概述 首先我們需要理解,...
閱讀 1171·2021-11-22 15:22
閱讀 3841·2021-10-19 13:13
閱讀 3584·2021-10-08 10:05
閱讀 3298·2021-09-26 10:20
閱讀 2987·2019-08-29 14:21
閱讀 2194·2019-08-27 10:55
閱讀 1876·2019-08-26 10:31
閱讀 2583·2019-08-23 16:47