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集群,首先得考虑下面的几个问 ...
随机推荐
- CCF201509-2日期计算
问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? 注意闰年的2月有29天.满足下面条件之一的是闰年: 1) 年份是4的整数倍,而且不是100的整数倍: 2) 年份是400的整数倍. ...
- ServletContext介绍和用法总结
ServletContext介绍和用法总结 学习总结 一.ServletContext 介绍 1. 概念 2. 作用 3. 获取 3.1 在实现类中获取 3.2 在 Spring 容器中获取 二.Se ...
- Idea中创建maven项目(超详细)
Idea中创建maven项目 提示:前提条件时maven已经安装好,并且环境变量也配置完成,maven没安装好或者环境变量没有配置好的请参考我上一篇文章--maven的安装和配置 上篇博文链接:htt ...
- Python找出列表中的最大数和最小数
Python找出列表中数字的最大值和最小值 思路: 先使用冒泡排序将列表中的数字从小到大依次排序 取出数组首元素和尾元素 运行结果: 源代码: 1 ''' 2 4.编写函数,功能:找出多个数中的最大值 ...
- Linux上部署net6应用
前言 .net6都出来了,作为一名.net搬砖工却一直都在windows下部署应用,还未尝试过linux环境下部署应用.参考福禄网络研发团队的相关博客,学习一下如何将应用部署到linux系统. . ...
- JavaSE常用类之Object类
1. hashCode方法 代码: package NeiBuLei; public class hashCode { public static void main(String[] args) { ...
- Java 使用-安装
Java 使用-安装 官方网站 JDK 下载地址 JDK 历史版本 参考资料 CentOS7系统卸载自带的OpenJDK并安装SUNJDK CentOS7卸载 OpenJDK 安装Sun的JDK8 安 ...
- 前台主页搭建、后台主页轮播图接口设计、跨域问题详解、前后端互通、后端自定义配置、git软件的初步介绍
今日内容概要 前台主页 后台主页轮播图接口 跨域问题详解 前后端打通 后端自定义配置 git介绍和安装 内容详细 1.前台主页 Homeviwe.vue <template> <di ...
- 面试突击42:synchronized和ReentrantLock有什么区别?
在 Java 中,常用的锁有两种:synchronized(内置锁)和 ReentrantLock(可重入锁),二者的功效都是相同得,但又有很多不同点,所以我们今天就来聊聊. 区别1:用法不同 syn ...
- jmeter脚本编写
jmeter脚本编写 一.http协议接口编写注意事项 1.请求体为json格式:一定要写请求头Content-Type:application/json 2.json格式文本 2.1 key-val ...