etcd部署

ETCD 介绍

etcd是一个分布式一致性键值存储系统,用于共享配置和服务发现

二进制包安装

  • 下载安装包:https://github.com/etcd-io/etcd/releases
  • tar xvzf etcd-v3.4.3-linux-amd64.tar.gz
  • cd etcd-v3.4.3-linux-amd64
  • 查看 etcd 版本: ./etcd --version
  • 查看客户端接口版本:./etcdctl --version
#下载安装包:https://github.com/etcd-io/etcd/releases
tar xvzf etcd-v3.4.3-linux-amd64.tar.gz
cd etcd-v3.4.3-linux-amd64

#查看 etcd 版本
./etcd --version

#查看客户端接口版本
./etcdctl --version

简单使用

常用配置选项说明:

  • --name : 节点名称,默认为 default,在集群中应该保持唯一
  • --data-dir:服务运行数据保存的路径,默认为 $.etcd
  • --snapshot-count:指定有多少事务(transaction)被提交时,触发截取快照保存到磁盘
  • --heartbeat-interval:leader 多久发送一次心跳到 followers。默认值是 100ms
  • --eletion-timeout:重新投票的超时时间,如果follower在该时间间隔没有收到心跳包,会触发重新投票,默认为 1000 ms
  • --listen-peer-urls:和同伴通信的地址,比如 http://ip:2380,如果有多个,使用逗号分隔。需要所有节点都能够访问,所以不要使用 localhost
  • --advertise-client-urls:对外公告的该节点客户端监听地址,这个值会告诉集群中其他节点
  • --listen-client-urls:对外提供服务的地址,客户端会连接到这里和etcd交互
  • --initial-advertise-peer-urls:该节点同伴监听地址,这个值会告诉集群中其他节点
  • --initial-cluster:集群中所有节点的信息
  • --initial-cluster-state:新建集群的时候,这个值为 new;假如已经存在的集群,这个值为existing
  • --initial-cluster-token:创建集群的token,这个值每个集群保持唯一。这样的话,如果你要重新创建集群,即使配置和之前一样,也会再次生成新的集群和节点 uuid;否则会导致多个集群之间的冲突,造成未知的错误

安装集群

服务器信息:

172.17.0.2etcd0
172.17.0.3etcd1
172.17.0.4etcd2

静态模式

静态配置前提是在搭建集群之前已经提前知道各节点的信息。

#节点1:
./etcd --name etcd01 --initial-advertise-peer-urls http://172.17.0.2:2380 \
  --listen-peer-urls http://0.0.0.0:2380 \
  --listen-client-urls http://0.0.0.0:2379 \
  --advertise-client-urls http://172.17.0.2:2379 \
  --initial-cluster-token etcd-cluster-1 \
  --initial-cluster etcd01=http://172.17.0.2:2380,etcd02=http://172.17.0.3:2380,etcd03=http://172.17.0.4:2380 \
  --initial-cluster-state new
#节点2
./etcd --name etcd02 --initial-advertise-peer-urls http://172.17.0.3:2380 \
--listen-peer-urls http://0.0.0.0:2380 \
--listen-client-urls http://0.0.0.0:2379 \
--advertise-client-urls http://172.17.0.3:2379 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster etcd01=http://172.17.0.2:2380,etcd02=http://172.17.0.3:2380,etcd03=http://172.17.0.4:2380 \
  --initial-cluster-state new
#节点3
./etcd --name etcd03 --initial-advertise-peer-urls http://172.17.0.4:2380 \
--listen-peer-urls http://0.0.0.0:2380 \
--listen-client-urls http://0.0.0.0:2379 \
--advertise-client-urls http://172.17.0.4:2379 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster etcd01=http://172.17.0.2:2380,etcd02=http://172.17.0.3:2380,etcd03=http://172.17.0.4:2380 \
  --initial-cluster-state new
使用命令查看:

root@8819b932243a:/home/etcd-v3.4.3-linux-amd64# ./etcdctl member list
9198227ac1a2c055, started, etcd02, http://172.17.0.3:2380, http://172.17.0.3:2379, false
983274ac8c0149ec, started, etcd01, http://172.17.0.2:2380, http://172.17.0.2:2379, false
ab3fbede047aa1ac, started, etcd03, http://172.17.0.4:2380, http://172.17.0.4:2379, false

动态模式

静态配置前提是在搭建集群之前已经提前知道各节点的信息,而实际应用中可能存在预先并不知道各节点ip的情况。

这时可通过已经搭建的etcd来辅助搭建新的etcd集群,命令如下:

curl -X PUT http://172.17.0.2:2379/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83/_config/size -d value=3 {"action":"set","node":{"key":"/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83/_config/size","value":"3","modifiedIndex":19,"createdIndex":19}}

如果没有搭建好的etcd集群用于注册和发现,可使用etcd公有服务来进行服务注册发现。公有etcd服务上创建用于发现的url为:

root@82d15ec6db61#curl https://discovery.etcd.io/new?size=3  #使用公共etcd发现服务

https://discovery.etcd.io/e291f464042d9b72a0e99851adeaf254
#节点1
./etcd --name infra0 --initial-advertise-peer-urls http://172.17.0.2:2380 \
  --listen-peer-urls http://0.0.0.0:2380 \
  --listen-client-urls http://0.0.0.0:2379 \
  --advertise-client-urls http://172.17.0.2:2379 \
  --discovery https://discovery.etcd.io/e291f464042d9b72a0e99851adeaf254
#节点2
./etcd --name infra1 --initial-advertise-peer-urls http://172.17.0.3:2380 \
  --listen-peer-urls http://0.0.0.0:2380 \
  --listen-client-urls http://0.0.0.0:2379 \
  --advertise-client-urls http://172.17.0.3:2379 \
 --discovery https://discovery.etcd.io/e291f464042d9b72a0e99851adeaf254
#节点3
./etcd --name infra2 --initial-advertise-peer-urls http://172.17.0.4:2380 \
  --listen-peer-urls http://0.0.0.0:2380 \
  --listen-client-urls http://0.0.0.0:2379 \
  --advertise-client-urls http://172.17.0.4:2379 \
  --discovery https://discovery.etcd.io/e291f464042d9b72a0e99851adeaf254

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×