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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值