etcd源码流程---调试环境的搭建

2024-05-05 03:28

本文主要是介绍etcd源码流程---调试环境的搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

etcd启动命令:

name必须设置,否则会用default,集群内不同etcd实例的名字应该是唯一的,因为他会有一个map(name->ip)。如果initial-cluster-state设置为new,那么他会创建一个新的clusterid。需要在initial-cluster中指定集群所有节点,否则会报错。然后把一个节点加入到已有的etcd集群则initial-cluster-state要设置为existing,这样就会从集群获取cluster-id,如果设置为new,那么就会创建一个新的clusterid,然后加入的时候就会因为cluster-id不匹配而导致申请加入得到信息被集群忽略掉。加入一个节点必须先调用member add告知集群有一个节点要加入集群,因为源代码中有一个exist集合和local集合,会检测已存在的集群和目标集群数是否相等即检测len(exist)==len(local),不相等则会拒绝该实例的加入.

个人建议是:最好配一个二节点集群,这样的话更加方便的调试leader/follwer:比如leader不动,然后给follower打断点来debug stepFollower函数

go run ./etcdctl/main.go --endpoints 192.168.129.129:2379,30.128.101.96:2379,30.128.101.96:12379  endpoint status --write-out=table
go run ./etcdctl/main.go --endpoints 30.128.101.96:2379 put x z步骤:
1:git 拉取代码,用goland打开,然后设置go版本,等待goland更新索引2:启动etcdserver,下面是启动参数,自己搭建的话更换两台机器的ip就行etcd-1: #假设本机IP是30.128.101.96--advertise-client-urls=http://30.128.101.96:2379
--initial-advertise-peer-urls=http://30.128.101.96:2380
--listen-client-urls=http://30.128.101.96:2379
--listen-peer-urls=http://30.128.101.96:2380
--initial-cluster-state=new 
--initial-cluster=centos=http://192.168.129.129:2380,windows=http://30.128.101.96:2380
--name=windowsetcd-2: #假设本机ip是192.168.129.129 (我用虚拟机搭建的第二台机器)
--advertise-client-urls=http://192.168.129.129:2379
--initial-advertise-peer-urls=http://192.168.129.129:2380
--listen-client-urls=http://192.168.129.129:2379
--listen-peer-urls=http://192.168.129.129:2380
--initial-cluster=centos=http://192.168.129.129:2380,windows=http://30.128.101.96:2380
--name=centos
--initial-cluster-state=new#goland里直接把上面的启动参数配置到程序的命令行参数中就行了,然后就可以愉快的debug了

goland etcdserver启动流程:

图中的–auto-compact-retention=1是用来激活compact线程的,如果没设置此参数,etcd就不会开启compact,从而无法debugcompact

启动etcdserver

etcdctl启动流程:(!!goland可以同时启动多个程序)

因为是代码启动,所以命令行参数不需要写etcdctl

在这里插入图片描述

一些杂记:

etcd put流程:https://juejin.cn/post/7253020765312860216
client通过grpc来和server通信,put操作就是client调用grpcclient的Put方法,然后服务端server再调用对应的put方法

!!!记得在centenos里关闭防火墙,否则外面是连不上2379/2380端口的

不知道为什么,启动三台就不行,启动一台就行。windows启动一台,虚拟机启动一台可以,但是windows同时启动两台在启动虚拟机里的就不行,莫名其妙

这篇关于etcd源码流程---调试环境的搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/960716

相关文章

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

Centos环境下Tomcat虚拟主机配置详细教程

《Centos环境下Tomcat虚拟主机配置详细教程》这篇文章主要讲的是在CentOS系统上,如何一步步配置Tomcat的虚拟主机,内容很简单,从目录准备到配置文件修改,再到重启和测试,手把手带你搞定... 目录1. 准备虚拟主机的目录和内容创建目录添加测试文件2. 修改 Tomcat 的 server.X

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹

Spring 中 BeanFactoryPostProcessor 的作用和示例源码分析

《Spring中BeanFactoryPostProcessor的作用和示例源码分析》Spring的BeanFactoryPostProcessor是容器初始化的扩展接口,允许在Bean实例化前... 目录一、概览1. 核心定位2. 核心功能详解3. 关键特性二、Spring 内置的 BeanFactory

VSCode配置Anaconda Python环境的实现

《VSCode配置AnacondaPython环境的实现》VisualStudioCode中可以使用Anaconda环境进行Python开发,本文主要介绍了VSCode配置AnacondaPytho... 目录前言一、安装 Visual Studio Code 和 Anaconda二、创建或激活 conda

pytorch+torchvision+python版本对应及环境安装

《pytorch+torchvision+python版本对应及环境安装》本文主要介绍了pytorch+torchvision+python版本对应及环境安装,安装过程中需要注意Numpy版本的降级,... 目录一、版本对应二、安装命令(pip)1. 版本2. 安装全过程3. 命令相关解释参考文章一、版本对

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总