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

news2024/12/21 10:00:08

要在 Windows 上编译 etcdetcdctl 工具,并使用 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)。
    • 设置 GOPATHGOMOD 环境变量(例如:GOPATH=C:\go_workspace)。

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 目录后,运行以下命令来编译 etcdetcdctl 工具。
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.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.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:2379localhost:2383localhost:2384(客户端)和 localhost:2380localhost:2381localhost: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 源码开始编译 etcdetcdctl 工具,并使用 .bat 脚本在 Windows 上启动 etcd 集群的步骤。希望这些步骤能帮助你顺利地编译和部署 etcd。如何有什么疑问,可以在下面留言交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2263188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

双指针---和为s的两个数字

这里写自定义目录标题 题目链接问题分析代码解决执行用时 题目链接 购物车内的商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况,返回任一结果即可。 问题分析 暴⼒解法,会超时 (两层…

处理 Audio PCM 数据24位偏移问题

在音频处理过程中,我们有时会遇到特殊的问题,例如某些WAV文件的PCM数据发生了位移,导致声音播放异常。最近,我遇到了一个具体的问题,48000,32bit,8ch的PCM数据每32位(4字节&#xff…

【大模型】GraphRAG技术原理

核心概念 GraphRAG 的核心在于用大模型构建知识图谱知识图谱聚类社区化RAG RAG就是输入(问题知识)到大模型 1-大模型自动从海量数据中构建知识图谱(提取合并实体关系) 2-聚类算法从知识图谱中聚类社区并生成社区摘要 3-输入问题…

Vue与React:前端框架的巅峰对决

文章目录 一、引言(一)前端框架发展现状简述 二、Vue 与 React 框架概述(一)Vue.js 简介(二)React.js 简介 三、开发效率对比(一)Vue 开发效率分析(二)React …

Ubuntu下C语言操作kafka示例

目录 安装kafka: 安装librdkafka consumer Producer 测试运行 安装kafka: Ubuntu下Kafka安装及使用_ubuntu安装kafka-CSDN博客 安装librdkafka github地址:GitHub - confluentinc/librdkafka: The Apache Kafka C/C library $ apt in…

线程池ForkJoinPool详解

由一道算法题引发的思考 算法题:如何充分利用多核CPU的性能,快速对一个2千万大小的数组进行排序? 这道算法题可以拆解来看: 1)首先这是一道排序的算法题,而且是需要使用高效的排序算法对2千万大小的数组…

基于多尺度动态卷积的图像分类

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

[Linux] 信号保存与处理

🪐🪐🪐欢迎来到程序员餐厅💫💫💫 主厨:邪王真眼 主厨的主页:Chef‘s blog 所属专栏:青果大战linux 总有光环在陨落,总有新星在闪烁 信号的保存 下面的概…

计算机网络-GRE Over IPSec实验

一、概述 前情回顾:上次基于IPsec VPN的主模式进行了基础实验,但是很多高级特性没有涉及,如ike v2、不同传输模式、DPD检测、路由方式引入路由、野蛮模式等等,以后继续学习吧。 前面我们已经学习了GRE可以基于隧道口实现分支互联&…

进网许可认证、交换路由设备检测项目更新25年1月起

实施时间 2025年1月1日起实施 涉及设备范围 核心路由器、边缘路由器、以太网交换机、三层交换机、宽带网络接入服务器(BNAS) 新增检测依据 GBT41266-2022网络关键设备安全检测方法交换机设备 GBT41267-2022网络关键设备安全技术要求交换机设备 GB/…

用C#(.NET8)开发一个NTP(SNTP)服务

完整源码,附工程下载,工程其实也就下面两个代码。 想在不能上网的服务器局域网中部署一个时间服务NTP,当然系统自带该服务,可以开启,本文只是分享一下该协议报文和能跑的源码。网上作为服务的源码不太常见,…

Connection lease request time out 问题分析

Connection lease request time out 问题分析 问题背景 使用apache的HttpClient,我们知道可以通过setConnectionRequestTimeout()配置从连接池获取链接的超时时间,而Connection lease request time out正是从连接池获取链接超时的报错,这通常…

【课程论文系列实战】:随机对照实验驱动的电商落地页优化

数据与代码见文末 摘要 随机对照试验(Randomized Controlled Trial,RCT)被认为是因果推断的“金标准”方法。通过随机分配实验参与者至不同组别,确保了组间可比性,RCT能够有效地消除样本选择偏差和混杂变量问题。本文…

UML 建模实验

文章目录 实验一 用例图一、安装并熟悉软件EnterpriseArchitect16二、用例图建模 实验二 类图、包图、对象图类图第一题第二题 包图对象图第一题第二题 实验三 顺序图、通信图顺序图银行系统学生指纹考勤系统饮料自动销售系统“买到饮料”“饮料已售完”“无法找零”完整版 通信…

高质量翻译如何影响软件用户体验 (UX)

在软件开发领域,用户体验 (UX) 是决定产品成败的关键因素之一。一个流畅、吸引人且直观的用户体验可以决定一款软件的成功与否。在影响优秀用户体验的众多因素中,高质量翻译尤为重要,尤其是在当今全球化的市场环境中。确保软件为不同语言和文…

ArcGIS Pro 3.4新功能2:Spatial Analyst新特性,密度、距离、水文、太阳能、表面、区域分析

Spatial Analyst 扩展模块在 ArcGIS Pro 3.4 中引入了新功能和增强功能。此版本为您提供了用于表面和区域分析的新工具以及改进的密度和距离分析功能,多种用于水文分析的工具性能的提高,一些新的太阳能分析功能。 目录 1.密度分析 2.距离分析 3.水文…

Linux C 程序 【05】异步写文件

1.开发背景 Linux 系统提供了各种外设的控制方式,其中包括文件的读写,存储文件的介质可以是 SSD 固态硬盘或者是 EMMC 等。 其中常用的写文件方式是同步写操作,但是如果是写大文件会对 CPU 造成比较大的负荷,采用异步写的方式比较…

凯酷全科技抖音电商服务的卓越践行者

在数字经济蓬勃发展的今天,电子商务已成为企业增长的新引擎。随着短视频平台的崛起,抖音作为全球领先的短视频社交平台,不仅改变了人们的娱乐方式,也为品牌和商家提供了全新的营销渠道。厦门凯酷全科技有限公司(以下简…

精准提升:从94.5%到99.4%——目标检测调优全纪录

🚀 目标检测模型调优过程记录 在进行目标检测模型的训练过程中,我们面对了许多挑战与迭代。从初始模型的训练结果到最终的调优优化,每一步的实验和调整都有其独特的思路和收获。本文记录了我在优化目标检测模型的过程中进行的几次尝试&#…

STM8单片机学习笔记·GPIO的片上外设寄存器

目录 前言 IC基本定义 三极管基础知识 单片机引脚电路作用 STM8GPIO工作模式 GPIO外设寄存器 寄存器含义用法 CR1:Control Register 1 CR2:Control Register 2 ODR:Output Data Register IDR:Input Data Register 赋值…