etcd
是一个高可用的分布式键值(key-value)数据库,etcd基于Go语言实现,在分布式系统被广泛应用。它的设计目标是为分布式系统提供一个高可用、强一致性且易于使用的基础组件。
安装
这里直接使用官方已经编译好的。
指定版本,并使用curl下载:
ETCD_VER=v3.4.13
DOWNLOAD_URL=https://github.com/etcd-io/etcd/releases/download
curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
然后解压到/usr/local/etcd/
:
mkdir /usr/local/etcd/
tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /usr/local/etcd --strip-components=1
查看版本:
/usr/local/etcd/etcd -version
/usr/local/etcd/etcdctl version
加入环境变量
添加到环境变量
vim /etc/profile.d/etcd.sh
加入以下内容:
PATH=$PATH:/usr/local/etcd
export PATH
使环境变量立即生效:
source /etc/profile
配置
这里需要创建etcd
的配置文件和数据目录。
mkdir -p /var/lib/etcd
chmod 700 /var/lib/etcd
创建配置文件/etc/etcd/etcd.yml
:
vi /etc/etcd/etcd.yml
填入以下内容:
data-dir: /var/lib/etcd
listen-client-urls: http://0.0.0.0:2379
advertise-client-urls: http://0.0.0.0:2379
配置 systemd
创建系统服务配置文件/etc/systemd/system/etcd.service
,内容如下:
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/local/etcd/etcd --config-file /etc/etcd/etcd.yml
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
重新加载并启动 etcd 服务
配置好系统服务配置文件后,可以使用systemctl
来管理etcd
服务了。
# 重新加载 systemd 管理器配置
sudo systemctl daemon-reload
# 启动 etcd 服务
sudo systemctl start etcd
# 设置 etcd 服务开机自启
sudo systemctl enable etcd
# 检查 etcd 服务状态
sudo systemctl status etcd
验证
启动服务后,可以使用etcdctl
来验证。比如 put 一个键值对后,再取出。
etcdctl put foo bar
etcdctl get foo
最后
Etcd
是一个开源的、分布式的键值存储系统,专为分布式系统设计,以解决配置共享和服务发现等问题。它诞生于 CoreOS,后成为云原生计算基金会(CNCF)的一部分,这也奠定了它在现代分布式系统中的重要地位。Etcd 具有出色的可靠性和一致性,借助 Raft 共识算法,能确保数据在集群内各节点间保持一致,即使部分节点出现故障,整个系统仍能稳定运行。同时,它还支持 TLS 加密和访问控制,保障数据传输和存储的安全性。
Etcd
在众多领域都有广泛应用,是分布式系统的关键组件。在容器编排系统 Kubernetes 中,Etcd 作为其数据存储核心,存储着集群的所有关键配置和状态信息,支撑着整个集群的高效运转。在微服务架构里,Etcd 可用于服务发现和配置管理,服务实例将自身信息注册到 Etcd,其他服务通过它发现可用实例;应用程序也能从 Etcd 获取和更新配置。此外,Etcd 还能实现分布式锁和选主功能,为分布式系统的协调和同步提供支持。