一、環境准備
- CentOS Linux release 7.3.1611 (Core)
- etcd-v3.2.6
二、ETCD下載
https://github.com/coreos/etcd/releases/download/v3.2.6/etcd-v3.2.6-linux-amd64.tar.gz
三、ETCD安裝配置
1.部署架構
- 192.168.108.128 節點1
- 192.168.108.129 節點2
- 192.168.108.130 節點3
2.解壓安裝:
-
$ tar -zxvf etcd-v3.2.6-linux-amd64.tar.gz -C /opt/
-
$ cd /opt
-
$ mv etcd-v3.2.6-linux-amd64 etcd-v3.2.6
-
# 創建etcd配置文件目錄
-
$ mkdir /etc/etcd
3.創建etcd配置文件:
$ vi /etc/etcd/conf.yml
節點1,添加如下內容:
-
name: etcd-1
-
data-dir: /opt/etcd-v3.2.6/data
-
listen-client-urls: http://192.168.108.128:2379,http://127.0.0.1:2379
-
advertise-client-urls: http://192.168.108.128:2379,http://127.0.0.1:2379
-
listen-peer-urls: http://192.168.108.128:2380
-
initial-advertise-peer-urls: http://192.168.108.128:2380
-
initial-cluster: etcd-1=http://192.168.108.128:2380,etcd-2=http://192.168.108.129:2380,etcd-3=http://192.168.108.130:2380
-
initial-cluster-token: etcd-cluster-token
-
initial-cluster-state: new
節點2,添加如下內容:
-
name: etcd-2
-
data-dir: /opt/etcd-v3.2.6/data
-
listen-client-urls: http://192.168.108.129:2379,http://127.0.0.1:2379
-
advertise-client-urls: http://192.168.108.129:2379,http://127.0.0.1:2379
-
listen-peer-urls: http://192.168.108.129:2380
-
initial-advertise-peer-urls: http://192.168.108.129:2380
-
initial-cluster: etcd-1=http://192.168.108.128:2380,etcd-2=http://192.168.108.129:2380,etcd-3=http://192.168.108.130:2380
-
initial-cluster-token: etcd-cluster-token
-
initial-cluster-state: new
節點3,添加如下內容:
-
name: etcd-3
-
data-dir: /opt/etcd-v3.2.6/data
-
listen-client-urls: http://192.168.108.130:2379,http://127.0.0.1:2379
-
advertise-client-urls: http://192.168.108.130:2379,http://127.0.0.1:2379
-
listen-peer-urls: http://192.168.108.130:2380
-
initial-advertise-peer-urls: http://192.168.108.130:2380
-
initial-cluster: etcd-1=http://192.168.108.128:2380,etcd-2=http://192.168.108.129:2380,etcd-3=http://192.168.108.130:2380
-
initial-cluster-token: etcd-cluster-token
-
initial-cluster-state: new
4.更新etcd系統默認配置:
當前使用的是etcd v3版本,系統默認的是v2,通過下面命令修改配置。
$ vi /etc/profile
在文件末尾追加:
export ETCDCTL_API=3
使文件生效:
$ source /etc/profile
四、ETCD命令
$ cd /opt/etcd-v3.2.6
1.查看版本信息:
-
$ ./etcdctl version
-
-
etcdctl version: 3.2.6
-
API version: 3.2
2.啟動命令:
$ ./etcd --config-file=/etc/etcd/conf.yml
3.查看集群成員信息:
-
$ ./etcdctl member list
-
-
2618ce5cd761aa8e: name=etcd-3 peerURLs=http://192.168.108.130:2380 clientURLs=http://127.0.0.1:2379,http://192.168.108.130:2379 isLeader= false
-
9c359d48a2f34938: name=etcd-1 peerURLs=http://192.168.108.128:2380 clientURLs=http://127.0.0.1:2379,http://192.168.108.128:2379 isLeader= false
-
f3c45714407d68f3: name=etcd-2 peerURLs=http://192.168.108.129:2380 clientURLs=http://127.0.0.1:2379,http://192.168.108.129:2379 isLeader= true
4.查看集群狀態(Leader節點):
-
$ ./etcdctl cluster-health
-
-
member 2618ce5cd761aa8e is healthy: got healthy result from http://127.0.0.1:2379
-
member 9c359d48a2f34938 is healthy: got healthy result from http://127.0.0.1:2379
-
member f3c45714407d68f3 is healthy: got healthy result from http://127.0.0.1:2379
-
cluster is healthy
5.HTTPS加密下使用etcdctl檢查集群健康狀況:
-
$ etcdctl --ca-file /etc/ssl/etcd/ca.pem --cert-file /etc/ssl/etcd/server1.pem --key-file /etc/ssl/etcd/server1-key.pem member list
-
$ etcdctl --ca-file /etc/ssl/etcd/ca.pem --cert-file /etc/ssl/etcd/server1.pem --key-file /etc/ssl/etcd/server1-key.pem cluster-health
五、ECTD讀寫操作
基於HTTP協議的API使用起來比較簡單,這里主要通過etcdctl和curl兩種方式來做簡單介紹。
1.下面通過給message key設置Hello值示例:
-
$ ./etcdctl set /message Hello
-
-
Hello
-
-
$ curl -X PUT http://127.0.0.1:2379/v2/keys/message -d value= "Hello"
-
{ "action":"set","node":{"key":"/message","value":"Hello","modifiedIndex":4,"createdIndex":4}}
2.讀取message的值:
-
$ ./etcdctl get /message
-
Hello
-
-
$ curl http://127.0.0.1:2379/v2/keys/message
-
{ "action":"get","node":{"key":"/message","value":"Hello","modifiedIndex":9,"createdIndex":9}}
3.刪除message key:
-
$ ./etcdctl rm /message
-
-
$ curl -X DELETE http://127.0.0.1:2379/v2/keys/message
-
{ "action":"delete","node":{"key":"/message","modifiedIndex":10,"createdIndex":9},"prevNode":{"key":"/message","value":"Hello","modifiedIndex":9,"createdIndex":9}}
說明:因為是集群,所以message在其中一個節點創建后,在集群中的任何節點都可以查詢到。
4.查看所有key-value:
curl -s http://127.0.0.1:2379/v2/keys/?recursive=true
六、配置ETCD為啟動服務
1.編輯/usr/lib/systemd/system/etcd.service,添加下面內容:
-
[Unit]
-
Description=Etcd Server
-
After=network.target
-
After=network-online.target
-
Wants=network-online.target
-
-
[Service]
-
Type=notify
-
WorkingDirectory=/opt/etcd-v3.2.6/
-
# User=etcd
-
ExecStart=/opt/etcd-v3.2.6/etcd --config-file=/etc/etcd/conf.yml
-
Restart=on-failure
-
LimitNOFILE=65536
-
-
[Install]
-
WantedBy=multi-user.target
2.更新啟動:
-
systemctl daemon-reload
-
systemctl enable etcd
-
systemctl start etcd
-
systemctl restart etcd
-
-
systemctl status etcd.service -l