systemd 部署 etcd¶
直接使用命令行启动 etcd 服务不便于运维管理。在系统上安装服务,可以使用 systemd 来托管服务,能够做到服务进程管理以及开机启动等功能。
确认文件路径¶
可以将二进制文件移动到一个规划的目录中,或者解压后不移动也可以,但是需要明确二进制文件的绝对路径,后面步骤中服务启动会使用该路径。
例如,基于个人习惯及便于命令执行将可执行的二进制文件移动到指定目录中
准备配置文件和数据目录
准备 systemd 服务文件¶
准备 systemd 服务配置文件
systemd 系统服务的基础配置内容。可能需要调整的内容主要是 ExecStart=/usr/local/bin/etcd
和 EnvironmentFile=/etc/etcd/etcd.conf
,根据实际准备的路径配置即可。
参考内容如下:
[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
准备配置文件¶
etcd 启动参数调整可以分为两种,一种是在 etcd 命令行参数中指定,另外一种是通过环境变量的方式导致。这里选择使用环境变量的方式导入配置。
在 systemd 启动的配置中指定环境变量配置文件 EnvironmentFile=/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"
运行服务¶
重载服务配置,使 /etc/etcd/etcd.conf
配置文件生效
启动服务,使 etcd 作为系统服务运行
配置 systemd 开机启动 etcd 服务
查看集群状态¶
查看集群状态
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
读写数据¶
写入数据
读取数据