安装

创建一个两台机器的集群

  • etcd-1: 192.168.255.134
  • etcd-2: 192.168.255.135
# 2台机器都下载并解压缩安装包到/opt/目录下
wget https://github.com/etcd-io/etcd/releases/download/v3.2.25/etcd-v3.2.25-linux-amd64.tar.gz -C /opt/
cd /opt
tar zxvf etcd-v3.2.25-linux-amd64.tar.gz
cd etcd-v3.2.25-linux-amd64

# 2台机器都创建配置文件
mkdir /etc/etcd
vim /etc/etcd/conf.yml
---------------------------------------------------------------------------------------
name: etcd-1
data-dir: /opt/etcd-v3.0.12-linux-amd64/data
listen-client-urls: http://192.168.255.134:2379,http://127.0.0.1:2379
advertise-client-urls: http://192.168.255.134:2379,http://127.0.0.1:2379
listen-peer-urls: http://192.168.255.134:2380
initial-advertise-peer-urls: http://192.168.255.134:2380
initial-cluster: etcd-1=http://192.168.255.134:2380,etcd-2=http://192.168.255.135:2380
initial-cluster-token: etcd-cluster-token
initial-cluster-state: new
---------------------------------------------------------------------------------------
name: etcd-2
data-dir: /opt/etcd-v3.0.12-linux-amd64/data
listen-client-urls: http://192.168.255.135:2379,http://127.0.0.1:2379
advertise-client-urls: http://192.168.255.135:2379,http://127.0.0.1:2379
listen-peer-urls: http://192.168.255.135:2380
initial-advertise-peer-urls: http://192.168.255.135:2380
initial-cluster: etcd-1=http://192.168.255.134:2380,etcd-2=http://192.168.255.135:2380
initial-cluster-token: etcd-cluster-token
initial-cluster-state: new
---------------------------------------------------------------------------------------

etcdctl

cd /opt/etcd-v3.2.25-linux-amd64

# 启动两台机器,形成集群
./etcd --config-file=/etc/etcd/conf.yml >> info.log 2>&1 &

# 查看集群机器列表
etcdctl member list
etcdctl member list -w table
# 查看集群状态
etcdctl --write-out=table --endpoints=192.168.255.134:2379,192.168.255.135:2379 endpoint status

# 添加k-v(如果key存在则会更新)
etcdctl put testkey1 testvalue1
etcdctl put testkey2 testvalue2
# 获取所有的k-v
etcdctl get --from-key ''
# 精确获取k-v
etcdctl get testkey1
# 根据前缀获取k-v列表
etcdctl get test --prefix
# 删除
etcdctl del testkey

设置启动服务

# 2台机器都设置etcd为启动服务
vim /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.25-linux-amd64
# User=etcd
ExecStart=/opt/etcd-v3.2.25-linux-amd64/etcd --config-file=/etc/etcd/conf.yml
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
---------------------------------------------------------------------------------------

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

参考

etcdctl命令

官方demo