以下是一个示例etcd服务文件,其中使用了EnvironmentFile选项来加载配置文件内容,同时不使用SSL/TLS加密方式:
- etcd服务文件 /etc/systemd/system/etcd.service
[Unit]
Description=etcd service
After=network.target
[Service]
Type=notify
Restart=always
RestartSec=5s
LimitNOFILE=65536
EnvironmentFile=/etc/etcd.conf
ExecStart=/usr/local/bin/etcd \
--name=$ETCD_NAME \
--data-dir=$ETCD_DATA_DIR \
--listen-client-urls=http://0.0.0.0:2379 \
--advertise-client-urls=http://$ETCD_ADVERTISE_CLIENT_URLS:2379 \
--listen-peer-urls=http://0.0.0.0:2380 \
--initial-advertise-peer-urls=http://$ETCD_INITIAL_ADVERTISE_PEER_URLS:2380 \
--initial-cluster-token=$ETCD_INITIAL_CLUSTER_TOKEN \
--initial-cluster-state=new \
--initial-cluster="$ETCD_INITIAL_CLUSTER"
[Install]
WantedBy=multi-user.target
2.etcd配置文件 /etc/etcd.conf
# etcd 配置文件
# 监听地址和端口号
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
# 客户端连接地址和端口号
ETCD_ADVERTISE_CLIENT_URLS="192.168.1.101"
# 集群内部通信地址和端口号
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
# 初始集群成员及其对应的通信地址和端口号
ETCD_INITIAL_CLUSTER="my-etcd-01=http://192.168.1.101:2380,my-etcd-02=http://192.168.1.102:2380,my-etcd-03=http://192.168.1.103:2380"
# 初始集群状态(new,existing)
ETCD_INITIAL_CLUSTER_STATE=new
# 初始集群令牌
ETCD_INITIAL_CLUSTER_TOKEN=my-etcd-token
# 数据存储目录
ETCD_DATA_DIR="/var/lib/etcd"
# 服务名称
ETCD_NAME="my-etcd-01"
在上述示例中,使用了EnvironmentFile选项来加载配置文件/etc/etcd.conf中的所有环境变量。这样,在启动etcd进程时就可以直接使用这些环境变量,并将它们传递给etcd进程。
需要注意的是,在修改配置文件/etc/etcd.conf后,需要重新加载系统服务以使其生效。可以通过执行以下命令来实现:
sudo systemctl daemon-reload
总之,在使用EnvironmentFile选项时,systemd会自动从指定路径中加载所有环境变量,并将它们传递给etcd进程。