Redis 快速集群环境搭建
环境
Linux :centos 7
redis:redis-5.0.9
Redis 集群环境搭建步骤
早期 redis 版本集群环境搭建需要安装 ruby 运行环境,搭建步骤比较繁琐; redis 5.x 版本集群搭建已不需要我们安装 ruby 就可以搭建成功,并且 redis 给我们提供了快速搭建集群脚本
步骤一:找到快速搭建 create-cluster 脚本
[root@dtinone create-cluster]# cd /opt/redis-5.0.9/utils/create-cluster
进入 create-cluster 目录后查看如下:
[root@dtinone create-cluster]# ll
总用量 8
-rwxrwxr-x. 1 root root 2344 4月 17 2020 create-cluster #这就是快速搭建集群脚本
-rw-rw-r--. 1 root root 1317 4月 17 2020 README
create-cluster 脚本提供以下几个命令:
- start :创建redis集群实例
- create :搭建redis集群
- stop :停止redis集群实例
- watch :查看集群节点
- clean :删除生成的日志,配置,数据文件
- clean-logs :只删除日志
步骤二:运行 create-cluste 脚本快速搭建集群环境
- 运行 ./create-cluster start 命令脚本将自动为我们创建 6 个redis 进程实例(集群环境至少 6 个 redis 实例,3 master / 3 slave),而且自动为我们分配端口(30001-30006)
[root@dtinone create-cluster]# ./create-cluster start
Starting 30001
Starting 30002
Starting 30003
Starting 30004
Starting 30005
Starting 30006
运行 ./create-cluster create 命令脚本将自动搭建集群环境(分配 6 个 slot 并配置好 6 个 redis 实例的主从关系)
redis 集群支持16384 个 slots,即最大支持 16384 个 redis 实例组成的集群环境)
遇到以下提示信息,是询问你是否可以使用分配的配置,输入yes 回车即可
Can I set the above configuration? (type 'yes' to accept): yes # 输入 yes 回车即可
[root@dtinone create-cluster]# ./create-cluster create
>>> Performing hash slots allocation on 6 nodes...
# 分配集群槽位
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
# 分配主从关系
Adding replica 127.0.0.1:30005 to 127.0.0.1:30001
Adding replica 127.0.0.1:30006 to 127.0.0.1:30002
Adding replica 127.0.0.1:30004 to 127.0.0.1:30003
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
# 显示槽位和主从关系
M: 68472ec54dba34b08cd6d4f987f8b97e5de00411 127.0.0.1:30001
slots:[0-5460] (5461 slots) master
M: a05be1b0ee3f33d0fdba1c4624484659df71ba9c 127.0.0.1:30002
slots:[5461-10922] (5462 slots) master
M: 4ebf676146947b59063b7474f3bf706e4319cc01 127.0.0.1:30003
slots:[10923-16383] (5461 slots) master
S: 3cb2dae684fb9fa7393cf7a7b8c6ee401db80f05 127.0.0.1:30004
replicates 68472ec54dba34b08cd6d4f987f8b97e5de00411
S: 41c6962bf0f80dcd3ccd07ec758a949b55938248 127.0.0.1:30005
replicates a05be1b0ee3f33d0fdba1c4624484659df71ba9c
S: bef3b70608bbae26f20b0de5915e7c2f521f18c3 127.0.0.1:30006
replicates 4ebf676146947b59063b7474f3bf706e4319cc01
Can I set the above configuration? (type 'yes' to accept): yes #输入yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
.
>>> Performing Cluster Check (using node 127.0.0.1:30001)
M: 68472ec54dba34b08cd6d4f987f8b97e5de00411 127.0.0.1:30001
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: bef3b70608bbae26f20b0de5915e7c2f521f18c3 127.0.0.1:30006
slots: (0 slots) slave
replicates 4ebf676146947b59063b7474f3bf706e4319cc01
M: a05be1b0ee3f33d0fdba1c4624484659df71ba9c 127.0.0.1:30002
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
M: 4ebf676146947b59063b7474f3bf706e4319cc01 127.0.0.1:30003
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: 41c6962bf0f80dcd3ccd07ec758a949b55938248 127.0.0.1:30005
slots: (0 slots) slave
replicates a05be1b0ee3f33d0fdba1c4624484659df71ba9c
S: 3cb2dae684fb9fa7393cf7a7b8c6ee401db80f05 127.0.0.1:30004
slots: (0 slots) slave
replicates 68472ec54dba34b08cd6d4f987f8b97e5de00411
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
主节点端口 | 槽位 | 从节点端口 | |
---|---|---|---|
30001 | 0-5460 | 30005 | |
30002 | 5461-10922 | 30006 | |
30003 | 10923 - 16383 | 30004 |
步骤三:查看进程
[root@dtinone create-cluster]# ps -ef | grep redis
[root@node-01 create-cluster]# ps -ef | grep redis
root 2392 1 0 17:14 ? 00:00:00 ../../src/redis-server *:30001 [cluster]
root 2394 1 0 17:14 ? 00:00:00 ../../src/redis-server *:30002 [cluster]
root 2402 1 0 17:14 ? 00:00:00 ../../src/redis-server *:30003 [cluster]
root 2404 1 0 17:14 ? 00:00:00 ../../src/redis-server *:30004 [cluster]
root 2409 1 0 17:14 ? 00:00:00 ../../src/redis-server *:30005 [cluster]
root 2417 1 0 17:14 ? 00:00:00 ../../src/redis-server *:30006 [cluster]
root 2431 1495 0 17:18 pts/0 00:00:00 grep --color=auto redis
说明已经创建了 6 个 redis 进程实例,端口号分别是 30001- 30006
步骤四:查看集群环境
[root@node-01 redis-5.0.9]# src/redis-cli -c -p 30001 # -c:表示连接的集群环境
127.0.0.1:30001> cluster nodes # 查看集群节点信息
127.0.0.1:30003@40003 master - 0 1615540917054 3 connected 10923-16383
127.0.0.1:30005@40005 slave 0 1615540917054 5 connected
127.0.0.1:30006@40006 slave 0 1615540917254 6 connected
127.0.0.1:30002@40002 master - 0 1615540917153 2 connected 5461-10922
127.0.0.1:30004@40004 slave 0 1615540916449 4 connected
127.0.0.1:30001@40001 myself,master - 0 1615540916000 1 connected 0-5460
集群中确实是 3 个主节点,3 个 从节点
步骤五:测试集群环境
向集群端口 30001 的主节点存储数据,如下:
127.0.0.1:30001> set name zhangsan
-> Redirected to slot [5798] located at 127.0.0.1:30002
OK
127.0.0.1:30002>
结果显示,数据存储到端口为 30002 的主节点。
原因是存储数据分配的槽位是 5798,30002主节点的槽位是 [5461-10922],所以应该存储到 30002 主节点上。
127.0.0.1:30002> get name
"zhangsan"
在 30002 主节点上确实可以查看数据。
步骤六:测试集群故障转移
为了触发故障转移,我们可以做的最简单的事情(也就是在分布式系统中可能出现的语义上最简单的故障)是使单个进程崩溃,如下:
[root@node-01 redis-5.0.9]# src/redis-cli -c -p 30001 debug segfault
Error: Server closed the connection
可以看到,端口号为 30001 的主节点被我们搞崩溃了,这时查看集群节点状态,如下
[root@node-01 redis-5.0.9]# src/redis-cli -c -p 30002
127.0.0.1:30002> cluster nodes
127.0.0.1:30003@40003 master - 0 1615541662157 3 connected 10923-16383
127.0.0.1:30004@40004 slave 0 1615541661655 4 connected
127.0.0.1:30005@40005 master - 0 1615541661655 7 connected 0-5460 # 成为新的主节点
127.0.0.1:30002@40002 myself,master - 0 1615541662000 2 connected 5461-10922
127.0.0.1:30006@40006 slave 0 1615541661655 6 connected
127.0.0.1:30001@40001 master,fail - 1615541651480 1615541651077 1 disconnected
可以看到,端口 30001的主节点,显示为 fail,而它的从节点是端口 30005,现在已经切换为主节点,说明集群故障转移成功。
Redis 快速集群环境搭建的更多相关文章
- redis哨兵集群环境搭建
一.哨兵的介绍 哨兵(sentinal)是redis集群架构中非常重要的一个组件,主要功能如下: 集群监控,负责监控redis master和slave进程是否正常工作 消息通知,如果某个redis实 ...
- Redis之集群环境搭建
前面文章介绍了Redis的主从复制,虽然该模式能够在一定程度上提高系统的稳定性,但是在数据访问量比较大的情况下,单个master应付起来还是比较吃力的,这时我们可以考虑将redis集群部署,本文就来重 ...
- Redis集群环境搭建实践
0 Redis集群简介 Redis集群(Redis Cluster)是Redis提供的分布式数据库方案,通过分片(sharding)来进行数据共享,并提供复制和故障转移功能.相比于主从复制.哨兵模式, ...
- Redis与Redis 伪集群环境的搭建
一 .准备工作 GCC编译环境 ruby运行环境 安装ruby脚本运行包 二.环境安装 1.GCC环境 首先,因为redis是由C语言编写的,所以需要安装GCC环境,可以用 gcc -v 命令来检查是 ...
- Docker 搭建 Redis Cluster 集群环境
使用 Docker 搭建 Redis Cluster,最重要的环节就是容器通信的问题,这一块我们在之前的文章中已经给大家解决了<Docker 网络模式详解及容器间网络通信>,本篇文章主要练 ...
- Docker Compose 搭建 Redis Cluster 集群环境
在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...
- Ningx集群环境搭建
Ningx集群环境搭建 Nginx是什么? Nginx ("engine x") 是⼀个⾼性能的 HTTP 和 反向代理 服务器,也是⼀个 IMAP/ POP3/SMTP 代理服务 ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(三)安装spark2.2.1
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
- Hadoop完全分布式集群环境搭建
1. 在Apache官网下载Hadoop 下载地址:http://hadoop.apache.org/releases.html 选择对应版本的二进制文件进行下载 2.解压配置 以hadoop-2.6 ...
随机推荐
- 201871030110-何飞 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告
201871030110-何飞 实验三 结对项目-<D{0-1}KP 实例数据集算法实验平台>项目报告 项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 ...
- 敏捷史话(十四):敏捷之峰的攀登者 —— Jim Highsmith
"我们希望,一起组成的敏捷联盟能够帮助到其他同行,帮他们用新的更'敏捷'的方式去思考软件开发.方法论和组织.做到这一点,我们就得偿所愿了."Jim Highsmith 在雪鸟会议结 ...
- 一次错误使用 go-cache 导致出现的线上问题
话说一个美滋滋的上午, 突然就出现大量报警, 接口大量请求都响应超时了. 排查过程 查看服务器的监控系统, CPU, 内存, 负载等指标正常 排查日志, 日志能够响应的结果也正常. request.l ...
- 使用Viper读取Nacos配置(开源)
使用Viper读取Nacos配置(开源) 一.前言 目前Viper支持的Remote远程读取配置如 etcd, consul:目前还没有对Nacos进行支持,本文中将开源一个Nacos的Viper支持 ...
- Pandas——Series and DataFrane
数据科学--pandas库 pandas中有两个主要的数据结构,一个是Series,另一个是DataFrame.通过这两类数据,可以下载数据.可视化数据.和分析数据. Pandas安装:pip ins ...
- .Net之Docker部署详细流程
开篇语 自己从头开始走一遍docker部署.net的流程,作为一种学习总结,以及后续会写一些在该基础之上的文章. 本次示例环境:vs2019.net5.docker.postman 创建项目 本次事例 ...
- wordpress current_user_can 判断角色
current_user_can 使用说明: current_user_can( $capability, $args ); $capability参数是必须的,是指给予什么样的能力,或者说给他可以做 ...
- PHP--date转成时间戳,time()获取的是秒数
date("Y-m-d H:i:s"); //如果存成datetime型在MYSQL中 必须用这种格式 实现功能:获取某个日期的时间戳,或获取某个时间的时间戳.strtotime ...
- PAT 乙级 -- 1005 -- 继续(3n+1)猜想
题目简述 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如 ...
- hdu4975 行列和构造矩阵(dp判断唯一性)
题意: 和hdu4888一样,只不过是数据加强了,就是给你行列的和,让你构造一个矩阵,然后判断矩阵是否唯一. 思路: 构造矩阵很简单,跑一次最大流就行了,关键是判断矩阵的唯一性 ...