redis在linux搭建集群,Linux/Centos 7 redis4 集群搭建

背景说明:

项目初期使用AWS的ElastiCache Redis作为系统的数据缓存,近期由于数据量和QPS加大,导致Redis存在压力,进行了两次的单点垂直升级,缓解了目前的压力。项目组进行了数据和费用的评估,考虑到日后升级,决定使用Redis Cluster集群方案,使用三个Master节点搭建集群。(不使用3Master+3Slave)

前期准备:

1、Redis 安装包:本次使用Redis 4.0.8版本进行搭建

下载地址:http://download.redis.io/releases/redis-4.0.8.tar.gz

2、Ruby环境,本次使用yum安装 :yum install -y ruby rubygems

3、下载Ruby Redis工具包,本次使用3.3.3版本(后续说明版本问题)

采用离线下载:wget https://rubygems.org/downloads/redis-3.3.3.gem

4、在AWS上启动3个EC2实例,实例类型为:t2.medium(双核4g,40g SSD存储)

ip分别为:172.31.3.71、172.31.3.72、172.31.3.73

开始搭建:

1、安装Redis:指定安装目录到:/workspace/libs/redis

tar xvfz redis-4.0.8.tar.gz

cd redis-4.0.8

make && make install  PREFIX=/workspace/libs/redis

2、配置Redis:在/workspace/libs/redis下创建conf目录,用于存放配置文件

拷贝  redis-4.0.8目录下的redis.conf到/workspace/libs/redis/conf下

修改配置如下:

⚠注意:不能设置密码,否则集群启动时会连接不上

port  7001      //配置端口

//根据本机所在的IP或hostname去配置 node1 node2 node3

bind 本机ip //172.31.3.71,172.31.3.72,172.31.3.73

daemonize    yes                 //redis后台运行

//pidfile文件对应7000,7001,7002

pidfile  /var/run/redis_7001.pid

cluster-enabled  yes                            //开启集群

//集群的配置  配置文件首次启动自动生成 7001

cluster-config-file  /workspace/libs/redis/conf/nodes_7001.conf

//请求超时  默认15秒,可自行设置

cluster-node-timeout  15000

appendonly  yes               //aof日志开启  本次使用aof

//禁用rdb 注释掉save

#save 900 1

#save 300 10

#save 60 10000

3、安装Ruby Redis工具包:安装:gem install -l ./redis-3.3.3.gem

4、启动Redis:

cd /workspace/libs/redis

/workspace/libs/redis/bin/redis-server /workspace/libs/redis/conf/redis.conf

查看当前目下是否生成appendonly.aof 文件和 ./conf/下是否生成:nodes-7001.conf

24c5c062ea92ee48e4078db5afc0c2c7.png

56d39a782169ddb02dbf09c5e7737f33.png

根据配置生成appendonly.aof文件

066bcbd6888cb00504d7c10fa4d214f3.png

根据配置生成nodes-7001.conf文件

5、启动集群:

拷贝redis-4.0.8/src下的文件redis-trib.rb到/workspace/libs/redis/bin/目录下

cd /workspace/libs/redis/bin/

./redis-trib.rb create 172.31.3.71:7001 172.31.3.72:7002 172.31.3.73:7003

7d9e38afb85295e3300465aa25a4abd2.png

启动集群

6、 检查集群:

./redis-trib.rb info 172.31.3.71:7001

./redis-trib.rb check 172.31.3.71:7001

801fcc3bb65b410f2ae6265fb8331996.png

info查看集群key和slot的信息

faa046ec8bd2caa5df4d8de4b6210431.png

检查集群的状态

7、 添加节点:添加172.31.3.74:7004节点

./redis-trib.rb add-node 172.31.3.74:7004 172.31.3.71:7001

2b99e5e28c3e19777239cc43e10b6e18.png

添加172.31.3.74:7004节点

⚠注意:如果172.31.3..74:7004以前添加到集群过,重新添加的话,会报错: [ERR] Node 172.31.3..74:7004 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

需要先删除/workspace/libs/redis目录下的appendonly.aof和conf下的nodes-7004.conf文件,再重新执行

8、删除节点:删除节点4d3e007b38bf89aede64d0facc15124d9d605511(masterId)

./redis-trib.rb del-node 172.31.3.71:7001 4d3e007b38bf89aede64d0facc15124d9d605511

f3541d99ba2aeb015a66f7c07d77e0ad.png

删除172.31.3.74:7004节点

9、移动槽位:

./redis-trib.rb reshard 172.31.3.71:7001

c7639549d954d32f775a1ca388f03a4c.png

