etcd集群搭建和使用中常见的报错信息(热key探测系列教程)
etcd的下载地址:https://github.com/etcd-io/etcd/releases
当前最新的v3.4.9,我之前用的时候包括目前京东热key线上都是用的3.4.6,下面主要是看一下如何搭建etcd集群。
如果是本地测试单点的话,就在上面链接下载对应的操作系统版本,打开后
直接启动etcd就算本地启动成功了,启动后就可以用etcdctl控制台进行操作,或者用代码操作etcd即可。
集群的话,以linux 3节点集群为例。
创建一个sh脚本,如下
#!/bin/bashif [ -z $NAME ];thenNAME=my-etcd-1
fi
#if [ -z $DATADIR ];then#DATADIR=/export/etcd_data
#fi
if [ -z $MYHOST ];thenMYHOST=http://127.0.0.1
fi
if [ -z $PORT ];thenPORT=2379
fi
if [ -z $CLUSTER_PORT ];thenCLUSTER_PORT=2380
fi
if [ -z $CLUSTER ];then CLUSTER=my-etcd-1=http://localhost:2380,my-etcd-2=http://localhost:2382,my-etcd-3=http://localhost:2384
fi
if [ -z $CLUSTER_TOKEN ];then CLUSTER_TOKEN=my-etcd-token
fi
if [ -z $CLUSTER_STATE ];thenCLUSTER_STATE=new
fiETCD_CMD="./etcd --name ${NAME} --data-dir ${DATADIR} --listen-client-urls ${MYHOST}:${PORT} --advertise-client-urls ${MYHOST}:${PORT} --listen-peer-urls ${MYHOST}:${CLUSTER_PORT} \
--initial-advertise-peer-urls ${MYHOST}:${CLUSTER_PORT} \
--initial-cluster $CLUSTER \
--initial-cluster-token $CLUSTER_TOKEN \
--initial-cluster-state ${CLUSTER_STATE} \
--auto-compaction-retention=10 \
-–quota-backend-bytes=8589934592 \$*"
echo -e "Running '$ETCD_CMD'\nBEGIN ETCD OUTPUT\n"
exec $ETCD_CMD
和etcd可执行文件放一起。
这个shell脚本里,大部分属性都是通过外传配置的,最好是通过环境变量配置。将这个文件夹(包含3个文件)复制三份,分别上传到3个主机或打包后放到docker里,用docker的话,需要再加一个dockerfile文件,dockerfile里就直接启动这个sh即可。
上传完毕后,就需要配置sh脚本里的各个参数属性了。
注意shell里面的配置项,里面有最大存储是8G,自动压缩间隔是10小时,可以自行调整。etcd如果磁盘写满(默认2G)后,就无法继续写入了,必须压缩 清理后才能继续写入。
譬如ip1、ip2、ip3 三个机器。各自的配置(主机环境变量,或docker环境变量)如下
这就是etcd1的配置,注意一下name,就是一个唯一的name,那么etcd2的name就是my-etcd-2
MYHOST就是自己的ip。
CLUSTER_STATE代表集群状态,如果是加入一个已有的集群,就是existing。如果是新组建集群,就是new。
CLIENT_URLS就还是自己的ip,再加上127.0.0.1 注意加上端口后。
CLUSTER就是集群内所有etcd的ip+端口。
就这样分别启动3个etcd就可以了。观察日志,看他们的联通状态。
常见异常:
1 节点启动后:tocommit(42081425) is out of range [lastIndex(0)]. Was the raft log corrupted, truncated, or lost
命令:
cd /export/App/bin
查看所有member ./etcdctl member list
删除掉那个数据不对的:
./etcdctl member remove 8837e51603af62c2
重新添加进来:
./etcdctl member add my-etcd-2 --peer-urls=http://10.188.128.140:2380
2 ETCD数据库异常:mvcc: database space exceeded解决
参考:https://www.cnblogs.com/davygeek/p/8524477.html
https://www.cnblogs.com/zjz20/p/12973817.html
使用API3
export ETCDCTL_API=3
# 查看告警信息,告警信息一般 memberID:8630161756594109333 alarm:NOSPACE
etcdctl —endpoints=http://127.0.0.1:2379 alarm list
# 获取当前版本
rev=$(etcdctl —endpoints=http://127.0.0.1:2379 endpoint status —write-out=“json” | egrep -o ‘”revision”:[0-9]*’ | egrep -o ‘[0-9].*’)
# 压缩掉所有旧版本
etcdctl —endpoints=http://127.0.0.1:2379 compact $rev
# 整理多余的空间
etcdctl —endpoints=http://127.0.0.1:2379 defrag
# 取消告警信息
etcdctl —endpoints=http://127.0.0.1:2379 alarm disarm
etcd集群搭建和使用中常见的报错信息(热key探测系列教程)相关推荐
- etcd介绍:可作为KV数据库、服务发现、配置中心和分布式锁使用、etcd集群搭建
etcd介绍 etcd用途 etcd VS zk etcd架构 etcd集群搭建
- Docker下ETCD集群搭建
Docker下ETCD集群搭建 https://www.cnblogs.com/eagle6688/p/8287907.html 搭建集群之前首先准备两台安装了CentOS 7的主机,并在其上安装好D ...
- 【运维】K8S集群部署系列之ETCD集群搭建(四)
ETCD集群扩容和缩容 本文将介绍生产环境下如何对ETCD集群进行扩容和缩容. 文章目录 ETCD集群扩容和缩容 新节点环境准备(node3) 下载安装包并初始化环境 网络准备 生成`node3`对等 ...
- java 带密码连接redis 单节点/集群 No reachable node in cluster报错解决
java 带密码连接redis 单节点/集群 No reachable node in cluster报错解决 maven依赖 <dependency><groupId>red ...
- JavaScript在控制台常见的报错信息
JavaScript在控制台常见的报错信息 前言 一.JS的报错类型 二.具体的控制台报错分析 1.语法错误(SyntaxError) (1)违背命名规范 (2)括号不全 (3)关键字赋值 (4)函数 ...
- etcd集群搭建(高可用)
一.etcd介绍: ETCD 是一个高可用的分布式键值数据库,可用于服务发现.ETCD 采用 raft 一致性算法,基于 Go 语言实现.etcd作为一个高可用键值存储系统,天生就是为集群化而设计的. ...
- P8实战(二):分布式锁前置技能 etcd 集群搭建
etcd 集群环境搭建 13 什么是 etcd? etcd 是一个分布式高可用的 Key/Value 存储系统,旨在可靠.快速地保存和提供对关键数据的访问,主要用于分享配置和服务发现.它通过分布式锁定 ...
- 【运维】K8S集群部署系列之ETCD集群搭建(二)
TLS证书生成 文章目录 TLS证书生成 简介 工具下载 创建CA认证中心 CA证书申请文件 生成CA证书和私钥 配置证书生成策略 证书验证 查看证书 验证证书 生成ETCD集群的TLS证书 服务端证 ...
- python find函数_Python 装饰器填坑指南 | 最常见的报错信息、原因和解决方案
本文为霍格沃兹测试学院学员学习笔记,进阶学习文末加群. Python 装饰器简介 装饰器(Decorator)是 Python 非常实用的一个语法糖功能.装饰器本质是一种返回值也是函数的函数,可以称之 ...
最新文章
- 八大操作系统掌门人齐聚 1024 程序员节,千年岳麓见证开源新时代
- 课后作业-阅读任务-阅读提问-3 。
- TOMCAT安全配置
- NHibernate——Criteria条件查询
- C#里partial关键字的作用(转摘)
- 【ESP8266】ESP8266_NONOS_SDK开发包生成的镜像文件构建步骤分析
- Java中的list、set、map区别
- c# contains方法_C#/.Net Core/WPF框架初建(国际化、主题色)
- 知道IP地址如何查看主机名和MAC(网卡)地址
- “华为搜索”正海外内测;苹果5亿美元和解“降速门”;Firefox隐藏HTTPS | 极客头条...
- ubuntu 的chmod 和 chown
- ubuntu中gitlab搭建
- 【线性代数】P6 矩阵的幂转置特殊矩阵
- OSChina 周五乱弹 —— IG wxz 请联系小小编辑付钱删帖
- vsual studio 如何关闭禁止mscorsvw.exe (转)
- 阿里云后台部署全过程-2-Linux环境配置
- 单位脉冲响应的个人理解
- 【微机原理与汇编】冒泡排序
- 联想Y50C加内存条
- Linux磁盘分区论文3000字,磁盘分区对齐详解与配置 – Linux篇
热门文章
- 来看看今日的软件分享
- 【全栈接口测试进阶系列教程】入门到入职的jmeter接口测试工具实战,接口测试步骤,正则表达式jsonpath,断言,接口加密,beanshell,jdbc,jmeter+ant+jenkins
- java 判断字符 不等于 或者_java中字符串不等于怎么判断
- Python视频图像播放中加入文字
- SpringBoot - Lombok的使用
- centos7输入ifconfg找不到ens33/eth0网卡信息,且service network restart重启网络失败
- Android 获得 usb 权限的两种方式
- 无线耳机哪个品牌好一点?真无线蓝牙耳机推荐品牌
- RK3568 外接 PCF8563 RTC
- 如何在Word中的表上添加边框或更改边框