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=windows

etcd-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同时启动两台在启动虚拟机里的就不行,莫名其妙

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法课程笔记——蓝桥云课第六次直播

(只有一个数,或者因子只有一个)先自己打表,找找规律函数就是2的n次方 异或前缀和 相等就抵消 先前缀和再二分

离散数学之命题逻辑思维导图+大纲笔记(预习、期末复习,考研,)

大纲笔记: 命题逻辑的基本概念 命题与联结词 命题 命题是推理的基本单位 真命题,假命题 特征 陈述句 唯一的真值 是非真即假的陈述句 非命题 疑问句 祈使句 可真可假 悖论 模糊性 三个基本概念 复合命题 真值取决于原子命题的值和逻辑联结词 原子命题 逻…

树莓派-服务自启配置方式测试

测试脚本: 一、 向rc.local文件添加启动代码(未找到,不测试) 修改/etc/rc.local文件,在文件中exit 0之前添加代码在启动时都会被执行,如:su pi -c “exec /home/pi/testboot.sh” 其中:su pi表示切换至pi…

PR2019新建项目教程

一,新建项目: 设置工程名称,选择工程目录位置,其他默认: 二,新建序列 新建项->序列: 设置序列参数: 三,导出设置 设置导出参数:

C语言 | Leetcode C语言题解之第64题最小路径和

题目&#xff1a; 题解&#xff1a; int minPathSum(int** grid, int gridSize, int* gridColSize) {int rows gridSize, columns gridColSize[0];if (rows 0 || columns 0) {return 0;}int dp[rows][columns];dp[0][0] grid[0][0];for (int i 1; i < rows; i) {dp[i…

【Linux】搭建私有yum仓库(类阿里云)

在搭建本地yum仓库并配置国内镜像阿里云源中了解yum源 yum &#xff1a; Yellow dog Updater&#xff0c;Modified&#xff0c;是一种基于rpm包的自动升级和软件包管理工具。yum能从指定的服务器自动下载rpm包并安装&#xff0c;自动计算出程序之间的依赖关系和软件安装的步骤&…

AST原理(反混淆)

一、AST原理 jscode var a "\u0068\u0065\u006c\u006c\u006f\u002c\u0041\u0053\u0054";在上述代码中&#xff0c;a 是一个变量&#xff0c;它被赋值为一个由 Unicode 转义序列组成的字符串。Unicode 转义序列在 JavaScript 中以 \u 开头&#xff0c;后跟四个十六进…

【Linux入门】基础开发工具

本篇博客整理了Linux&#xff08;centOS版本&#xff09;中基础开发工具的用途和用法&#xff0c;旨在透过开发工具的使用&#xff0c;帮助读者更好地理解可执行程序的编写、编译、运行等。 目录 一、软件包管理器 yum 1.软件的下载与安装 2.Linux应用商店&#xff1a;yum …

【JAVA项目】基于SSM的【寝室管理系统设计】

技术简介&#xff1a;采用B/S架构、ssm 框架和 java 开发的 Web 框架&#xff0c; eclipse开发工具。 系统简介&#xff1a;寝室管理设计的主要使用者分为管理员、宿舍长和学生&#xff0c;实现功能包括管理员权限&#xff1a;首页、个人中心、学生管理、宿舍号管理、宿舍长管理…

使用快捷键的方式把多个关键字文本快速替换(快速替换AE脚本代码)

首先&#xff0c;需要用到的这个工具&#xff1a; 度娘网盘 提取码&#xff1a;qwu2 蓝奏云 提取码&#xff1a;2r1z 这里做AE(Adobe After Effact)里的脚本规则&#xff0c;把英文替换成中文&#xff0c;如下 swap thisComp.layer(“Segment settings”).effect("%&…

谷歌免费的机器学习课程

虽然这样的课程收藏了不少&#xff0c;但是很少有看的下去的&#xff0c;可能我就是这样的收藏党吧。 具体可以跳转链接查看 机器学习工程师学习路径