从172.31.3.73:7003移动10个槽位到172.31.3.71:7001去

关闭槽位:多个节点(7001,7002)的1234槽位被打开,需要手动依次关闭

./redis-cli -h 172.31.3.71 -p 7001 -c

172.31.3.71:7001> CLUSTER SETSLOT 1234 stable

./redis-cli -h 172.31.3.72 -p 7002 -c

172.31.3.72:7002> CLUSTER SETSLOT 1234 stable

10、数据导入:导入外部节点:172.31.3.70:6379

./redis-trib.rb import --copy --from 172.31.3.70:6379 172.31.3.71:7001

功能测试:

./redis-cli -h 172.31.3.71 -p 7001 -c

172.31.3.71:7001> set aaa aaa

d0ae0fc7a5d7452276acb3ce4f695066.png

set aaa 自动重定向到172.31.3.72:7002

172.31.3.71:7001> get aaa

9e404e7004f0c38bfe59d0568780fa15.png

get aaa

遇到问题:

1、ruby-redis版本兼容问题:

之前使用redis-4.0.0.rc1.gem安装,在移槽的时候,发生异常,导致槽位打开,需要手动关闭。

解决办法:安装redis-3.3.3.gem版本

2、从ElastiCache Redis导入到集群中,报错:Migrating         D342A51BFE16FC943B2B9EADEC9414C4D38114FE_131141 to 172.31.3.71:7001: ERR unknown         command 'migrate'

网上搜了一遍,有人提到AWS 的ElastiCache Redis 不支持migrate方法,目前只能通过代码迁移

参考链接:

https://redis.io/topics/cluster-tutorial

https://www.cnblogs.com/feiyun126/p/7248989.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数学除了摧残祖国的花朵外,竟然还可以赢钱!

全世界只有3.14 % 的人关注了爆炸吧知识端午节假期结束了,知识君又可以开心地回到工作岗位上了。我热爱学习,也热爱工作。这两天,知识君又听到了“哼,数学除了摧残我们这些祖国的花朵之外,然而并没有什么卵用。”知识君…

rocketmq 顺序消费_10 分钟看懂消息队列 RocketMQ

RocketMQ 是阿里巴巴在2012年开源的分布式消息中间件,目前已经捐赠给 Apache 软件基金会,并于2017年9月25日成为 Apache 的顶级项目。作为经历过多次阿里巴巴双十一这种“超级工程”的洗礼并有稳定出色表现的国产中间件,以其高性能、低延时和…

[Tyvj1114 搭建双塔]

[题目来源]:VIjos [关键字]:动态规划 [题目大意]:用n块水晶搭建两个塔,要求双塔必须一样高,问最大能达到的高度为多少。 // [分析]:用f[i,j]表示使用前i个水晶,建起高度差为j的双塔时,较矮的那个塔的最大高…

linux lua socket编程,CentOs 安装lua,luasocket

一、centos安装Lua3)个人在这里选择使用5.1版本的*下载wget http://www.lua.org/ftp/lua-5.1.5.tar.gz--2013-10-14 16:23:17-- http://www.lua.org/ftp/lua-5.1.5.tar.gzResolving www.lua.org... 89.238.129.35, 2a02:40:41::5Connecting to www.lua.org|89.238.129.35|:80.…

一厕难求!NASA悬赏三万五千美元,只为一个能在月球上用的马桶

全世界只有3.14 % 的人关注了爆炸吧知识来源:大数据文摘作者:刘俊寰如今逐渐步入智能生活时代,智能化产品也逐渐普及到我们生活中,有的智能马桶,不仅可以识别大便监测你的生活状况,还可以识别肛纹辨别不同身…

我很高兴地宣布我正在编写第一本官方ABP图书

掌握ABP框架通过实施软件开发最佳实践来构建可维护的 .NET 解决方案从 ABP 框架的创建者那里学习如何构建现代 Web 应用程序主要特点使用 ABP 中的最佳工具构建强大、可维护和可扩展的软件解决方案了解如何在您的 Web 应用程序中实施 SOLID 原则和领域驱动设计了解 ABP 框架如何…

python join_python join 和 split的常用使用方法

python join 和 split的常用使用方法 python join 和 split方法的使用,join用来连接字符串,split恰好相反,拆分字符串的。 1.join用法示例 >>>li [my,name,is,bob] >>> .join(li) my name is bob >>>_.join(li) my_name_is_…

原来历史人物的英文名竟然叫这些,太好笑了吧哈哈哈哈哈

