Redis本地集群搭建(5版本以上)
Redis本地集群搭建(5版本以上)
2019年11月3日10:05:48
步骤
1、下载安装Redis的安装包
2、复制5份,一共6份Redis的解压安装版,修改每个Redis节点的端口并开启节点
3、修改每个Redis节点的端口,以及开启集群模式
3、使用redis-cli --cluster create ip:port给集群的节点分配哈希槽(如果要使用主从,只需要添加master节点的ip:port即可)
4、使用redis-cli --cluster check ip:port查看节点信息
5、使用redis-cli --cluster add-node node-ip:node-port master-ip:master-port --cluster-slave --cluster-master-id master节点id
具体实现
1、编译
下载安装Redis的安装包
wget http://download.redis.io/releases/redis-5.0.6.tar.gz
解压安装包
tar zxf redis-5.0.6.tar.gz
进入到解压后的文件夹

ps:编译前,服务器需要安装gcc
yum install gcc-c++
输入make命令即可编译,出现下图提示表示编译成功

也可以指定编译位置
make install PREFIX=path
编译后的文件

2、复制并修改配置,开启
使用命令复制
cp -rf 文件夹路径 文件夹路径
效果

修改redis.conf的配置,给复制的每一份redis都修改成不同的端口,后台启动
# 默认
daemonize no
port 6379
# cluster-enabled yes
#修改
daemonize yes
port 7001
cluster-enabled yes
开启每个节点(批量执行)
cd /software/redis/redis6379/bin
./redis-server ./redis.conf
cd /software/redis/redis7000/bin
./redis-server ./redis.conf
cd /software/redis/redis7001/bin
./redis-server ./redis.conf
cd /software/redis/redis7002/bin
./redis-server ./redis.conf
cd /software/redis/redis7003/bin
./redis-server ./redis.conf
cd /software/redis/redis7004/bin
./redis-server ./redis.conf
出现下图表示所有节点开启成功

3、分配哈希槽
使用如下命令
redis-cli --cluster create ip:port ip:port ip:port

4、查看分配信息
使用命令redis-cli --cluster check ip:port查看分配的信息

可以看出,6379分配到的是0-5460,7001是5461-10922,7003是10923-16383。
5、添加从节点
使用命令
redis-cli --cluster add-node node-ip:node-port master-ip:master-port --cluster-slave --cluster-master-id master节点id

添加完毕后查看节点信息
cluster nodes

从上图可以看出,设置了3主3从的集群模式。
6、测试key
连接redis(-c表示是集群模式)
redis-cli -p 6379 -c

可以看出,在端口为6379的节点上添加key,通过算法将这个key转发到了7001端口的节点上。
进入7001端口的节点,可以查到这个key值。
同时,7001端口的从节点也接收到了这个key值。
7、测试哨兵
使用 ps aux|grep redis查询每个redis节点的端口

这时候主从节点之间是正常的

关闭端口为7001的节点


7001节点的7002端口从节点自动升级到了master节点。
重新开启7001节点,自动降级到slave。

Redis高可用集群的水平扩展
扩展主节点
新建端口为7005和7006的Redis节点并运行。

把7005节点加入容器
redis-cli --cluster add-node 127.0.0.1:7005 127.0.0.1:6379

分配哈希槽给7005节点
从7001节点分配1000个哈希槽给7005节点
all表示均匀分配(从每个节点取一点哈希槽出来)
done表示从当前节点取
[root@iz2zeaf5jdjve80rjlsjgnz bin]# redis-cli --cluster reshard 127.0.0.1:7001
>>> Performing Cluster Check (using node 127.0.0.1:7001)
S: 152f1f15ac36784362e8733a393c9a257f7a8ba2 127.0.0.1:7001
slots: (0 slots) slave
replicates f9129fca620934624742e25a31d08c545a9d583e
S: ac613c6d40e0d860662effb7403a67fe9b6029aa 127.0.0.1:7000
slots: (0 slots) slave
replicates 77cbdfe644fdc0e50e550cad44a3ed144c8d2499
M: f9129fca620934624742e25a31d08c545a9d583e 127.0.0.1:7002
slots:[5962-10922] (4961 slots) master
1 additional replica(s)
S: 09ede6784ccc5a41b82db3fe4c544b5c126f455e 127.0.0.1:7004
slots: (0 slots) slave
replicates bd08af40b95169524c27da654302c9f12d8a9e8c
M: bd08af40b95169524c27da654302c9f12d8a9e8c 127.0.0.1:7003
slots:[11422-16383] (4962 slots) master
1 additional replica(s)
M: 6c87fc578eec8bd7d588d111347dd7a7bd21dd0b 127.0.0.1:7005
slots: (0 slots) master
M: 77cbdfe644fdc0e50e550cad44a3ed144c8d2499 127.0.0.1:6379
slots:[0-5961],[10923-11421] (6461 slots) master
1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 1000
What is the receiving node ID? 6c87fc578eec8bd7d588d111347dd7a7bd21dd0b
Please enter all the source node IDs.
Type 'all' to use all the nodes as source nodes for the hash slots.
Type 'done' once you entered all the source nodes IDs.
Source node #1: all
Ready to move 1000 slots.

