https://coreos.com/etcd/docs/latest/op-guide/hardware.html
CPUs:普通集群 2-4 个核就可以运行得很流畅。压力很大的集群,服务几千个client或者需要每秒处理上万个请求时,需要 8-16 个核来处理 etcd 请求。
Memory:一般 8G 内存即可。大压力的集群需要 16G-64G 的内存。
Disks:快速的磁盘是 etcd 集群性能与稳定性最重要的因素。最基本的 50 顺序 IOPS(7200 RPM 磁盘)是需要的。大压力的集群,需要 500 顺序 IOPS (典型的本地 SSD 盘)。
建议使用 SSD 盘。
etcd 部署二进制文件下载:https://github.com/coreos/etcd/releases
etcd 3.2.9 版:
etcd-v3.2.9-linux-amd64.tar.gz
9.71MB
解压后,将解压路径加入 path,二进制文件 etcd 和 etcdctl 可以运行即可。
假设在 10.20.221.93,10.20.221.94,10.20.221.95 三台机器部署 3 节点 etcd 集群
etcd节点1启动:
在机器 10.20.221.93 创建目录 /home/etcd/node0/data,保存 etcd 节点数据, /home/etcd/node0/log,保存日志
准备第一个节点启动脚本 etcd0.sh
#!/bin/bash
etcd --name etcd0 --data-dir /home/etcd/node0/data --advertise-client-urls http://10.20.221.93:2379,http://10.20.221.93:4001 --listen-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 --initial-advertise-peer-urls http://10.20.221.93:2380 --listen-peer-urls http://0.0.0.0:2380 --initial-cluster-token etcd-cluster-1 --initial-cluster etcd0=http://10.20.221.93:2380,etcd1=http://10.20.221.94:2380,etcd2=http://10.20.221.95:2380 --initial-cluster-state new > /home/etcd/node0/log/etcd.log 2>&1
启动节点:执行 nohup ./etcd0.sh &
etcd节点2启动:
在机器 10.20.221.94 创建目录 /home/etcd/node1/data,保存 etcd 节点数据, /home/etcd/node1/log,保存日志
准备第一个节点启动脚本 etcd1.sh
#!/bin/bash
etcd --name etcd1 --data-dir /home/etcd/node1/data --advertise-client-urls http://10.20.221.94:2379,http://10.20.221.94:4001 --listen-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 --initial-advertise-peer-urls http://10.20.221.94:2380 --listen-peer-urls http://0.0.0.0:2380 --initial-cluster-token etcd-cluster-1 --initial-cluster etcd0=http://10.20.221.93:2380,etcd1=http://10.20.221.94:2380,etcd2=http://10.20.221.95:2380 --initial-cluster-state new > /home/etcd/node1/log/etcd.log 2>&1
启动节点:执行 nohup ./etcd1.sh &
etcd节点3启动:
在机器 10.20.221.95 创建目录 /home/etcd/node2/data,保存 etcd 节点数据, /home/etcd/node2/log,保存日志
准备第一个节点启动脚本 etcd2.sh
#!/bin/bash
etcd --name etcd2 --data-dir /home/etcd/node2/data --advertise-client-urls http://10.20.221.95:2379,http://10.20.221.95:4001 --listen-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 --initial-advertise-peer-urls http://10.20.221.95:2380 --listen-peer-urls http://0.0.0.0:2380 --initial-cluster-token etcd-cluster-1 --initial-cluster etcd0=http://10.20.221.93:2380,etcd1=http://10.20.221.94:2380,etcd2=http://10.20.221.95:2380 --initial-cluster-state new > /home/etcd/node2/log/etcd.log 2>&1
启动节点:执行 nohup ./etcd2.sh &
etcd 启动参数说明:
name:etcd 集群中的节点名,不重复即可
data-dir:存放数据目录,节点ID,集群ID,Snapshot文件,集群初始化配置,WAL 文件
listen-peer-urls:监听的用于节点之间通信的url,可监听多个,集群内部将通过这些url进行数据交互(如选举,数据同步等)
initial-advertise-peer-urls :建议用于节点之间通信的url,节点间将以该值进行通信。
listen-client-urls :监听的用于客户端通信的url,同样可以监听多个
advertise-client-urls :建议使用的客户端通信url,该值用于etcd代理或etcd成员与etcd节点通信
initial-cluster-token:节点的token值,设置该值后集群将生成唯一id,并为每个节点也生成唯一id,当使用相同配置文件再启动一个集群时,只要该token值不一样,etcd集群就不会相互影响
initial-cluster :也就是集群中所有的initial-advertise-peer-urls 的合集
--initial-cluster-state new:新建集群的标志
部分 etcdctl 命令使用:
etcdctl member list 查看集群成员
etcdctl cluster-health 检查集群健康状态
etcdctl version 查看版本
ectdctl put foo bar 设置 key value
etcdctl get foo 获取某个key的value
etcdctl watch foo
etcdctl lease grant 10
etcdctl put foo bar —lease=1234abcd 设置租期为 10s
etcdctl lease keep-alive 1234abcd 刷新租期
etcdctl lease revoke 1234abcd