环境
二进制安装地址:etcd github地址:https://github.com/etcd-io/etcd/releases
安装
1. 解压文件
tar -zxvf xxxxxxxxxx.tar
2. 将安装包内的etcd etcdctl拷贝到/usr/bin下
创建/var/lib/etcd供后续使用
3. 在/etc/systemd/system/目录里创建etcd.service
[Unit]
Description=etcd.service
[Service]
Type=notify
TimeoutStartSec=0
Restart=always
WorkingDirectory=/var/lib/etcd
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/usr/bin/etcd
[Install]
WantedBy=multi-user.target
4. 创建配置/etc/etcd/etcd.conf文件
# 编辑配置文件
vim /etc/etcd/etcd.conf
# 样例配置如下
# 节点名称
ETCD_NAME=etcd0
# 数据存放位置
ETCD_DATA_DIR="/var/lib/etcd/etcd0"
# 监听其他 Etcd 实例的地址
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
# 监听客户端地址
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
# 通知其他 Etcd 实例地址
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.1.154:2380"
# 初始化集群内节点地址
ETCD_INITIAL_CLUSTER="etcd0=http://192.168.1.154:2380,etcd1=http://192.168.1.156:2380,etcd2=http://192.168.1.249:2380"
# 初始化集群状态,new 表示新建
ETCD_INITIAL_CLUSTER_STATE="new"
# 初始化集群 token
ETCD_INITIAL_CLUSTER_TOKEN="mritd-etcd-cluster"
# 通知 客户端地址
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.1.154:2379"
需要几个集群实例就复制几个,将ID和IP地址改一下。
根据coreos官方的说法,集群中的实例并不是越多越好,这里涉及到了集群中各个节点的通讯,为保证基于raft的强一致性,多节点相应的通讯成本会增加。已8核服务器为例子,建议最少不可少于3个实例,最多不超过7个实例,以5个节点为最佳配置。同时在8核服务,3个节点的集群下,写操作万次/秒,读操作十数万次/秒。根据这些测试报告,在做出相应的改动。
5. 备注
如果是集群方式部署,因为是新建模式,第一个启动的为主节点(leader),如果遇到不输出日志的情况,可能是因为集群下的其他节点没有启动,如果是按照服务部署的话,可用systemctl status etcd查看其状态,也可用journalctl -xe命令查看其日志。
当有所有节点启动完毕后,可使用一下命令查看其状态
#集群各节点健康状态
etcdctl cluster-health
#集群成员
etcdctl member list
linux默认安装的为V2版本,经过测试,如果你的客户端通过clientv3将数据写入,那么你在v2的服务端上是获取不到了,反之而是。根据官方文档的描述,v3版本的性能已经大大的超越了v2版本,并且已发布了稳定版本,所以也就没有必要使用v2了,而且v3版本已经兼容了v2版本。那么linux端如果想切换为v3版本,配置一下环境变量即可
EXPORT ETCDCTL_API=3