Redis集群搭建 三主三从
Redis集群介绍
Redis 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务器端缓存。Redis在3.0版本之前只支持单实例模式 虽然支持主从模式,哨兵模式来解决单点故障,可是互联网公司动辄几百G的数据,显然是没办法满足业务需求的。所以Redis在3.0版本之后推出了集群模式。
Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 个 slot,每个 Redis 实例负责其中一部分 slot 。集群中的所有信息(节点、端口、slot等),都通过节点之间定期的数据交换而更新。
Redis 客户端可以在任意一个 Redis 实例发出请求,如果所需数据不在该实例中,通过重定向命令引导客户端访问所需的实例。
首先这个帖子是对Redis集群搭建的帖子 搭建集群的前提是已经在Linux下安装了Redis 在搭建集群之前我要先说一下Redis集群搭建规则,由于集群至少需要六个节点(三主三从)但是我本地没有那么多机器让我 玩 所以我选择在一台虚拟机上进行集群的搭建 这个和在生产环境上搭建是没有区别的 请注意,下面所有集群搭建环境都基于已安装好的 Redis 做的
1.创建文件夹
首先我们的集群的端口号为 6301-6306 数据存放在 端口号/data文件夹中


mkdir /usr/local/redis-cluster
cd redis-cluster/
mkdir -p 6301/data 6302/data 6303/data 6304/data 6305/data 6306/data
2.复制执行脚本
在/usr/local/redis-cluster 目录下创建bin文件夹,用来存放集群运行脚本,并把安装好的 Redis 的 src 路径下的运行脚本拷贝过来
mkdir redis-cluster/bin
cd /usr/local/redis-4.0.6/src/
cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin
3.复制一个新的Redis实例
从已经安装好的Redis中复制一个新的实例到6301中并且修改他的redis.config配置

