要在 Windows 上编译 etcd
及 etcdctl
工具,并使用 bat
脚本启动 etcd 集群,首先需要准备好开发环境并确保依赖项正确安装。下面是从 etcd
3.5 源码开始编译和启动 etcd
集群的详细步骤:
目录
- 1. 安装 Go 环境
- 2. 获取 etcd 源码
- 3. 编译 etcd 和 etcdctl
- 4. 创建 Windows 启动脚本(bat 文件)
- 5. 启动 etcd 集群
- 6. 验证 etcd 集群
- 7.向集群中添加数据
- 8.总结
1. 安装 Go 环境
首先,确保你已经安装了 Go 环境。etcd
是用 Go 编写的,因此需要 Go 编译器来构建代码。
- 从 Go 官网 下载并安装最新版本的 Go。
- 设置 Go 环境变量:
- 将 Go 的
bin
目录添加到PATH
中(例如:C:\Go\bin
)。 - 设置
GOPATH
和GOMOD
环境变量(例如:GOPATH=C:\go_workspace
)。
- 将 Go 的
2. 获取 etcd 源码
通过 Git 克隆 etcd
的 GitHub 仓库,选择 release-3.5
分支来编译。
git clone --branch release-3.5 https://github.com/etcd-io/etcd.git
cd etcd
3. 编译 etcd 和 etcdctl
- 安装编译
etcd
所需的依赖。进入etcd
目录后,运行以下命令来编译etcd
和etcdctl
工具。
go mod tidy # 安装依赖
cd server # 进入server目录
go build -o etcd.exe main.go # 编译 etcd
cd ../etcdctl # 进入etcdctl目录
go build -o etcdctl.exe main.go # 编译 etcdctl
生成 etcd.exe
和 etcdctl.exe
文件
4. 创建 Windows 启动脚本(bat 文件)
在etcd.exe、etcdctl.exe拷贝到D:\data目录下,并且此目录下新建start_etcd_cluster.bat文件。
在 Windows 上启动 etcd
集群需要一个批处理文件 (.bat
) 来启动 etcd
服务。下面是一个简单的 etcd
集群启动脚本示例:
@echo off
REM 设置通用参数
set TOKEN=token-01
set CLUSTER_STATE=new
set NAME_1=machine-1
set NAME_2=machine-2
set NAME_3=machine-3
set HOST_1=127.0.0.1
set HOST_2=127.0.0.1
set HOST_3=127.0.0.1
set PEER_PORT_1=2380
set PEER_PORT_2=2381
set PEER_PORT_3=2382
set CLIENT_PORT_1=2379
set CLIENT_PORT_2=2383
set CLIENT_PORT_3=2384
set CLUSTER=%NAME_1%=http://%HOST_1%:%PEER_PORT_1%,%NAME_2%=http://%HOST_2%:%PEER_PORT_2%,%NAME_3%=http://%HOST_3%:%PEER_PORT_3%
REM 创建目录存储 etcd 数据
mkdir data.etcd1
mkdir data.etcd2
mkdir data.etcd3
REM 启动第一个 etcd 实例
start etcd.exe --data-dir=data.etcd1 --name %NAME_1% ^
--initial-advertise-peer-urls http://%HOST_1%:%PEER_PORT_1% --listen-peer-urls http://%HOST_1%:%PEER_PORT_1% ^
--advertise-client-urls http://%HOST_1%:%CLIENT_PORT_1% --listen-client-urls http://%HOST_1%:%CLIENT_PORT_1% ^
--initial-cluster %CLUSTER% ^
--initial-cluster-state %CLUSTER_STATE% --initial-cluster-token %TOKEN% ^
--log-level debug
REM 启动第二个 etcd 实例
start etcd.exe --data-dir=data.etcd2 --name %NAME_2% ^
--initial-advertise-peer-urls http://%HOST_2%:%PEER_PORT_2% --listen-peer-urls http://%HOST_2%:%PEER_PORT_2% ^
--advertise-client-urls http://%HOST_2%:%CLIENT_PORT_2% --listen-client-urls http://%HOST_2%:%CLIENT_PORT_2% ^
--initial-cluster %CLUSTER% ^
--initial-cluster-state %CLUSTER_STATE% --initial-cluster-token %TOKEN% ^
--log-level debug
REM 启动第三个 etcd 实例
start etcd.exe --data-dir=data.etcd3 --name %NAME_3% ^
--initial-advertise-peer-urls http://%HOST_3%:%PEER_PORT_3% --listen-peer-urls http://%HOST_3%:%PEER_PORT_3% ^
--advertise-client-urls http://%HOST_3%:%CLIENT_PORT_3% --listen-client-urls http://%HOST_3%:%CLIENT_PORT_3% ^
--initial-cluster %CLUSTER% ^
--initial-cluster-state %CLUSTER_STATE% --initial-cluster-token %TOKEN% ^
--log-level debug
echo All etcd instances started with debug logging. Press any key to exit...
pause
pause
保存此文件为 start_etcd_cluster.bat
。该脚本会启动一个3个节点的 etcd
集群。
5. 启动 etcd 集群
-
双击
start_etcd_cluster.bat
文件启动etcd
集群。如果一切配置正确,etcd
应该会启动并监听localhost:2379
、localhost:2383
、localhost:2384
(客户端)和localhost:2380
、localhost:2381
、localhost:2382
(集群)。
6. 验证 etcd 集群
可以先设置环境变量
set ETCDCTL_API=3
set ETCDCTL_ENDPOINTS=http://127.0.0.1:2379,http://127.0.0.1:2383,http://127.0.0.1:2384
ETCDCTL_API=3: 通知etcdctl客户端工具使用v3的api。
ETCDCTL_ENDPOINTS: 设置 etcdctl的集群连接地址信息。
打开命令提示符并使用 etcdctl
工具验证集群状态:
D:\data>etcdctl --endpoints=http://localhost:2379 member list
264ae6bc59e99892, started, machine-1, http://127.0.0.1:2380, http://127.0.0.1:2379, false
8231876619f7abe6, started, machine-3, http://127.0.0.1:2382, http://127.0.0.1:2384, false
ad94f96e205aed4b, started, machine-2, http://127.0.0.1:2381, http://127.0.0.1:2383, false
7.向集群中添加数据
D:\data>etcdctl put key1 value1
OK
8.总结
以上是如何从 etcd
3.5 源码开始编译 etcd
和 etcdctl
工具,并使用 .bat
脚本在 Windows 上启动 etcd
集群的步骤。希望这些步骤能帮助你顺利地编译和部署 etcd
。如何有什么疑问,可以在下面留言交流。