Redis集群单机环境搭建
概述
目标:在单台物理机上搭建3主3从共6个节点的Redis集群。
版本:Redis 6.2.4
系统:Ubuntu 18.04 Desktop(IP地址:192.168.100.247)
准备工作
第一步:源码安装Redis,安装包从这里下载,详细安装步骤参考centos 6.8安装redis 。
第二步:使用不同的名称拷贝6份Redis配置文件进行参数修改。
$ tree .
.
├── 6379
│ └── redis_6379.conf
├── 6380
│ └── redis_6380.conf
├── 6479
│ └── redis_6479.conf
├── 6480
│ └── redis_6480.conf
├── 6579
│ └── redis_6579.conf
└── 6580
└── redis_6580.conf
6 directories, 6 files
以修改redis_6379.conf为例,修改如下参数:
bind 127.0.0.1 -::1 # 如果需要从外部连接,一定要注释掉这行
daemonize yes
port 6379
cluster-enabled yes
cluster-config-file nodes6379.conf
appendonly yes
protected-mode no
修改完成后,分别使用不同的配置文件启动对应6个实例。
# 分别进入到不同的目录启动对应Redis实例
$ cd 6379/
$ redis-server redis_6379.conf
$ cd 6380/
$ redis-server redis_6380.conf
$ cd 6479/
$ redis-server redis_6479.conf
$ cd 6480/
$ redis-server redis_6480.conf
$ cd 6579/
$ redis-server redis_6579.conf
$ cd 6580/
$ redis-server redis_6580.conf
$ ps uax |grep redis
zhangsan 17374 0.3 0.0 79344 5444 ? Ssl 23:26 0:00 redis-server *:6379 [cluster]
zhangsan 17383 0.2 0.0 79344 5396 ? Ssl 23:26 0:00 redis-server *:6380 [cluster]
zhangsan 17392 0.2 0.0 79344 5440 ? Ssl 23:26 0:00 redis-server *:6479 [cluster]
zhangsan 17403 0.2 0.0 79344 5308 ? Ssl 23:26 0:00 redis-server *:6480 [cluster]
zhangsan 17413 0.3 0.0 79344 5376 ? Ssl 23:27 0:00 redis-server *:6579 [cluster]
zhangsan 17425 0.2 0.0 79344 5500 ? Ssl 23:27 0:00 redis-server *:6580 [cluster]
创建集群
实例启动完成后,就可以创建Redis Cluster了。
如果Redis的版本是3.x或4.x,需要使用一个叫做redis-trib的工具;而对于Redis5.0之后的版本,Redis Cluster的命令已经集成到了redis-cli中了。
执行如下命令创建集群:
$ redis-cli --cluster create 192.168.100.247:6379 192.168.100.247:6380 192.168.100.247:6479 192.168.100.247:6480 192.168.100.247:6579 192.168.100.247:6580 --cluster-replicas 1
当看到输出了
[OK] All 16384 slots covered.
就表示Redis Cluster已经创建成功了。
查看节点信息
此时使用cluster nodes命令就可查看Redis Cluster的节点信息了。
$ redis-cli cluster nodes
7183a6fdc15887897a1bec89d3eccc0984a7c17d 127.0.0.1:6579@16579 slave 8e7b7e715b8778da09e1c1612cbcf76b26abc475 0 1665761935110 2 connected
f186fc5b020f2cdacf0228693b159c203c35779a 127.0.0.1:6479@16479 master - 0 1665761932000 3 connected 10923-16383
fa7d48e0aeb3e4d619f9f29e33def5815094b8a5 127.0.0.1:6580@16580 slave f186fc5b020f2cdacf0228693b159c203c35779a 0 1665761932000 3 connected
25c4fcf0b68de2cb5661d000fabaeaeb9d6d74bf 127.0.0.1:6379@16379 myself,master - 0 1665761933000 1 connected 0-5460
8e7b7e715b8778da09e1c1612cbcf76b26abc475 127.0.0.1:6380@16380 master - 0 1665761934104 2 connected 5461-10922
5c059705d9b0fcac5aa28b0d513b020b59e68263 127.0.0.1:6480@16480 slave 25c4fcf0b68de2cb5661d000fabaeaeb9d6d74bf 0 1665761933097 1 connected
可以看到,6379、6380和6479三个实例被配置为master节点。
也可以使用check命令查看集群中的角色关系和槽位分布情况:
$ redis-cli --cluster check 127.0.0.1:6379
127.0.0.1:6379 (25c4fcf0...) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:6479 (f186fc5b...) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:6380 (8e7b7e71...) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 127.0.0.1:6379)
M: 25c4fcf0b68de2cb5661d000fabaeaeb9d6d74bf 127.0.0.1:6379 # 6379是master节点,槽位范围[0-5460],对应的slave节点为6480
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: 7183a6fdc15887897a1bec89d3eccc0984a7c17d 127.0.0.1:6579
slots: (0 slots) slave
replicates 8e7b7e715b8778da09e1c1612cbcf76b26abc475
M: f186fc5b020f2cdacf0228693b159c203c35779a 127.0.0.1:6479 # 6479是master节点,槽位范围[10923-16383],对应的slave节点为6580
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: fa7d48e0aeb3e4d619f9f29e33def5815094b8a5 127.0.0.1:6580
slots: (0 slots) slave
replicates f186fc5b020f2cdacf0228693b159c203c35779a
M: 8e7b7e715b8778da09e1c1612cbcf76b26abc475 127.0.0.1:6380 # 6380是master节点,槽位范围[5461-10922],对应的slave节点为6579
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 5c059705d9b0fcac5aa28b0d513b020b59e68263 127.0.0.1:6480
slots: (0 slots) slave
replicates 25c4fcf0b68de2cb5661d000fabaeaeb9d6d74bf
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
关闭集群
停止集群中的某个节点:
# 使用redis-cli命令连接到指定节点执行SHUTDOWN命令
$ redis-cli -c -h 127.0.0.1 -p 6379 shutdown
停止集群所有节点:逐个关闭redis实例进程即可。
查找redis实例进程号:
$ ps uax |grep redis
zhangsan 23619 0.4 0.0 82416 5664 ? Ssl 22:22 0:01 redis-server 192.168.100.247:6380 [cluster]
zhangsan 23628 0.4 0.0 82416 5612 ? Ssl 22:22 0:01 redis-server 192.168.100.247:6479 [cluster]
zhangsan 23637 0.4 0.0 82416 5508 ? Ssl 22:23 0:01 redis-server 192.168.100.247:6480 [cluster]
zhangsan 23650 0.4 0.0 168440 5592 ? Ssl 22:23 0:01 redis-server 192.168.100.247:6579 [cluster]
zhangsan 23663 0.4 0.0 168440 5808 ? Ssl 22:23 0:01 redis-server 192.168.100.247:6580 [cluster]
zhangsan 23694 0.4 0.0 168440 5820 ? Ssl 22:24 0:00 redis-server 192.168.100.247:6379 [cluster]
关闭redis进程,使用kill -9 ${进程号},如果需要关闭多个进程,进程号之间空格隔开即可:
$ kill -9 23619 23628 23637 23650 23663 23694
也可执行以下命令来关闭redis进程:
$ pkill -9 redis
客户端如何连接
以使用Jedis客户端为例:
Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7379));
jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7380));
JedisCluster jedis = new JedisCluster(jedisClusterNodes);
jedis.set("name", "zhangsan");
QA
初次启动集群之后无法从外部连接,报错Connection refused。
原因:Redis默认绑定了127.0.0.1,需要注释掉配置文件中的bind 127.0.0.1 -::1;如果已经启动过集群,在修改配置之后需要先删除掉集群节点信息文件(如:nodes6379.conf),重新创建集群,参考:使用JedisCluster连接redis集群一直报Could not get a resource from the pool。
Redis集群单机环境搭建的更多相关文章
- 一文轻松搞懂redis集群原理及搭建与使用
今天早上由于zookeeper和redis集群不在同一虚拟机导致出了点很小错误(人为),所以这里总结一下redis集群的搭建以便日后所需同时也希望能对你有所帮助. 笔主这里使用的是Centos7.如果 ...
- Redis | 一文轻松搞懂redis集群原理及搭建与使用
转载:https://juejin.im/post/5ad54d76f265da23970759d3 作者:SnailClimb 这里总结一下redis集群的搭建以便日后所需同时也希望能对你有所帮助. ...
- redis单点、redis主从、redis哨兵sentinel,redis集群cluster配置搭建与使用
目录 redis单点.redis主从.redis哨兵 sentinel,redis集群cluster配置搭建与使用 1 .redis 安装及配置 1.1 redis 单点 1.1.2 在命令窗口操作r ...
- redis集群离线安装环境搭建过程
本文是继上次redis集群重新整理的离线搭建环境,关于前期的redis集群准备工作参考我另一篇博客: http://www.cnblogs.com/qlqwjy/p/8566573.html 由于集群 ...
- 超详细,多图文介绍redis集群方式并搭建redis伪集群
超详细,多图文介绍redis集群方式并搭建redis伪集群 超多图文,对新手友好度极好.敲命令的过程中,难免会敲错,但为了截好一张合适的图,一旦出现一点问题,为了好的演示效果,就要从头开始敲.且看且珍 ...
- centos 8 集群Linux环境搭建
一.集群Linux环境搭建 1. 注意事项 1.1 windows系统确认所有的关于VmWare的服务都已经启动 打开任务管理器->服务,查看五个VM选项是否打开. 1.2 确认好VmWare生 ...
- Hadoop详解(02)Hadoop集群运行环境搭建
Hadoop详解(02)Hadoop集群运行环境搭建 虚拟机环境准备 虚拟机节点数:3台 操作系统版本:CentOS-7.6-x86-1810 虚拟机 内存4G,硬盘99G IP地址分配 192.16 ...
- Redis集群~windows下搭建Sentinel环境及它对主从模式的实际意义
回到目录 关于redis-sentinel出现的原因 Redis集群的主从模式有个最大的弊端,就是当主master挂了之前,它的slave从服务器无法提升为主,而在redis-sentinel出现之后 ...
- redis集群cluster模式搭建
实验服务器 :192.168.44.139 192.168.44.138 192.168.44.144 在 192.168.44.139上操作: 将redis的包上传的新建的目录newtouc ...
- JAVAEE——宜立方商城06:Redis安装、数据类型和持久化方案、Redis集群分析与搭建、实现缓存和同步
1. 学习计划 1.首页轮播图展示 2.Redis服务器搭建 3.向业务逻辑中添加缓存. 4.使用redis做缓存 5.缓存同步. 2. 首页轮播图动态展示 2.1. 功能分析 根据分类id查询内容列 ...
随机推荐
- [转帖]Jmeter学习笔记(九)——响应断言
Jmeter学习笔记(九)--响应断言 https://www.cnblogs.com/pachongshangdexuebi/p/11571348.html Jmeter中又一个元件叫断言,用于检查 ...
- [转帖]JSR223控件简介
JSR223控件简介 1.调用内置函数 2.执行外部java文件 3.执行jar包 JSR223取样器允许执行JSR223脚本代码用于创建/更新所需的某些变量. 由于JSR223脚本编译方式基本相同, ...
- [转帖]探索惊群 ④ - nginx - accept_mutex
https://wenfh2020.com/2021/10/10/nginx-thundering-herd-accept-mutex/ 由主进程创建的 listen socket,要被 fork ...
- [转帖]FIO – IO压力测试工具
https://blog.csdn.net/younger_china/article/details/71129541 <存储工具系列文章>主要介绍存储相关的测试和调试工具,包括不限于d ...
- [转帖]Innodb存储引擎-备份和恢复(分类、冷备、热备、逻辑备份、二进制日志备份和恢复、快照备份、复制)
文章目录 备份和恢复 分类 冷备 热备 逻辑备份 mysqldump SELECT...INTO OUTFILE 恢复 二进制日志备份与恢复 快照备份(完全备份) 复制 快照+复制的备份架构 备份和恢 ...
- [转帖]比 Python 快 35000 倍!LLVM&Swift 之父宣布全新编程语言 Mojo:编程被颠覆了
https://www.infoq.cn/article/GFfVLVpkIGOcKYB85Opb "Mojo 可能是近几十年来最大的编程语言进步." 近日,由 LLVM 和 Sw ...
- [转帖]Xargs用法详解
https://www.cnblogs.com/cheyunhua/p/8796433.html 1. 简介 之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要, ...
- [转帖]Linux文件夹对比并提取的差分文件技巧-rsync的妙用
https://www.xitongjiaocheng.com/linux/2017/45720.html 需求 最近团队正在开发一个版本对比工具,要求是把A1文件夹与A2对比,将A2中的增量部分 ...
- 年末将至,Java 开发者必须了解的 16 个Java 顶级开源项目!
年末将至,值得你关注的16个Java 开源项目! 本文已经收录自笔者开源的 JavaGuide: https://github.com/Snailclimb/JavaGuide ([Java学习+面试 ...
- endnote文献使用简明教程+遇到问题
安装下载endnote 1.双击[EndNote X9 v19.0.0.12062 Setup.msi]安装EndNote X9,安装时选择试用,安装完成后不要运行EndNote: 2.如果想使用汉化 ...