cp /usr/local/redis-4.0.6/* /usr/local/redis-cluster/6301

port 6301(每个节点的端口号)
daemonize yes
#bind 127.0.0.1(注释掉)
dir /usr/local/redis-cluster/6301/data/(数据文件存放位置)
pidfile /var/run/redis_6301.pid(pid 6301和port要对应)
cluster-enabled yes(启动集群模式)
cluster-config-file nodes6301.conf(6301和port要对应)
cluster-node-timeout 15000
appendonly yes
4.复制其他节点
因为我们之前已经复制出了一个节点 6301 之后的操作就比较呆 在复制其余的五个节点就好了 我们这里选择将6301实例复制给其余的五个,其中要修改的就是redis.config文件 所有与端口相关的信息


5.修改6302-6306的redis.config文件
其中到这一步已经很简单了 因为之前已经做好了一个实例的修改(6301) 你通过搜索会发现其实只有四个点需要修改,我们全局替换下吧,进入相应的节点文件夹,做替换就好了。命令非常简单

vim redis.conf
:%s/6301/6302/g
到这里我们的基本环境已经搭建好了 剩下的就是启动了!!!
如果我们现在直接启动redis六个节点往里面添加东西会报错(error) CLUSTERDOWN Hash slot not served(不提供集群的散列槽)。
因为虽然我们配置并启动了 Redis 集群服务,但是他们暂时还并不在一个集群中,互相直接发现不了,而且还没有可存储的位置,就是所谓的slot(槽)。
所以接下来我们要安装集群所需要的软件 ruby
yum install centos-release-scl-rh//会在/etc/yum.repos.d/目录下多出一个CentOS-SCLo-scl-rh.repo源
yum install rh-ruby26 -y //直接yum安装即可
scl enable rh-ruby26 bash//必要一步
ruby -v//查看安装版本
gem install redis

如果直接使用

这三行命令进行安装ruby的时候会默认安装2.0.0版本的ruby这个时候会发生 版本不兼容的问题 所以使用我这种yum安装方式不会有这种问题的出现

集群搭建的命令
在输入命令前需要保证六个redis节点已经启动
/usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 192.168.211.128:6301 192.168.211.128:6302 192.168.211.128:6303 192.168.211.128:6304 192.168.211.128:6305 192.168.211.128:6306
然后调用ruby命令来创建集群 replicas 1 表示主从比例为1:1 一个主节点对应一个从节点然后默认给我们分配好了每个主节点和对应从节点服务,以及 solt 的大小,因为在 Redis 集群中有且仅有 16383 个 solt ,默认情况会给我们平均分配,当然你可以指定,后续的增减节点也可以重新分配。

这个就表示集群已经创建成功
cluster info
cluster nodes
输入这两个命令可以查看集群的状态和节点信息
小结一下
搭建redis集群还是很简单的只是需要修改的文件比较麻烦没有什么技术含量 跟着这个帖子一步一步走下去就可以自己搭建一个redis集群出来 !!!
Redis集群搭建 三主三从的更多相关文章
- Redis集群搭建的三种方式
一.Redis主从 1.1 Redis主从原理 和MySQL需要主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生性能瓶颈,特别是在读压力上,为了分担压力,Redis支持主从复制. ...
- Redis 集群搭建详细指南
先有鸡还是先有蛋? 最近有朋友问了一个问题,说毕业后去大城市还是小城市?去大公司还是小公司?我的回答都是大城市!大公司! 为什么这么说呢,你想一下,无论女孩男孩找朋友都喜欢找个子高胸大的.同样的道理嘛 ...
- centos redis集群搭建
说明: 10.0.0.111部署6500,6501,6502三个主节点 10.0.0.222部署6500,6501,6502三个备份节点 1.安装redis:略 2.配置内核参数 # 配置 vm.ov ...
- Redis集群搭建及选举原理
redis集群简述 哨兵模式中如果主从中master宕机了,是通过哨兵来选举出新的master,在这个选举切换主从的过程,整个redis服务是不可用的.而且哨兵模式中只有一个主节点对外提供服务,因此没 ...
- Redis学习之路(二)Redis集群搭建
一.Redis集群搭建说明 基于三台虚拟机部署9个节点,一台虚拟机三个节点,创建出4个master.4个slave的Redis集群. Redis 集群搭建规划,由于集群至少需要6个节点(3主3从模式) ...
- 二、redis集群搭建
redis集群搭建 redis3.0后支持集群.集群中应该至少有三个节点,每个节点有一备份节点.需要6台服务器.搭建伪分布式,需要6个redis实例.搭建集群的步骤: 一.安装单机版redis 第一步 ...
- redis集群搭建及注意事项
上一篇:redis的安装及注意事项 这里,在一个Linux虚拟机上搭建6个节点的redis伪集群,思路很简单,一台虚拟机上开启6个redis实例,每个redis实例有自己的端口.这样的话,相当于模拟出 ...
- Linux Redis集群搭建与集群客户端实现(Python)
硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...
- [转载] Redis集群搭建最佳实践
转载自http://blog.csdn.net/sweetvvck/article/details/38315149?utm_source=tuicool 要搭建Redis集群,首先得考虑下面的几个问 ...
随机推荐
- JavaScript 遍历对象、数组总结
在日常工作过程中,我们对于javaScript遍历对象.数组的操作是十分的频繁的,今天抽空把经常用到的方法小结一下,方便今后参考使用! javaScript遍历对象总结 1.使用Objec ...
- CCF201409-3 字符串匹配
问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行.你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符:当选项关闭时,表示同一个字母的大写和小写 ...
- Android CheckBox的监听事件
1.在xml文件中定义CheckBox,一定要定义id <CheckBox android:id="@+id/beijing" android:layout_width=&q ...
- 安卓记账本开发学习day10
完成了最后一部分功能 1.柱状分析每月的支出或收入 2. 删除所有记录
- Vue使用PostCSS 插件和如何使用sass及常用语法
为什么要使用PostCss 转换 px 单位的插件有很多,知名的有 postcss-px-to-viewport 和 postcss-pxtorem,前者是将 px 转成 vw,后者是将 px 转成 ...
- 发布nuget包的正确姿势---cicd自动打包发布nuget包
最轻便的发布nuget包方式,方便cicd自动打包发布nuget包 首先新建项目 项目名随便取,这里就叫它GuiH.ClassLibrary 默认即可,需要改目标版本时,等创建好再改 项目创建好了 随 ...
- 听说Integer有bug?1000不等于1000?
bug? 前几天有位朋友找我,说:"老哥,老哥,我好像发现了Integer一个bug,你帮我看看什么情况?",说完给了我两个很简单的demo,上代码. 100 == 100 100 ...
- 广度优先搜索 BFS 学习笔记
广度优先搜索 BFS 学习笔记 引入 广搜是图论中的基础算法之一,属于一种盲目搜寻方法. 广搜需要使用队列来实现,分以下几步: 将起点插入队尾: 取队首 \(u\),如果 $u\to v $ 有一条路 ...
- 攻防世界-MISC:wireshark-1
这是攻防世界高手进阶区的第五题,题目如下: 点击下载附件一,得到一个压缩包,解压后得到一个流量包,用wireshark打开,分组字节流搜索字符串flag password的值即是flag,所以这道题的 ...
- 神经网络 CNN 名词解释
隐藏层 不是输入或输出层的所有层都称为隐藏层. 激活和池化都没有权重 使层与操作区分开的原因在于层具有权重.由于池操作和激活功能没有权重,因此我们将它们称为操作,并将其视为已添加到层操作集合中. 例如 ...