ETCD 是一个分布式的键值存储系统,主要用于分布式系统中的配置共享和服务发现。它是 Kubernetes 的核心组件之一。以下是关于在 Linux 下安装、配置和使用 ETCD 的指南。
1. 安装 ETCD
在 Linux 系统上安装 ETCD 有几种方式,可以通过包管理器安装或者直接下载二进制文件。
1.1 通过包管理器安装
对于基于 Debian 的系统(如 Ubuntu):
sudo apt-get update
sudo apt-get install etcd
对于基于 RedHat 的系统(如 CentOS):
sudo yum install etcd
1.2 通过二进制文件安装
-
下载 ETCD 二进制文件:
首先,检查最新版本的 ETCD 并下载:
wget https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-linux-amd64.tar.gz
-
解压并安装:
tar xvf etcd-v3.5.0-linux-amd64.tar.gz
sudo mv etcd-v3.5.0-linux-amd64/etcd* /usr/local/bin/
-
验证安装:
etcd --version
2. 配置 ETCD
ETCD 的配置可以通过配置文件或者命令行参数传递。配置文件通常位于 /etc/etcd/etcd.conf
。
2.1 配置文件示例
创建或编辑 /etc/etcd/etcd.conf
文件:
[Member]
name: 'default'
data-dir: '/var/lib/etcd/default.etcd'
listen-peer-urls: 'http://localhost:2380'
listen-client-urls: 'http://localhost:2379'[Clustering]
initial-advertise-peer-urls: 'http://localhost:2380'
advertise-client-urls: 'http://localhost:2379'
initial-cluster: 'default=http://localhost:2380'
initial-cluster-token: 'etcd-cluster'
initial-cluster-state: 'new'
2.2 命令行参数示例
启动 ETCD 时,可以直接使用命令行参数进行配置:
etcd --name default \ --data-dir /var/lib/etcd/default.etcd \ --listen-peer-urls http://localhost:2380 \ --listen-client-urls http://localhost:2379 \ --initial-advertise-peer-urls http://localhost:2380 \ --advertise-client-urls http://localhost:2379 \ --initial-cluster default=http://localhost:2380 \ --initial-cluster-token etcd-cluster \ --initial-cluster-state new
3. 启动 ETCD
ETCD 可以作为系统服务启动,也可以手动启动。
3.1 作为系统服务启动
-
创建 systemd 服务文件
/etc/systemd/system/etcd.service
:[Unit] Description=etcd key-value store Documentation=https://github.com/coreos/etcd After=network.target [Service] Type=notify ExecStart=/usr/local/bin/etcd --config-file=/etc/etcd/etcd.conf Restart=always RestartSec=5s LimitNOFILE=40000 [Install] WantedBy=multi-user.target
-
启动服务并设置开机自启动:
sudo systemctl daemon-reload
sudo systemctl start etcd
sudo systemctl enable etcd
3.2 手动启动
直接在终端中运行 etcd
命令:
etcd --config-file=/etc/etcd/etcd.conf
4. 使用 ETCD
4.1 基本命令
-
写入键值:
etcdctl put foo "Hello, ETCD"
-
读取键值:
etcdctl get foo
-
列出所有键值:
etcdctl get "" --prefix --keys-only
-
删除键值:
etcdctl del foo
-
监控键值变化:
etcdctl watch foo
4.2 集群相关命令
-
查看集群状态:
etcdctl endpoint status --write-out=table
-
查看集群成员:
etcdctl member list
5. 进阶配置
- 数据持久化:确保
data-dir
参数指向一个稳定的存储位置,以保证ETCD在重启或崩溃后能够恢复数据。 - 安全性:使用TLS证书配置
client-transport-security
和peer-transport-security
来加密通信。