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集群,首先得考虑下面的几个问 ...
随机推荐
- CCF201604-2俄罗斯方块
问题描述 俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游戏. 游戏在一个15行10列的方格图上进行,方格图上的每一个格子可能已经放置了方块,或者没有放置方块.每一轮,都会有一个新的由4个小方 ...
- java JDK的安装和环境配置(windows10)
1.下载JDK,安装.http://www.oracle.com/technetwork/java/javase/archive-139210.html 下载地址 2.配置JDK. (右键我的电脑 ...
- netty系列之:java中的base64编码器
简介 什么是Base64编码呢?在回答这个问题之前,我们需要了解一下计算机中文件的分类,对于计算机来说文件可以分为两类,一类是文本文件,一类是二进制文件. 对于二进制文件来说,其内容是用二进制来表示的 ...
- 【面试普通人VS高手系列】lock和synchronized区别
今天来分享一道阿里一面的面试题,"lock和synchronized的区别". 对于这个问题,看看普通人和高手的回答! 普通人: 嗯,lock是J.U.C包里面提供的锁,synch ...
- Divan and bitwise operations
这是一道比较综合的数学题目,光是吧题目看懂就花了我好一会儿时间,先看看题目吧: 题目分析:对于m段给定连续段的或值,要求出n个数的序列子序列的异或值之和: 题解: 这道题,我们先不要把它当作一个数一个 ...
- docker基础_docker引擎内部原理
docker引擎内部原理 docker主要由以下主要组件构成:docker客户端.docker守护进程(daemon).containerd.runc.shim daemon daemon的主要功能包 ...
- tomcat的搭建和介绍
第19章 tomcat的搭建 19.1 tomcat学习之前的预备知识 19.1.1 什么是JVM和JDK,JRE JVM java虚拟机,实现一份代码可以在不同的平台执行,具有 ...
- Not Adding - 题解【数学,枚举】
题面 原题链接(CF1627D) You have an array \(a_1,a_2,-,a_n\) consisting of \(n\) distinct integers. You are ...
- Arch Linux 安装简明流程
Arch Linux 安装简明流程 这是一篇为 GPT/EFI 引导 的电脑安装 Arch Linux(双系统)的中文简明流程,尽可能省略了可以省略的流程与文字以使得篇幅尽量短小,基本上基于 Arch ...
- .NET 程序读取当前目录避坑指南
前些天有 AgileConfig 的用户反映,如果把 AgileConfig 部署成 Windows 服务程序会启动失败.我看了一下日志,发现根目录被定位到了 C:\Windows\System32 ...