实验环境:
RHEL9:
node1:10.90.7.101
node2:10.90.7.102
node3:10.90.7.103
etcd 3.6.11
##1.add user etcd
useradd -r -s /sbin/nologin etcd
##2.download etcd
curl -LOC - https://github.com/etcd-io/etcd/releases/download/v3.6.11/etcd-v3.6.11-linux-amd64.tar.gz
cd /opt
tar xvf /tmp/etcd-v3.6.11-linux-amd64.tar.gz
ln -s /opt/etcd-v3.6.11-linux-amd64 /opt/etcd
mkdir -p /var/lib/etcd
chown -R etcd:etcd /var/lib/etcd
chmod -R 700 /var/lib/etcd
mkdir -p /etc/etcd
chown -R etcd:etcd /etc/etcd
chmod -R 700 /etc/etcd
以下为node1的vi /etc/etcd/etcd.conf
对应的node2,node3修改对应的ETCD_NAME和ip
[member]
ETCD_NAME=infisical-etcd-01
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
#ETCD_WAL_DIR=""
#ETCD_SNAPSHOT_COUNT="10000"
#ETCD_HEARTBEAT_INTERVAL="100"
#ETCD_ELECTION_TIMEOUT="1000"
ETCD_LISTEN_PEER_URLS="http://10.90.7.101:2380"
ETCD_LISTEN_CLIENT_URLS="http://10.90.7.101:2379,http://127.0.0.1:2379"
#ETCD_MAX_SNAPSHOTS="5"
#ETCD_MAX_WALS="5"
#ETCD_CORS=""
#[cluster]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.90.7.101:2380"
if you use different ETCD_NAME (e.g. test), set ETCD_INITIAL_CLUSTER value for this name, i.e. "test=http://..."
ETCD_INITIAL_CLUSTER="infisical-etcd-01=http://10.90.7.101:2380,infisical-etcd-02=http://10.90.7.102:2380,infisical-etcd-03=http://10.90.7.103:2380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="infisical-etcd-cluster"
ETCD_ADVERTISE_CLIENT_URLS="http://10.90.7.101:2379"
#ETCD_DISCOVERY=""
#ETCD_DISCOVERY_SRV=""
#ETCD_DISCOVERY_FALLBACK="proxy"
#ETCD_DISCOVERY_PROXY=""
#ETCD_ENABLE_V2="true"
#ETCD_STRICT_RECONFIG_CHECK="false"
#ETCD_AUTO_COMPACTION_RETENTION="0"
#[proxy]
#ETCD_PROXY="off"
#ETCD_PROXY_FAILURE_WAIT="5000"
#ETCD_PROXY_REFRESH_INTERVAL="30000"
#ETCD_PROXY_DIAL_TIMEOUT="1000"
#ETCD_PROXY_WRITE_TIMEOUT="5000"
#ETCD_PROXY_READ_TIMEOUT="0"
#[security]
#ETCD_CERT_FILE=""
#ETCD_KEY_FILE=""
#ETCD_CLIENT_CERT_AUTH="false"
#ETCD_TRUSTED_CA_FILE=""
#ETCD_AUTO_TLS="false"
#ETCD_PEER_CERT_FILE=""
#ETCD_PEER_KEY_FILE=""
#ETCD_PEER_CLIENT_CERT_AUTH="false"
#ETCD_PEER_TRUSTED_CA_FILE=""
#ETCD_PEER_AUTO_TLS="false"
#[logging]
#ETCD_DEBUG="false"
examples for -log-package-levels etcdserver=WARNING,security=DEBUG
#ETCD_LOG_PACKAGE_LEVELS=""
vi /etc/systemd/system/etcd.service
说明一下,从官方github复制过来,但需要添加EnvironmentFile=/etc/etcd/etcd.conf这一行,及相应的路径
Unit
Description=etcd key-value store
Documentation=https://github.com/etcd-io/etcd/blob/main/contrib/systemd/etcd.service
After=network-online.target local-fs.target remote-fs.target time-sync.target
Wants=network-online.target local-fs.target remote-fs.target time-sync.target
Service
User=etcd
Type=notify
EnvironmentFile=/etc/etcd/etcd.conf
Environment=ETCD_DATA_DIR=/var/lib/etcd
Environment=ETCD_NAME=%m
ExecStart=/opt/etcd/etcd
Restart=always
RestartSec=10s
LimitNOFILE=40000
Install
WantedBy=multi-user.target
chmod 644 /etc/systemd/system/etcd.service
systemctl daemon-reload
systemctl enable etcd
systemctl start etcd
etcdctl endpoint health --cluster
http://10.90.7.101:2379 is healthy: successfully committed proposal: took = 2.458968ms
http://10.90.7.102:2379 is healthy: successfully committed proposal: took = 8.408295ms
http://10.90.7.103:2379 is healthy: successfully committed proposal: took = 8.73806ms