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集群,首先得考虑下面的几个问 ...
随机推荐
- java中Object类的finalize的用法
Object类的finalize的用法: 马克-to-win:java当中有个垃圾回收机制,具体说,就是当一些对象被创建使用之后若不再使用的话{比如(i)对象被置成null.(ii)局部对象(无需置成 ...
- 获取MCCMNC号
public static boolean isColombiaSpanishSimCard(){ TelephonyManager telManager = (TelephonyMan ...
- js 图片上传给后台的3种格式
1. file格式 (创建formData来完成file上传) 我们的接口需求: 代码: <input type="file" id="imgfile" ...
- EMS监控用户邮箱
案例任务:部署日记规则,用户"王淑江"监控用户"王春海"的邮箱. 1.EMS监控用户邮箱 使用PowerShell命令完成任务:使用日记规则部署"王淑 ...
- vue中执行npm run build报错解决方法?
遇到了执行npm run build 后报错: [build:js ] Module not found: Error: Can't resolve 'scss-loader' in 'D:\work ...
- C语言,最大公约数---更相减损术
// 最大公约数 更相减损法 int commonDivisor() { int i,k,n=0; printf("请输入两个不同的正整数,用,隔开\n"); scanf(&quo ...
- golang 中 sync.Mutex 的实现
mutex 的实现思想 mutex 主要有两个 method: Lock() 和 Unlock() Lock() 可以通过一个 CAS 操作来实现 func (m *Mutex) Lock() { f ...
- ThingsBoard安装编译搭建环境踩坑记录
1.首先从github拉下来项目,我们采用源码编译的方式部署 git clone https://github.com/thingsboard/thingsboard.git 2.切换分支 git c ...
- vwware workstation虚机网络配置NAT
1.在编辑中选择虚拟网络编辑器,新增NAT模式网络适配器,如下图: 2.在虚拟机中选择设置,在网络适配器中自定义为上一步配置的网络适配器,如下图: 3.进入虚拟机后,编辑/etc/sysconfig/ ...
- 【vue】$attrs的作用和使用方法
之前一直不了解$attrs的作用和使用场景,然后自己翻阅了相关资料整理了下,如有不对的地方请大家指教 $attrs: $attrs是vue版本2.40以上新增的属性: 使用场景: vue项目里面,大家 ...