扩展从节点
将7006节点的Redis添加到集群中。
redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7005 --cluster-slave --cluster-master-id 6c87fc578eec8bd7d588d111347dd7a7bd21dd0b

参考
Redis本地集群搭建(5版本以上)的更多相关文章
- redis的集群搭建(很详细很详细)
说在前面的话 之前有一节说了redis单机版的搭建和使用jedis管理redis单机版和集群版, 本节主要讲一下redis的集群搭建. 跳转到jedis管理redis的使用 认识redis集群 首先我 ...
- linux环境下redis安装(redis伪集群搭建)
redis在linux环境下搭建 1.创建目录 [root@192 local]# mkdir /usr/local/redis 2.下载redis,并解压 [root@192 local]# wge ...
- Redis Cluster集群搭建<原>
一.环境配置 一台window 7上安装虚拟机,虚拟机中安装的是centos系统. 二.目标 Redis集群搭建的方式有多种,根据集群逻辑的位置,大致可以分为三大类:基于客户端分片的Redis ...
- Redis Cluster 集群搭建与扩容、缩容
说明:仍然是伪集群,所有的Redis节点,都在一个服务器上,采用不同配置文件,不同端口的形式实现 前提:已经安装好了Redis,本文的redis的版本是redis-6.2.3 Redis的下载.安装参 ...
- Redis Cluster集群搭建与配置
Redis Cluster是一种服务器sharding分片技术,关于Redis的集群方案应该怎么做,请参考我的另一篇博客http://www.cnblogs.com/xckk/p/6134655.ht ...
- Redis Cluster集群搭建与应用
1.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper,但从redis 3.0之后版本支持redis-cluster集群,redis-cluster采用无中心结 ...
- 【Redis】Redis cluster集群搭建
Redis集群基本介绍 Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施installation. Redis 集群不支持那些需要同时处理多个键的 Redis 命令, 因为执行 ...
- redis主从集群搭建及容灾部署(哨兵sentinel)
Redis也用了一段时间了,记录一下相关集群搭建及配置详解,方便后续使用查阅. 提纲 Redis安装 整体架构 Redis主从结构搭建 Redis容灾部署(哨兵sentinel) Redis常见问题 ...
- druid.io本地集群搭建 / 扩展集群搭建
druid.io 是一个比较重型的数据库查询系统,分为5种节点 . 在此就不对数据库进行介绍了,如果有疑问请参考白皮书: http://pan.baidu.com/s/1eSFlIJS 单台机器的集群 ...
随机推荐
- Module not found: Error: Can't resolve "xxx" in "xxx"
报错信息 ERROR in multi ./src/index.js ./dist/bundle.js Module not found: Error: Can't resolve './dist/b ...
- 一、数据库、SQL简介
1.数据库简介 1.1数据库:保存有组织的数据的容器(通常是一个文件或一组文件) 数据库软件:称为数据库管理系统(DBMS),数据库是通过DBMS创建和操纵的.通常用户使用DBMS访问数据库. 表:表 ...
- (转)Java中Image的水平翻转、缩放与自由旋转操作
来自:http://cping1982.blog.51cto.com/601635/130066/ 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责 ...
- RabbitMQ学习第四记:路由模式(direct)
1.什么是路由模式(direct) 路由模式是在使用交换机的同时,生产者指定路由发送数据,消费者绑定路由接受数据.与发布/订阅模式不同的是,发布/订阅模式只要是绑定了交换机的队列都会收到生产者向交换机 ...
- 由 15.01升级到 16.04之后,无法启动mysql
参考 16.04 Distribution Upgrade - cannot start MySQL server,然后找到了16.04 upgrade broke mysql-server 我由 1 ...
- MVC升级后报"当前上下文中不存在ViewBag"错的解决方法
- NX二次开发-NX+VS写代码设断点调试技巧
在做NX二次开发的时候写完代码,编译可以通过,但是执行的时候却没有反应,或者得到的结果不对,说明肯定有地方传值出错了.我在查找代码错误的时候有几种方法:1.uc1601打印函数输入和输出的值看对不对. ...
- NX二次开发-算法篇-找相切面
方法1:通过判断相邻面公共边的光顺性来找相切面 1 #include <uf.h> 2 #include <uf_modl.h> 3 #include <uf_obj.h ...
- [JZOJ 5129] 字符串
题意:统计本质不同的串的个数. 思路: 显然后缀自动机,对于每个串建一个\(SAM\)统计即可. #include <bits/stdc++.h> using namespace std; ...
- Android 防止多次点击提交数据
package com.test1.test; import android.app.Activity; import android.os.Bundle; import android.view.V ...