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集群,首先得考虑下面的几个问 ...
随机推荐
- 【Android开发】简单好用的阴影库 ShadowLayout
先来看一张使用 ShadowLayout 库实现的各种阴影的效果图,如下图所示: 如上图所示,通过使用 ShadowLayout 可以控制阴影的颜色.范围.显示边界(上下左右四个边界).x 轴和 y ...
- tomcat 安装配置及问题解决
最近没写程序 刚想运行一个jsp程序发现tomcat出现一些问题,然后就重新装了程序,重新配置 总结经验就是不要怕报错,把错误复制下来,百度里面都有解决办法 要安装与自己jdk版本相匹配的tomcat ...
- 小程序预览图片wx.previewImage
效果图: ====> ==> 代码: <image mode='aspectFill' bindtap='previewImage' data-src='{{dataList ...
- 通过一段代码理解es6继承;
class animal{ constructor(props){ this.name = 'xiaoniao' || props.name } eat(){ console.log(this.nam ...
- WIN DLL劫持提权
WIN DLL劫持提权 原理: Windows程序启动的时候需要DLL.如果这些DLL 不存在,则可以通过在应用程序要查找的位置放置恶意DLL来提权.通常,Windows应用程序有其预定义好的搜索DL ...
- Java学习day27
今天跟着做了一个模拟龟兔赛跑的程序 只有一条赛道,乌龟和兔子在同一条赛道上比赛,使用了多线程 为了实现兔子睡觉,在run方法内增加了当前奔跑者是否是兔子的判断且当前奔跑步数是否是10的整数倍的判断,如 ...
- Educational Codeforces Round 119 (Div. 2), (C) BA-String硬着头皮做, 能做出来的
题目链接 Problem - C - Codeforces 题目 Example input 3 2 4 3 a* 4 1 3 a**a 6 3 20 **a*** output abb abba b ...
- Caused by: com.sonatype.nexus.staging.client.StagingRuleFailuresException: Staging rules failure! 已解决!
问题分析 由于项目中修改了一些代码,然后没有修改版本号,直接deploy代码到仓库,最终导致错误! 根据 https://central.sonatype.org/faq/can-i-change-a ...
- JavaSE前期准备1
历史(建议了解即可) 一.1990年,美国Sun公司的"Stealth计划"(后改名为"Green计划")目标设置在家用电器等小型系统的程序语言,准备应用在电视 ...
- 2021.08.09 P5658 括号树(树形结构)
2021.08.09 P5658 括号树(树形结构) [P5658 CSP-S2019] 括号树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 太长,在链接中. 分析及代码 ...