全世界只有3.14 % 的人关注了爆炸吧知识我们学了这么多年的英语你有英文名字吗?如果有一天,古人穿越到了现在那么他们的英文名字是……汉武帝:Woody汉文帝:Wendy▽朱棣:judy▽朱熹:Juicy▽周瑜:…

From Apprentice To Artisan 翻译 19

为什么80%的码农都做不了架构师?>>> 上一篇 Interface Segregation Principle 接口隔离原则 Introduction 介绍 The Interface Segregation principle states that no implementation of an interface should be forced to depend on methods it does n…

Winform模拟post请求和get请求登录网站

引言最近有朋友问如何用winform模拟post请求,然后登录网站,稍微想了一下,大致就是对http报文的相关信息的封装,然后请求网站登录地址的样子。发现自己的博客中对这部分只是也没总结,就借着这股风,总结一下h…

那些上海滩的金融传奇,或许都开始于一份PPT

全世界只有3.14 % 的人关注了爆炸吧知识 我从07年开始在上海做商务PPT定制,从工作室一步一步到国内首家PPT定制公司,从电脑前到讲台前做培训,算是见证了中国PPT行业的发展。在我大大小小做过的项目里,印象最深的莫过于“靠PPT拿下…

Android 控件之RatingBar评分条

RatingBar是Adnroid中的评分条。效果挺得的 源码下载 一、概述 RatingBar是SeekBar和ProgressBar的扩展,用星星来评级。使用的默认大小RatingBar时,用户可以触摸/拖动或使用键来设置评分,它有俩种样式(大、小)&#xf…

3d目标检测_CVPR 2020 |基用于3D目标检测的层级图网络

论文:A Hierarchical Graph Network for 3D Object Detection on Point Clouds论文地址:https://www.aminer.cn/pub/5eccb534e06a4c1b26a834c7?confcvpr2020由于大多数现有的点云对象检测方法不能充分适应点云的特征(例如稀疏性),所以一些关…

position定位 响应式_使用 Vue3 实现双盒子定位 Overlay

之前说过,使用 可以很优雅的把某个组件渲染到根节点之外的节点,同时使其渲染的内容不丧失响应式和对应的生命周期函数调用。那么基于此,用 实现相对于某一元素的 Overlay 。实际上,这篇文章跟 Vue3 的关系不大,只是通…

月薪5 千~1万的兼职你要不要?不限学历,不限男女!

全世界只有3.14 % 的人关注了爆炸吧知识你想拥有一份月薪过万的兼职吗?窝在家里就行的那种?这就有一份看起来高大上、实则难度系数并不高的英语翻译!兼职英语翻译到底有多赚钱?水平一般的英语笔译员一周7天每天拿出2小时翻译&…

【分享】154页微软WPF官方手册(含.NETCore和.NET Framwork双版本)

物联网IOT多场景概念落地,带火了WPF招聘,像阿里影视、百度地图、小米小鹏特斯拉都在高薪抢WPF人才了。机智的.NET开发者去关注学习WPF的时候却发现,市面上真的太缺WPF优秀的教程了,还好这里有最权威最详尽的微软官方pdf教程&#…

ln -s 的一个坑

为什么80%的码农都做不了架构师?>>> 事情是这样的,今天在ssh到iphone上将一个应用内目录软链接配置到用户目录下时,执行了如下命令: cd /var/mobile/Applications/9E13D9B8-63E0-49A5-82CE-6DB914495EC1/Documentsmkd…

知乎高赞:这个开挂神器简直了!

全世界只有3.14 % 的人关注了爆炸吧知识对于工作学习中常要用到PPT的人来说,每当谈起PPT,是否都会出现以下印象:[买模板]→[改PPT]→[粘贴复制]→[应付领导][操作繁琐]→[体力劳动]→[熬夜]→[加班]从什么时候开始,PPT从一个 表达…

性能再提升70%?大咖前瞻带你揭开.NET6的神秘面纱!

本月初微软官宣 .NET6 的RC1即将在11月正式发布,这意味着 .NET6 正式版跟我们见面的时间又近了一步。在之前的 .NET6 预览版本中,微软加入了大量新功能特性,而在最终版本中将不再额外加入新的内容,只对现在的内容进行进一步性能优…

JMS : Java Message Service (Java消息服务)之一 [转]

为什么80%的码农都做不了架构师?>>> 1 引言1.1 编写目的本文作为B2bi项目中开源产品JORAM的使用指导文档,旨在帮助项目组人员方便明了的进行JMS模块的详细设计和开发工作。本文档主要包含建设银行EAI平台B2Bi子系统中使用的开源JMS产品??J…