1. systemd 部署 etcd
直接使用命令行启动 etcd 服务不便于运维管理。在系统上安装服务,可以使用 systemd 来托管服务,能够做到服务进程管理以及开机启动等功能。
1.1. 确认文件路径
可以将二进制文件移动到一个规划的目录中,或者解压后不移动也可以,但是需要明确二进制文件的绝对路径,后面步骤中服务启动会使用该路径。
例如,基于个人习惯及便于命令执行将可执行的二进制文件移动到指定目录中
cp etcd etcdctl /usr/local/bin/
准备配置文件和数据目录
mkdir -p /etc/etcd
mkdir -p /data/etcd
1.2. 准备 systemd 服务文件
准备 systemd 服务配置文件
systemd 系统服务的基础配置内容。可能需要调整的内容主要是 ExecStart=/usr/local/bin/etcd
和 EnvironmentFile=/etc/etcd/etcd.conf
,根据实际准备的路径配置即可。
cat /usr/lib/systemd/system/etcd.service
参考内容如下:
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
EnvironmentFile=/etc/etcd/etcd.conf
ExecStart=/usr/local/bin/etcd
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
1.3. 准备配置文件
etcd 启动参数调整可以分为两种,一种是在 etcd 命令行参数中指定,另外一种是通过环境变量的方式导致。这里选择使用环境变量的方式导入配置。
在 systemd 启动的配置中指定环境变量配置文件 EnvironmentFile=/etc/etcd/etcd.conf
cat /etc/etcd/etcd.conf
配置文件内容
ETCD_NAME="etcd01"
ETCD_DATA_DIR="/data/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://10.100.0.100:2380"
ETCD_LISTEN_CLIENT_URLS="http://10.100.0.100:2379,http://127.0.0.1:2379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.100.0.100:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://10.100.0.100:2379"
ETCD_INITIAL_CLUSTER="etcd01=http://10.100.0.100:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
1.4. 运行服务
重载服务配置,使 /etc/etcd/etcd.conf
配置文件生效
systemctl daemon-reload
启动服务,使 etcd 作为系统服务运行
systemctl start etcd
配置 systemd 开机启动 etcd 服务
systemctl enable etcd
1.5. 查看集群状态
查看集群状态
etcdctl endpoint status --cluster -w table
+--------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |
+--------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| http://10.100.0.100:2379 | a724bcfdc0f9fe8a | 3.4.14 | 22 MB | true | false | 4 | 9013 | 9013 | |
+--------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
正常的集群没有 ERROR 异常,而且有一个节点的 IS LEADER
的值为 true
1.6. 读写数据
写入数据
$ etcdctl put systemd-key systemd-values
OK
读取数据
etcdctl get systemd-key
systemd-key
systemd-values