Springboot(SSM)项目实现数据脱敏

目录 一、引入hutool的依赖 二、sql脚本 三、自定义注解代码 3.1 自定义注解 3.2 自定义一个枚举,用于定义脱敏的类型 3.3 序列化 四、使用脱敏注解 4.1 Person.java 4.2 controller 4.3 dao 五、源代码参考 一、引入hutool的依赖 <dependency><groupId>…

皮内针可以治腱鞘炎吗?如何用皮内针治疗腱鞘炎?

点击文末领取揿针的视频教程跟直播讲解 腕部腱鞘炎是什么&#xff1f; 腱鞘是近关节处的半圆形结构&#xff0c;环形包绕肌腱组织&#xff0c;起到固定肌腱的作用。当关节活动时&#xff0c;肌腱与腱鞘之间会产生相互摩擦&#xff0c;如果两者摩擦过度就会引起炎症&#xff0…

时间复杂度空间复杂度 力扣:转轮数组,消失的数字

1. 算法效率 如何衡量一个算法的好坏&#xff1f;一般是从时间和空间的维度来讨论复杂度&#xff0c;但是现在由于计算机行业发展迅速&#xff0c;所以现在并不怎么在乎空间复杂度了下面例子中&#xff0c;斐波那契看上去很简洁&#xff0c;但是复杂度未必如此 long long Fib…

基于改进暗原色先验和颜色校正的水下图像增强,Matlab实现

博主简介&#xff1a; 专注、专一于Matlab图像处理学习、交流&#xff0c;matlab图像代码代做/项目合作可以联系&#xff08;QQ:3249726188&#xff09; 个人主页&#xff1a;Matlab_ImagePro-CSDN博客 原则&#xff1a;代码均由本人编写完成&#xff0c;非中介&#xff0c;提供…

【OpenNJet下一代云原生之旅】

OpenNJet下一代云原生之旅 1、OpenNJet的定义OpenNJet架构图 2、OpenNJet的特点性能无损动态配置灵活的CoPilot框架支持HTTP/3支持国密企业级应用高效安全 3、OpenNJet的功能特性4、OpenNJet的安装使用编译安装配置yum源创建符号连接修改配置编译 5、通过 OpenNJet 部署 WEB SE…

数字化战略|数字化建设总体规划蓝图PPT(建议收藏)

摘要 这份头部咨询公司关于数字化转型的报告为企业管理者和技术人员提供了一份详尽的数字化转型指南。报告从战略出发&#xff0c;详细阐述了数字生态体系建设、数字化核心方案构建、管理协同能力提升以及数据集中管理和应用能力增强等关键环节。对于从业者而言&#xff0c;报…

CogVLM/CogAgent环境搭建推理测试

引子 对于多模态大语言模型&#xff0c;一直没有怎么接触。刚巧一朋友有问到这方面的问题&#xff0c;也就顺手调研下。智谱AI的东西一直以来&#xff0c;还是很不错的。ChatGLM的忠实fans&#xff0c;看到白嫖网站github上有他们开源的多模态CogVLM/CogAgent&#xff0c;那就…

【JAVA项目】基于SSM的【电动车智能充电服务平台】

技术简介&#xff1a;采用SSM技术、MYSQL等技术实现。 系统简介&#xff1a;电动车智能充电服务平台实现了首页、个人中心、用户管理、充电桩管理、电池商品管理、托送服务管理、我的钱包管理、充值信息管理、消费信息管理、购买订单管理、配送信息管理、服务订单管理、系统管理…

43.139.152.26 C07L01P02 数字8

题目描述 不超过 N 位的正整数中包含有多少数字 8 &#xff1f; 输入格式 一行 1 个正整数 N &#xff0c;范围 [1,16]。 输出格式 一个整数。 输入数据 1 2输出数据 1 20样例解释 8,18,28,38,48,58,68,78,88, 98 与 80,81,82,83,84,85,86,87,89 这些数中有 8 &#xff0…