环境配置


CentOS Linux release 7.3.1611 (Core) 

etcd-v3.2.6


192.168.108.128 节点1

192.168.108.129 节点2

192.168.108.130 节点3


ETCD下载


https://github.com/coreos/etcd/releases/download/v3.2.6/etcd-v3.2.6-linux-amd64.tar.gz


ETCD安装配置

  • 解压安装:

$ 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

$ mkdir /etc/etcd           # 创建etcd配置文件目录

  • 创建etcd配置文件:

$ vi /etc/etcd/conf.yml

节点1,添加如下内容:

[plain]  view plain  copy
  1. name: etcd-1  
  2. data-dir: /opt/etcd-v3.2.6/data  
  3. listen-client-urls: http://192.168.108.128:2379,http://127.0.0.1:2379  
  4. advertise-client-urls: http://192.168.108.128:2379,http://127.0.0.1:2379  
  5. listen-peer-urls: http://192.168.108.128:2380  
  6. initial-advertise-peer-urls: http://192.168.108.128:2380  
  7. 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  
  8. initial-cluster-token: etcd-cluster-token  
  9. initial-cluster-state: new  


节点2,添加如下内容:

[plain]  view plain  copy
  1. name: etcd-2  
  2. data-dir: /opt/etcd-v3.2.6/data  
  3. listen-client-urls: http://192.168.108.129:2379,http://127.0.0.1:2379  
  4. advertise-client-urls: http://192.168.108.129:2379,http://127.0.0.1:2379  
  5. listen-peer-urls: http://192.168.108.129:2380  
  6. initial-advertise-peer-urls: http://192.168.108.129:2380  
  7. 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  
  8. initial-cluster-token: etcd-cluster-token  
  9. initial-cluster-state: new  

节点3,添加如下内容:

[plain]  view plain  copy
  1. name: etcd-3  
  2. data-dir: /opt/etcd-v3.2.6/data  
  3. listen-client-urls: http://192.168.108.130:2379,http://127.0.0.1:2379  
  4. advertise-client-urls: http://192.168.108.130:2379,http://127.0.0.1:2379  
  5. listen-peer-urls: http://192.168.108.130:2380  
  6. initial-advertise-peer-urls: http://192.168.108.130:2380  
  7. 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  
  8. initial-cluster-token: etcd-cluster-token  
  9. initial-cluster-state: new  

  • 更新etcd系统默认配置:

当前使用的是etcd v3版本,系统默认的是v2,通过下面命令修改配置。

$ vi /etc/profile

在末尾追加

export ETCDCTL_API=3

$ source /etc/profile


ETCD命令


$ cd  /opt/etcd-v3.2.6

  • 创建etcd配置文件:

$ ./etcdctl version

etcdctl version: 3.2.6
API version: 3.2

  • 启动命令:

$ ./etcd --config-file=/etc/etcd/conf.yml

  • 查看集群成员信息:

$ ./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

  • 查看集群状态(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


ECTD读写操作


基于HTTP协议的API使用起来比较简单,这里主要通过etcdctl和curl两种方式来做简单介绍。

下面通过给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}}


读取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}}


删除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在其中一个节点创建后,在集群中的任何节点都可以查询到。


配置ETCD为启动服务


编辑/usr/lib/systemd/system/etcd.service,添加下面内容:

[plain]  view plain  copy
  1. [Unit]  
  2. Description=Etcd Server  
  3. After=network.target  
  4. After=network-online.target  
  5. Wants=network-online.target  
  6.   
  7. [Service]  
  8. Type=notify  
  9. WorkingDirectory=/opt/etcd-v3.2.6/  
  10. # User=etcd  
  11. ExecStart=/opt/etcd-v3.2.6/etcd --config-file=/etc/etcd/conf.yml  
  12. Restart=on-failure  
  13. LimitNOFILE=65536  
  14.   
  15. [Install]  
  16. WantedBy=multi-user.target  

更新启动:

systemctl daemon-reload
systemctl enable etcd
systemctl start etcd
systemctl restart etcd

systemctl status etcd.service -l


参考文档


https://coreos.com/etcd/docs/latest/getting-started-with-etcd.html


Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