etcd 是一个分布式可靠的键值存储系统,用于分布式系统中最关键的数据,主要特点包括:
-
简单:具有明确的、面向用户的 API(gRPC)
-
安全:自动 TLS 支持,并可选的客户端证书认证
-
快速:经过基准测试,支持每秒 10,000 次写入
-
可靠:使用 Raft 算法进行适当分布
etcd 使用 Go 语言编写,并利用 Raft 共识算法来管理高度可用的复制日志。
许多公司在生产环境中使用 etcd,开发团队在关键部署场景中支持它,etcd 经常与 Kubernetes、locksmith、vulcand、Doorman 等应用程序配合使用。通过严格的健壮性测试,进一步确保了系统的可靠性。
一、在linux下使用二进制安装单节点etcd
1、下载etcd二进制包
首先,你需要从etcd的官方GitHub仓库或其他可信源下载etcd的二进制包。确保选择与你的系统架构(如linux-amd64)和etcd版本(如3.4.14)相匹配的包。
使用wget命令下载,例如:
cd /soft
wget https://github.com/etcd-io/etcd/releases/download/v3.4.14/etcd-v3.4.14-linux-amd64.tar.gz
2、解压etcd二进制包
下载完成后,使用tar命令解压下载的压缩包。
tar -zxvf etcd-v3.4.14-linux-amd64.tar.gz
解压后,你会看到一个包含etcd二进制文件和相关文件的目录。
3、移动etcd二进制文件
为了方便使用,你可以将etcd二进制文件移动到系统的某个可执行路径下,如
/usr/local/bin
mv etcd-v3.4.14-linux-amd64/etcd /usr/local/bin/
注意:如果你需要etcdctl或其他相关工具,也可以将它们移动到相同的路径下。
4、启动etcd
使用命令行启动etcd。你可以通过指定不同的命令行参数来更改etcd的行为。
etcd --data-dir=/var/lib/etcd/data --listen-client-urls=http://0.0.0.0:2379 --advertise-client-urls=http://0.0.0.0:2379
--data-dir
指定了etcd的数据目录,--listen-client-urls
和--advertise-client-urls
指定了etcd监听的客户端URL。
5、测试etcd
使用etcdctl或其他工具来测试etcd是否正常运行。例如,你可以使用etcdctl来设置一个键值对,并检查其是否已经被正确设置。
# 写入一个键为foo 值为 hello world数据
[root@localhost etcd]# ./etcdctl put foo "hello world"
OK
此外也可以直接通过运行下面的脚本进行etcd下载和安装
运行下面的脚本来下载etcd包
ETCD_VER=v3.4.32# choose either URL
GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
DOWNLOAD_URL=${GITHUB_URL}rm -f /home/etcd-${ETCD_VER}-linux-amd64.tar.gz
rm -rf /home/etcd && mkdir -p /home/etcdcurl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar xzvf /home/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /home/etcd --strip-components=1
rm -f /home/etcd-${ETCD_VER}-linux-amd64.tar.gz/home/etcd/etcd --version
/tmp/etcd/etcdctl version
运行并启动etcd
# start a local etcd server
/home/etcd/etcd --listen-client-urls 'http://0.0.0.0:2379' --advertise-client-urls 'http://0.0.0.0:2379'# write,read to etcd
/home/etcd/etcdctl --endpoints=localhost:2379 put foo bar
/home/etcd/etcdctl --endpoints=localhost:2379 get foo