Skip to content

1.下载

wget https://github.com/etcd-io/etcd/releases/download/v3.4.13/etcd-v3.4.13-linux-amd64.tar.gz

2.安装

cp etcd etcdctl /usr/bin/



#firewall and selinux
systemctl stop firewalld.service
systemctl disable firewalld.service


sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux
setenforce 0
cp etcd etcdctl /usr/bin/



#firewall and selinux
systemctl stop firewalld.service
systemctl disable firewalld.service


sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux
setenforce 0

3.配置文件

bash
#创建数据目录
mkdir -p /data/etcd_data
chmod -R etcd. /data/etcd_data

# 创建用户和用户组
groupadd etcd;
useradd -c "Etcd user" -g etcd -s /sbin/nologin -r etcd;

[root@localhost etcd_data]# cat etcd.conf 
ETCD_NAME=default
ETCD_DATA_DIR="/data/etcd_data"
ETCD_WAL_DIR="/data/etcd_data/wal"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_AUTO_COMPACTION_RETENTION="1"
ETCD_AUTO_COMPACTION_MODE=periodic
ETCD_MAX_SNAPSHOTS="5"
ETCD_MAX_WALS="5"
ETCD_SNAPSHOT_COUNT="50000"
ETCD_HEARTBEAT_INTERVAL="100"
ETCD_ELECTION_TIMEOUT="1000"
ETCD_MAX_REQUEST_BYTES="10485760"
#创建数据目录
mkdir -p /data/etcd_data
chmod -R etcd. /data/etcd_data

# 创建用户和用户组
groupadd etcd;
useradd -c "Etcd user" -g etcd -s /sbin/nologin -r etcd;

[root@localhost etcd_data]# cat etcd.conf 
ETCD_NAME=default
ETCD_DATA_DIR="/data/etcd_data"
ETCD_WAL_DIR="/data/etcd_data/wal"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_AUTO_COMPACTION_RETENTION="1"
ETCD_AUTO_COMPACTION_MODE=periodic
ETCD_MAX_SNAPSHOTS="5"
ETCD_MAX_WALS="5"
ETCD_SNAPSHOT_COUNT="50000"
ETCD_HEARTBEAT_INTERVAL="100"
ETCD_ELECTION_TIMEOUT="1000"
ETCD_MAX_REQUEST_BYTES="10485760"

4.systemd

bash
[root@localhost etcd_data]# cat /etc/systemd/system/etcd.service 
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
User=etcd
Type=simple
WorkingDirectory=/data/etcd_data
EnvironmentFile=-/data/etcd_data/etcd.conf
ExecStart=/usr/bin/etcd
Restart=on-failure
RestartSec=10s
LimitNOFILE=40000

[Install]
WantedBy=multi-user.target
[root@localhost etcd_data]# cat /etc/systemd/system/etcd.service 
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
User=etcd
Type=simple
WorkingDirectory=/data/etcd_data
EnvironmentFile=-/data/etcd_data/etcd.conf
ExecStart=/usr/bin/etcd
Restart=on-failure
RestartSec=10s
LimitNOFILE=40000

[Install]
WantedBy=multi-user.target
  • 另一个单节点启动方式

[root@localhost etcd_data]# etcd

默认用2379端口接受客户端请求,数据存储路默认为主目录下的default.etcd

  • 第二种,指定参数启动
etcd --listen-client-urls  "http://0.0.0.0:2381" --advertise-client-urls "http://0.0.0.0:2381" --data-dir "/var/lib/etcd/data"
etcd --listen-client-urls  "http://0.0.0.0:2381" --advertise-client-urls "http://0.0.0.0:2381" --data-dir "/var/lib/etcd/data"
  • 第三种,指定配置文件启动,必须是yml格式的
bash
[root@localhost etcd_data]# cat etcd.yml 
ETCD_NAME: default
ETCD_DATA_DIR: /data/etcd_data/
ETCD_LISTEN_CLIENT_URLS: http://0.0.0.0:2379
ETCD_ADVERTISE_CLIENT_URLS: http://0.0.0.0:2379

#启动
etcd --config-file=/data/etcd_data/etcd.yml


#systemd方式

[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
 
[Service]
Type=notify
WorkingDirectory=/opt/etcd-v3.2.6/
# User=etcd
ExecStart=/opt/etcd-v3.2.6/etcd --config-file=/etc/etcd/conf.yml
Restart=on-failure
LimitNOFILE=65536
 
[Install]
WantedBy=multi-user.target
[root@localhost etcd_data]# cat etcd.yml 
ETCD_NAME: default
ETCD_DATA_DIR: /data/etcd_data/
ETCD_LISTEN_CLIENT_URLS: http://0.0.0.0:2379
ETCD_ADVERTISE_CLIENT_URLS: http://0.0.0.0:2379

#启动
etcd --config-file=/data/etcd_data/etcd.yml


#systemd方式

[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
 
[Service]
Type=notify
WorkingDirectory=/opt/etcd-v3.2.6/
# User=etcd
ExecStart=/opt/etcd-v3.2.6/etcd --config-file=/etc/etcd/conf.yml
Restart=on-failure
LimitNOFILE=65536
 
[Install]
WantedBy=multi-user.target

注意:如果客户端请求端口设置在非2379上,需要指定endpoints参数,因为默认请求下查看的是2379端口下成员状态

  • 查看
bash
[root@localhost etcd_data]# etcdctl --endpoints=http://127.0.0.1:2379 member list --write-out=table
+------------------+---------+---------+-----------------------+---------------------+------------+
|        ID        | STATUS  |  NAME   |      PEER ADDRS       |    CLIENT ADDRS     | IS LEARNER |
+------------------+---------+---------+-----------------------+---------------------+------------+
| 8e9e05c52164694d | started | default | http://localhost:2380 | http://0.0.0.0:2379 |      false |
+------------------+---------+---------+-----------------------+---------------------+------------+


#默认是2379,查看成员信息
etcdctl member list --write-out=table
 
注意:
如果指定了listen-client-urls,则必须同时指定advertise-client-urls,否则会报错
[root@localhost etcd_data]# etcdctl --endpoints=http://127.0.0.1:2379 member list --write-out=table
+------------------+---------+---------+-----------------------+---------------------+------------+
|        ID        | STATUS  |  NAME   |      PEER ADDRS       |    CLIENT ADDRS     | IS LEARNER |
+------------------+---------+---------+-----------------------+---------------------+------------+
| 8e9e05c52164694d | started | default | http://localhost:2380 | http://0.0.0.0:2379 |      false |
+------------------+---------+---------+-----------------------+---------------------+------------+


#默认是2379,查看成员信息
etcdctl member list --write-out=table
 
注意:
如果指定了listen-client-urls,则必须同时指定advertise-client-urls,否则会报错