一、简介
etcd 是一个由 CoreOS 团队发起的开源项目,它用 Go 语言实现,是一个分布式、高可用的键值存储系统。etcd 采用 Raft 算法,确保了数据的强一致性和高可用性,即使集群中有部分节点发生故障,也能保持服务的正常运行。etcd 提供了简单、可靠、快速的键值存储服务,同时支持分布式锁、leader 选举等协作机制,使得分布式系统的协作变得简单可靠。
etcd 在分布式系统中扮演着重要的角色,常用于服务注册与发现、发布订阅消息等场景。例如,服务进程可以在 etcd 中注册自己的位置,客户端应用进程则可以通过查询 etcd 来获取服务的位置。此外,etcd 还可以监控集群中多个节点的状态,维护负载均衡节点表,实现请求的轮询转发。
二、部署 Etcd
打开 Docker Desktop,切换到 Linux 容器。然后在 PowerShell 执行下面命令,即可启动一个 Etcd 服务。这里安装的是 v3.5.13 Tag版本,如果需要安装其他或者最新版本,可以到 GCR 进行查找。
docker run -d `-p 2379:2379 `-p 2380:2380 `--restart always `-v C:\ProgramDatas\Docker\Containers\etcd-v3.5.13:/etcd-data `--name etcd-v3.5.13 `gcr.io/etcd-development/etcd:v3.5.13 `/usr/local/bin/etcd `--name s1 `--data-dir /etcd-data `--listen-client-urls http://0.0.0.0:2379 `--advertise-client-urls http://0.0.0.0:2379 `--listen-peer-urls http://0.0.0.0:2380 `--initial-advertise-peer-urls http://0.0.0.0:2380 `--initial-cluster s1=http://0.0.0.0:2380 `--initial-cluster-token tkn `--initial-cluster-state new `--log-level info `--logger zap `--log-outputs stderr
-参数 --restart always 在容器退出时总是重启容器。
-参数 --data-dir /etcd-data 指定 Etcd 的数据目录。
-参数 -v C:\ProgramDatas\Docker\Containers\etcd-v3.5.13:/etcd-data 将容器内的 /etcd-data 数据目录映射到物理机的 C:\ProgramDatas\Docker\Containers\etcd-v3.5.13 目录下。
-参数 /usr/local/bin/etcd 启动容器后执行的命令,其后面的 --XXX 为命令的参数。
三、连接 Etcd
使用 Etcd 客户端 Etcd Assistant 进行连接,并创建了一个 key/val 进行测试,可以成功。如下图: