Mac安裝Etcd,配置Etcd可視化頁面Etcd Browser

一、Etcd
類比於Zookeeper,開源的、分佈式的鍵值對數據存儲系統,主要用來做配置共享、服務的註冊和發現。高可用,強一致性。內部採用 Raft 協議作爲一致性算法選舉leader,保證集羣數據不丟失
每個 etcd cluster 都是有若干個 member 組成的,每個 member 是一個獨立運行的 etcd 實例,單臺機器上可以運行多個 member。在正常運行的狀態下,集羣中會有一個 leader,其餘的 member 都是 followers。leader 向 followers 同步日誌,保證數據在各個 member 都有副本。leader 還會定時向所有的 member 發送心跳報文,如果在規定的時間裏 follower 沒有收到心跳,就會重新進行選舉。客戶端所有的請求都會先發送給 leader,leader 向所有的 followers 同步日誌,等收到超過半數的確認後就把該日誌存儲到磁盤,並返回響應客戶端。每個 etcd 服務有三大主要部分組成:raft 實現、WAL 日誌存儲、數據的存儲和索引。WAL 會在本地磁盤(就是之前提到的 --data-dir)上存儲日誌內容(wal file)和快照(snapshot)

官方文檔:https://coreos.com/etcd/
etcd-browser(etcd-webui): https://github.com/henszey/etcd-browser
etckeeper:https://github.com/evildecay/etcdkeeper
參考文檔:

etcd:從應用場景到實現原理的全方位解讀
ETCD是什麼
Etcd安裝及使用詳解
Java】用etcd做服務註冊和發現
Etcd V3版本API
二、Mac安裝
用brew安裝非常方便,沒安裝的自行安裝Homebrew

brew search etcd
可以看到候選安裝包

brew install etcd

安裝

#執行etcd即可啓動服務

etcd

可以看到以下信息:

2018-11-26 17:35:02.659194 I | etcdmain: etcd Version: 3.3.10
2018-11-26 17:35:02.659310 I | etcdmain: Git SHA: GitNotFound
2018-11-26 17:35:02.659315 I | etcdmain: Go Version: go1.11.1
2018-11-26 17:35:02.659319 I | etcdmain: Go OS/Arch: darwin/amd64
2018-11-26 17:35:02.659324 I | etcdmain: setting maximum number of CPUs to 4, total number of available CPUs is 4
2018-11-26 17:35:02.659335 N | etcdmain: failed to detect default host (default host not supported on darwin_amd64)
2018-11-26 17:35:02.659345 W | etcdmain: no data-dir provided, using default data-dir ./default.etcd
2018-11-26 17:35:02.659758 N | etcdmain: the server is already initialized as member before, starting as etcd member...
2018-11-26 17:35:02.661503 I | embed: listening for peers on http://localhost:2380
2018-11-26 17:35:02.661918 I | embed: listening for client requests on localhost:2379
2018-11-26 17:35:02.666171 I | etcdserver: name = default
2018-11-26 17:35:02.666189 I | etcdserver: data dir = default.etcd
2018-11-26 17:35:02.666195 I | etcdserver: member dir = default.etcd/member
2018-11-26 17:35:02.666199 I | etcdserver: heartbeat = 100ms
2018-11-26 17:35:02.666203 I | etcdserver: election = 1000ms
2018-11-26 17:35:02.666207 I | etcdserver: snapshot count = 100000
2018-11-26 17:35:02.666220 I | etcdserver: advertise client URLs = http://localhost:2379
2018-11-26 17:35:02.668339 I | etcdserver: restarting member 8e9e05c52164694d in cluster cdf818194e3a8c32 at commit index 4
2018-11-26 17:35:02.668614 I | raft: 8e9e05c52164694d became follower at term 2
2018-11-26 17:35:02.668636 I | raft: newRaft 8e9e05c52164694d [peers: [], term: 2, commit: 4, applied: 0, lastindex: 4, lastterm: 2]
2018-11-26 17:35:02.671551 W | auth: simple token is not cryptographically signed
2018-11-26 17:35:02.672511 I | etcdserver: starting server... [version: 3.3.10, cluster version: to_be_decided]
2018-11-26 17:35:02.672700 E | etcdserver: cannot monitor file descriptor usage (cannot get FDUsage on darwin)
2018-11-26 17:35:02.673933 I | etcdserver/membership: added member 8e9e05c52164694d [http://localhost:2380] to cluster cdf818194e3a8c32
2018-11-26 17:35:02.674131 N | etcdserver/membership: set the initial cluster version to 3.3
2018-11-26 17:35:02.674257 I | etcdserver/api: enabled capabilities for version 3.3
2018-11-26 17:35:03.671575 I | raft: 8e9e05c52164694d is starting a new election at term 2
2018-11-26 17:35:03.671609 I | raft: 8e9e05c52164694d became candidate at term 3
2018-11-26 17:35:03.671916 I | raft: 8e9e05c52164694d received MsgVoteResp from 8e9e05c52164694d at term 3
2018-11-26 17:35:03.671942 I | raft: 8e9e05c52164694d became leader at term 3
2018-11-26 17:35:03.671951 I | raft: raft.node: 8e9e05c52164694d elected leader 8e9e05c52164694d at term 3
2018-11-26 17:35:03.672275 I | etcdserver: published {Name:default ClientURLs:[http://localhost:2379]} to cluster cdf818194e3a8c32
2018-11-26 17:35:03.672537 I | embed: ready to serve client requests
2018-11-26 17:35:03.682936 N | embed: serving insecure client requests on 127.0.0.1:2379, this is strongly discouraged!
 


etcdserver: name = default name表示節點名稱,默認爲default
data-dir保存日誌和快照的目錄,默認爲當前工作目錄default.etcd/
在http://localhost:2380和集羣中其他節點通信
在http://localhost:2379提供HTTP API服務,供客戶端交互。等會配置webui就是這個地址
etcdserver: heartbeat = 100ms leader發送心跳到followers的間隔時間
etcdserver: election = 1000ms 重新投票的超時時間,如果follow在該時間間隔沒有收到心跳包,會觸發重新投票,默認爲1000ms

 


三、安裝etcd webui
記得啓動Etcd服務。
先安裝node,git環境,然後clone

git clone https://github.com/henszey/etcd-browser.git
cd etcd-browser/
vim server.js  


編輯server.js,修改內容如下:

var etcdHost = process.env.ETCD_HOST || '127.0.0.1';  # etcd 主機IP
var etcdPort = process.env.ETCD_PORT || 4001;          # etcd 主機端口
var serverPort = process.env.SERVER_PORT || 8000;      # etcd-browser 監聽端口


然後啓動

node server.js

訪問:http://127.0.0.1:8000/