【ETCD】【实操篇(二)】如何从源码编译并在window上搭建etcd集群?

news/2024/12/24 3:54:25/

要在 Windows 上编译 etcdetcdctl 工具,并使用 bat 脚本启动 etcd 集群,首先需要准备好开发环境并确保依赖项正确安装。下面是从 etcd 3.5 源码开始编译和启动 etcd 集群的详细步骤:

目录

      • 1. 安装 Go 环境
      • 2. 获取 etcd 源码
      • 3. 编译 etcdetcdctl
      • 4. 创建 Windows 启动脚本(bat 文件)
      • 5. 启动 etcd 集群
      • 6. 验证 etcd 集群
      • 7.向集群中添加数据
      • 8.总结

1. 安装 Go 环境

首先,确保你已经安装了 Go 环境。etcd 是用 Go 编写的,因此需要 Go 编译器来构建代码。

  • 从 Go 官网 下载并安装最新版本的 Go。
  • 设置 Go 环境变量:
    • 将 Go 的 bin 目录添加到 PATH 中(例如:C:\Go\bin)。
    • 设置 GOPATHGOMOD 环境变量(例如:GOPATH=C:\go_workspace)。

etcd__11">2. 获取 etcd 源码

通过 Git 克隆 etcd 的 GitHub 仓库,选择 release-3.5 分支来编译。

git clone --branch release-3.5 https://github.com/etcd-io/etcd.git
cd etcd

etcd__etcdctl_20">3. 编译 etcdetcdctl

  • 安装编译 etcd 所需的依赖。进入 etcd 目录后,运行以下命令来编译 etcdetcdctl 工具。
go mod tidy  # 安装依赖
cd server # 进入server目录
go build -o etcd.exe main.go  # 编译 etcdcd ../etcdctl  # 进入etcdctl目录
go build -o etcdctl.exe main.go  # 编译 etcdctl

生成 etcd.exeetcdctl.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.etcd3REM 启动第一个 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 debugREM 启动第二个 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 debugREM 启动第三个 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 debugecho All etcd instances started with debug logging. Press any key to exit...
pausepause

保存此文件为 start_etcd_cluster.bat。该脚本会启动一个3个节点的 etcd 集群。

etcd__97">5. 启动 etcd 集群

  • 双击 start_etcd_cluster.bat 文件启动 etcd 集群。如果一切配置正确,etcd 应该会启动并监听 localhost:2379localhost:2383localhost:2384(客户端)和 localhost:2380localhost:2381localhost:2382(集群)。

    在这里插入图片描述

etcd__104">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 源码开始编译 etcdetcdctl 工具,并使用 .bat 脚本在 Windows 上启动 etcd 集群的步骤。希望这些步骤能帮助你顺利地编译和部署 etcd。如何有什么疑问,可以在下面留言交流。


http://www.ppmy.cn/news/1557633.html

相关文章

Java爬虫大冒险:如何征服1688商品搜索之巅

在这个信息爆炸的时代,数据就是力量。对于电商平台而言,数据更是金矿。今天,我们要踏上一场Java爬虫的冒险之旅,目标是征服1688这个B2B电商巨头,获取按关键字搜索的商品信息。这不仅是技术的挑战,更是智慧的…

Unity动态读取外部图片转Texture2D,内存过大问题解决方案

问题描述 加载原始图片2.63M的图片,分辨率为3023*4032,占用内存108.5M 加载原始图片12.6 M的图片,分辨率为6000*8000,占用内存427.2M 太恐怖了吧 解决方案 1.加载完图片,等比缩放,宽高改为1024或者512以下 1024占用5.2M,512占用1.3M,相比小了很多 2.原始Texture2…

基于LabVIEW的USRP信道测量开发

随着无线通信技术的不断发展,基于软件无线电的设备(如USRP)在信道测量、无线通信测试等领域扮演着重要角色。通过LabVIEW与USRP的结合,开发者可以实现信号生成、接收及信道估计等功能。尽管LabVIEW提供了丰富的信号处理工具和图形…

CUDA从入门到精通(六)——CUDA编程模型(二)

1. 核函数类型限定符 CUDA 核函数的常用函数类型限定符及其相关信息的表格&#xff1a; 限定符执行端调用方式备注__global__设备端&#xff08;GPU&#xff09;从主机代码使用 <<<...>>> 调用核函数用于声明核函数&#xff0c;在 GPU 上执行。只能从主机代…

Linux快速入门-兼期末快速复习使用

Linux快速入门-兼期末快速复习使用 一小时快速入门linux快速一&#xff1a;Linux操作系统概述1. Linux概述1.1 定义与特点1.2 起源与发展1.3 Linux结构1.4 版本类别1.5 应用和发展方向 2. 安装与启动2.1 Windows下VMware安装Linux2.2 安装Ubuntu 快速二&#xff1a;linux的桌面…

怎么样保持mysql和redis数据一致性

保持 MySQL 和 Redis 数据的一致性是一个常见的挑战,因为 MySQL 是传统的关系型数据库,而 Redis 是内存数据库,通常用于缓存和高性能存储。这两者的数据更新方式不同,特别是当 Redis 用作缓存时,可能会存在缓存和数据库之间的数据不一致问题。为了保持数据一致性,通常可以…

sqlserver新建用户并分配对视图的只读权限

1、--创建了一个数据库角色&#xff0c;名称为:[seeview] exec sp_addrole seeview 2、--指定可查看的视图 GRANT SELECT ON view_getInventoryInfo TO seeview --GRANT SELECT ON view_getInventoryInfo2 TO seeview 3、--添加只允许访问指定视图的用户: exec sp_addlogin ‘登…

在 Ubuntu 上安装 Muduo 网络库的详细指南

在 Ubuntu 上安装 Muduo 网络库的详细指南 首先一份好的安装教程是非常重要的 C muduo网络库知识分享01 - Linux平台下muduo网络库源码编译安装-CSDN博客 像这篇文章就和shit一样&#xff0c;安装到2%一定会卡住&#xff0c;如果你不幸用了这个那真是遭老罪了 环境&#xf…