redis部署bug问题解决:CLUSTERDOWN Hash slot not served
16lz
2021-02-18
记录一次shell部署Redis出现“malloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录”和“CLUSTERDOWN Hash slot not served”的问题分析解决
之前使用的shell脚本部署一些软件到新的机器环境后使用时出现标题中的error报错提示,但之前使用是并未发生过类似的情况。下面给出我解决的方法,有兴趣的可以继续看一下原因。
error报错现象
首先是第一次安装脚本没有成功,原因是目录位置发生了问题,所以改进脚本后进行了再次运行脚本安装部署redis服务(补充说明,重新安装时有可能遇到失败情况,原因是安装编译工具和相关工具占用了某些进程(一般是Python相关的程序进程,若kill进程会导致编译时出现致命错误,解决方法是在bash环境中重新安装编译环境,就是那些gcc等,否则编译过程中会发现缺少相关工具或没有一些文件从而安装失败)导致部署失败的问题)
第一个问题报错的具体现象如下图所示
解决方法:进入redis部署路径的src命令执行命令:make MALLOC=libc
[root@localhost src]# pwd/usr/local/redis/src[root@localhost src]# make MALLOC=libc
此后再重新进行部署安装即可,此时可以发现redis的相关命令都可以使用了
第二个问题报错的具体现象如下图所示
该问题解决的方法如下:
[root@localhost service_project]# redis-cli --cluster fix 127.0.0.1:6379#此后会进行fix操作设置
解决思路:原因是集群的hash槽未能正常运行,所以可以去检查集群的slots的问题,我们知道redis的hash槽数目是16384个,用于储存数据的,而这些槽并未完全被分配到所有节点
设置完成验证
[root@localhost service_project]# redis-cli --cluster fix 127.0.0.1:6379127.0.0.1:6379 (95c37af4...) -> 0 keys | 16384 slots | 0 slaves.[OK] 0 keys in 1 masters.0.00 keys per slot on average.>>> Performing Cluster Check (using node 127.0.0.1:6379)M: 95c37af4524069ab816d326f8204420bc4a420fa 127.0.0.1:6379 slots:[0-16383] (16384 slots) master[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[OK] All 16384 slots covered.[root@localhost service_project]# redis-cli 127.0.0.1:6379> set a 1OK127.0.0.1:6379> get a"1"
出现该现象的情况是二次部署编译安装导致的,不知道其他情况是否会遇到相同问题,欢迎留言告知,谢谢阅读!
©著作权归作者所有:来自51CTO博客作者wx5d8a17c45cb5b的原创作品,如需转载,请注明出处,否则将追究法律责任如果文章对您有帮助,点个赞再走呗~
赞赏
0人进行了赞赏支持
更多相关文章
- Kubernetes(k8s)1.16.4部署 nginx-ingress 0.30
- Nginx服务器安装部署
- “重定义;不同的基类型”,可能是顺序问题
- k8s1.18.15 导入rancher2.5.5 与部署 longhron存储
- 利用openwrt编译添加zabbix_proxy3.4.10
- 以一个ser2net软件包为例解读openwrt19.07编译文件及luci编译步
- beego项目和go项目 打包部署到linux
- 利用Dnsmasq部署DHCP服务
- 利用Dnsmasq部署DNS服务