etcd 常用配置參數(shù)
--name #指定節(jié)點名稱
--data-dir #指定節(jié)點的數(shù)據(jù)存儲目錄,用于保存日志和快照
--addr #公布的 IP 地址和端口;默認為 127.0.0.1:2379
--bind-addr #用于客戶端連接的監(jiān)聽地址;默認為–addr 配置
--peers #集群成員逗號分隔的列表;例如 127.0.0.1:2380,127.0.0.1:2381
--peer-addr #集群服務(wù)通訊的公布的 IP 地址;默認為 127.0.0.1:2380
--peer-bind-addr #集群服務(wù)通訊的監(jiān)聽地址;默認為-peer-addr 配置
--wal-dir #指定節(jié)點的 wal 文件的存儲目錄,若指定了該參數(shù) wal 文件會和其他數(shù)據(jù)文件分開存儲
--listen-client-urls #監(jiān)聽 URL;用于與客戶端通訊
--listen-peer-urls #監(jiān)聽 URL;用于與其他節(jié)點通訊
--initial-advertise-peer-urls #告知集群其他節(jié)點 URL
--advertise-client-urls #告知客戶端 URL
--initial-cluster-token #集群的 ID
--initial-cluster #集群中所有節(jié)點
--initial-cluster-state new #表示從無到有搭建 etcd 集群
--discovery-srv #用于 DNS 動態(tài)服務(wù)發(fā)現(xiàn),指定 DNS SRV 域名
--discovery #用于 etcd 動態(tài)發(fā)現(xiàn),指定 etcd 發(fā)現(xiàn)服務(wù)的 URL
etcd總共有兩種集群模式:
- 單節(jié)點(Standalone);
- 多節(jié)點,多節(jié)點的話,因為節(jié)點數(shù)必須是奇數(shù)個,所以最小集群通常是3節(jié)點.
etcd在windows下面有三種啟動方式:
- 將參數(shù)直接輸入到命令行里,然后通過命令行或者bat啟動;
- 將參數(shù)寫入到y(tǒng)ml配置文件里面,通過命令行或者bat啟動;
- 運行在docker下面了.
1.直接命令行
1.1單節(jié)點
.\etcd.exe --name standalone ^
--data-dir .\data\standalone ^
--advertise-client-urls http://0.0.0.0:2379 ^
--listen-client-urls http://0.0.0.0:2379 ^
--initial-cluster-token etcd-standalone ^
--initial-cluster-state new
pause
1.2多節(jié)點
.\etcd.exe --name node01 ^
--data-dir .\data\node01 ^
--advertise-client-urls http://0.0.0.0:2379 ^
--listen-client-urls http://0.0.0.0:2379 ^
--listen-peer-urls http://0.0.0.0:2380 ^
--initial-advertise-peer-urls http://0.0.0.0:2380 ^
--initial-cluster-token etcd-cluster-1 ^
--initial-cluster node01=http://0.0.0.0:2380,node02=http://0.0.0.0:2381,node03=http://0.0.0.0:2382 ^
--initial-cluster-state new
.\etcd.exe --name node02 ^
--data-dir .\data\node02 ^
--advertise-client-urls http://0.0.0.0:2378 ^
--listen-client-urls http://0.0.0.0:2378 ^
--listen-peer-urls http://0.0.0.0:2381 ^
--initial-advertise-peer-urls http://0.0.0.0:2381 ^
--initial-cluster-token etcd-cluster-1 ^
--initial-cluster node01=http://0.0.0.0:2380,node02=http://0.0.0.0:2381,node03=http://0.0.0.0:2382 ^
--initial-cluster-state new
.\etcd.exe --name node03 ^
--data-dir .\data\node03 ^
--advertise-client-urls http://0.0.0.0:2377 ^
--listen-client-urls http://0.0.0.0:2377 ^
--listen-peer-urls http://0.0.0.0:2382 ^
--initial-advertise-peer-urls http://0.0.0.0:2382 ^
--initial-cluster-token etcd-cluster-1 ^
--initial-cluster node01=http://0.0.0.0:2380,node02=http://0.0.0.0:2381,node03=http://0.0.0.0:2382 ^
--initial-cluster-state new
pause
2.yml配置文件
2.1單節(jié)點
name: etcd-standalone
data-dir: .\etcd-data\standalone
listen-client-urls: 'http://0.0.0.0:2379'
advertise-client-urls: 'http://0.0.0.0:2379'
initial-cluster-token: etcd-standalone
initial-cluster-state: new
2.2多節(jié)點
name: node01
data-dir: .\data\node01
listen-client-urls: 'http://0.0.0.0:2379'
advertise-client-urls: 'http://0.0.0.0:2379'
listen-peer-urls: 'http://0.0.0.0:2380'
initial-advertise-peer-urls: 'http://0.0.0.0:2380'
initial-cluster: node01=http://0.0.0.0:2380,node02=http://0.0.0.0:2381,node03=http://0.0.0.0:2382
initial-cluster-token: etcd-cluster-test1
initial-cluster-state: new
name: node02
data-dir: .\data\node02
listen-client-urls: 'http://0.0.0.0:2378'
advertise-client-urls: 'http://0.0.0.0:2378'
listen-peer-urls: 'http://0.0.0.0:2381'
initial-advertise-peer-urls: 'http://0.0.0.0:2381'
initial-cluster: node01=http://0.0.0.0:2380,node02=http://0.0.0.0:2381,node03=http://0.0.0.0:2382
initial-cluster-token: etcd-cluster-test1
initial-cluster-state: new
name: node03
data-dir: .\data\node03
listen-client-urls: 'http://0.0.0.0:2377'
advertise-client-urls: 'http://0.0.0.0:2377'
listen-peer-urls: 'http://0.0.0.0:2382'
initial-advertise-peer-urls: 'http://0.0.0.0:2382'
initial-cluster: node01=http://0.0.0.0:2380,node02=http://0.0.0.0:2381,node03=http://0.0.0.0:2382
initial-cluster-token: etcd-cluster-test1
initial-cluster-state: new
啟動的bat為:
.\etcd.exe --config-file .\conf\standalone.yml
3.docker
3.1單節(jié)點
SETLOCAL ENABLEEXTENSIONS
SET REGISTRY=quay.io/coreos/etcd
SET ETCD_VERSION=latest
SET DATA_DIR=/etcd-data/standalone
SET CLUSTER_STATE=new
SET CLUSTER_TOKEN=etcd-standalone
SET NODE_NAME=etcd-standalone
docker run ^
-d --name %NODE_NAME% ^
--volume=%DATA_DIR%:/etcd-data ^
--publish 2379:2379 ^
--env ALLOW_NONE_AUTHENTICATION=yes ^
--env ETCD_NAME=%NODE_NAME% ^
--env ETCD_DATA_DIR=%DATA_DIR% ^
--env ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379" ^
--env ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" ^
--env ETCD_INITIAL_CLUSTER_TOKEN=%CLUSTER_TOKEN% ^
--env ETCD_INITIAL_CLUSTER_STATE=%CLUSTER_STATE% ^
bitnami/etcd:latest
pause
3.2多節(jié)點
SETLOCAL ENABLEEXTENSIONS
SET REGISTRY=quay.io/coreos/etcd
SET ETCD_VERSION=latest
SET DATA_DIR=/etcd-data/node01
SET CLUSTER_STATE=new
SET CLUSTER_TOKEN=etcd-cluster-test1
SET NODE_NAME=etcd-node01
docker run ^
-d --name %NODE_NAME% ^
--volume=%DATA_DIR%:/etcd-data ^
--publish 2380:2380 ^
--publish 2379:2379 ^
--env ALLOW_NONE_AUTHENTICATION=yes ^
--env ETCD_NAME=%NODE_NAME% ^
--env ETCD_DATA_DIR=%DATA_DIR% ^
--env ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 ^
--env ETCD_ADVERTISE_CLIENT_URLS=http://host.docker.internal:2379 ^
--env ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380 ^
--env ETCD_INITIAL_ADVERTISE_PEER_URLS=http://host.docker.internal:2380 ^
--env ETCD_INITIAL_CLUSTER=etcd-node01=http://host.docker.internal:2380,etcd-node02=http://host.docker.internal:2381,etcd-node03=http://host.docker.internal:2382 ^
--env ETCD_INITIAL_CLUSTER_TOKEN=%CLUSTER_TOKEN% ^
--env ETCD_INITIAL_CLUSTER_STATE=%CLUSTER_STATE% ^
bitnami/etcd:latest
pause
SETLOCAL ENABLEEXTENSIONS
SET REGISTRY=quay.io/coreos/etcd
SET ETCD_VERSION=latest
SET DATA_DIR=/etcd-data/node02
SET CLUSTER_STATE=new
SET CLUSTER_TOKEN=etcd-cluster-test1
SET NODE_NAME=etcd-node02
docker run ^
-d --name %NODE_NAME% ^
--volume=%DATA_DIR%:/etcd-data ^
--publish 2381:2381 ^
--publish 2378:2378 ^
--env ALLOW_NONE_AUTHENTICATION=yes ^
--env ETCD_NAME=%NODE_NAME% ^
--env ETCD_DATA_DIR=%DATA_DIR% ^
--env ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2378 ^
--env ETCD_ADVERTISE_CLIENT_URLS=http://host.docker.internal:2378 ^
--env ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2381 ^
--env ETCD_INITIAL_ADVERTISE_PEER_URLS=http://host.docker.internal:2381 ^
--env ETCD_INITIAL_CLUSTER=etcd-node01=http://host.docker.internal:2380,etcd-node02=http://host.docker.internal:2381,etcd-node03=http://host.docker.internal:2382 ^
--env ETCD_INITIAL_CLUSTER_TOKEN=%CLUSTER_TOKEN% ^
--env ETCD_INITIAL_CLUSTER_STATE=%CLUSTER_STATE% ^
bitnami/etcd:latest
pause
SETLOCAL ENABLEEXTENSIONS
SET REGISTRY=quay.io/coreos/etcd
SET ETCD_VERSION=latest
SET DATA_DIR=/etcd-data/node03
SET CLUSTER_STATE=new
SET CLUSTER_TOKEN=etcd-cluster-test1
SET NODE_NAME=etcd-node03
docker run ^
-d --name %NODE_NAME% ^
--volume=%DATA_DIR%:/etcd-data ^
--publish 2382:2382 ^
--publish 2377:2377 ^
--env ALLOW_NONE_AUTHENTICATION=yes ^
--env ETCD_NAME=%NODE_NAME% ^
--env ETCD_DATA_DIR=%DATA_DIR% ^
--env ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2377" ^
--env ETCD_ADVERTISE_CLIENT_URLS="http://host.docker.internal:2377" ^
--env ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2382" ^
--env ETCD_INITIAL_ADVERTISE_PEER_URLS="http://host.docker.internal:2382" ^
--env ETCD_INITIAL_CLUSTER=etcd-node01=http://host.docker.internal:2380,etcd-node02=http://host.docker.internal:2381,etcd-node03=http://host.docker.internal:2382 ^
--env ETCD_INITIAL_CLUSTER_TOKEN=%CLUSTER_TOKEN% ^
--env ETCD_INITIAL_CLUSTER_STATE=%CLUSTER_STATE% ^
bitnami/etcd:latest
pause
需要注意的是,Docker環(huán)境下,如果要本機訪問,不能夠使用127.0.0.1,Docker其實就是一個Linux虛擬機,所以如果要本機容器之間進行訪問的話,那么就得用host.docker.internal來替換127.0.0.1,或者是創(chuàng)建一個網(wǎng)橋.
以上的命令,我都已經(jīng)形成了一個bat文件,下面提供下載:
/Files/tx7do/etcd-bat.zip