概述

目标:在单台物理机上搭建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集群单机环境搭建的更多相关文章

  1. 一文轻松搞懂redis集群原理及搭建与使用

    今天早上由于zookeeper和redis集群不在同一虚拟机导致出了点很小错误(人为),所以这里总结一下redis集群的搭建以便日后所需同时也希望能对你有所帮助. 笔主这里使用的是Centos7.如果 ...

  2. Redis | 一文轻松搞懂redis集群原理及搭建与使用

    转载:https://juejin.im/post/5ad54d76f265da23970759d3 作者:SnailClimb 这里总结一下redis集群的搭建以便日后所需同时也希望能对你有所帮助. ...

  3. redis单点、redis主从、redis哨兵sentinel,redis集群cluster配置搭建与使用

    目录 redis单点.redis主从.redis哨兵 sentinel,redis集群cluster配置搭建与使用 1 .redis 安装及配置 1.1 redis 单点 1.1.2 在命令窗口操作r ...

  4. redis集群离线安装环境搭建过程

    本文是继上次redis集群重新整理的离线搭建环境,关于前期的redis集群准备工作参考我另一篇博客: http://www.cnblogs.com/qlqwjy/p/8566573.html 由于集群 ...

  5. 超详细,多图文介绍redis集群方式并搭建redis伪集群

    超详细,多图文介绍redis集群方式并搭建redis伪集群 超多图文,对新手友好度极好.敲命令的过程中,难免会敲错,但为了截好一张合适的图,一旦出现一点问题,为了好的演示效果,就要从头开始敲.且看且珍 ...

  6. centos 8 集群Linux环境搭建

    一.集群Linux环境搭建 1. 注意事项 1.1 windows系统确认所有的关于VmWare的服务都已经启动 打开任务管理器->服务,查看五个VM选项是否打开. 1.2 确认好VmWare生 ...

  7. Hadoop详解(02)Hadoop集群运行环境搭建

    Hadoop详解(02)Hadoop集群运行环境搭建 虚拟机环境准备 虚拟机节点数:3台 操作系统版本:CentOS-7.6-x86-1810 虚拟机 内存4G,硬盘99G IP地址分配 192.16 ...

  8. Redis集群~windows下搭建Sentinel环境及它对主从模式的实际意义

    回到目录 关于redis-sentinel出现的原因 Redis集群的主从模式有个最大的弊端,就是当主master挂了之前,它的slave从服务器无法提升为主,而在redis-sentinel出现之后 ...

  9. redis集群cluster模式搭建

    实验服务器 :192.168.44.139    192.168.44.138  192.168.44.144 在 192.168.44.139上操作: 将redis的包上传的新建的目录newtouc ...

  10. JAVAEE——宜立方商城06:Redis安装、数据类型和持久化方案、Redis集群分析与搭建、实现缓存和同步

    1. 学习计划 1.首页轮播图展示 2.Redis服务器搭建 3.向业务逻辑中添加缓存. 4.使用redis做缓存 5.缓存同步. 2. 首页轮播图动态展示 2.1. 功能分析 根据分类id查询内容列 ...

随机推荐

  1. [转帖]Jmeter性能测试:高并发分布式性能测试

    一.为什么要进行分布式性能测试 当进行高并发性能测试的时候,受限于Jmeter工具本身和电脑硬件的原因,无法满足我们对大并发性能测试的要求.基于这种场景下,我们就需要采用分布式的方式来实现我们高并发的 ...

  2. CPU算力提升与实际性能提升的关系

    关于SPEC2006CPU和RedisBenchmark的理解 最近研究过硬件CPU的性能和Redis这样单线程重IO服务 突然想对比一下CPU算力提升占Redis性能提升的比率情况 性能很大程度由C ...

  3. [转帖]@Autowired 和 @Resource 的区别

    @Autowired 和 @Resource 的区别 默认注入方式不同 @Autowired 默认的注入方式为byType(根据类型进行匹配),也就是说会优先根据接口类型去匹配并注入 Bean (接口 ...

  4. JVM内存学习 2.0

    先说一下结果 1. Linux的内存分配是惰性分配的. APP申明了 kernel并不会立即进行初始化和使用. 2. JVM的内存主要分为, 堆区, 非堆区, 以及jvm使用的其他内存. 比如直接内存 ...

  5. Rsync的简单使用

    Rsync的简单使用 需求 一个运行很久的系统里面可能包含了非常多的垃圾文件. 但是又不可能随便删除, 很多垃圾可能有某些奇葩的用法. 有时候新建一个应用复制文件的话比较浪费磁盘和带宽. 所以这里简单 ...

  6. 三十分钟入门基础Go(Java小子版)

    作者:京东科技 韩国凯 前言 Go语言定义 Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态.强类型.编 ...

  7. 清空elementui让计数器input-number的默认值

    <el-form-item label="考试时长:" prop="testTimeLong"> <el-input-number style ...

  8. CouchDB vs. LevelDB

    CouchDB 和 LevelDB 都是数据库系统,但它们在很多方面有着不同的设计和应用重点.下面是对这两个数据库在一些关键点上的对比: 数据模型: CouchDB:CouchDB 是一种面向文档的数 ...

  9. Fabric网络升级(总)

    原文地址在这里. 在fabric网络中,升级nodes和通道至最新版本需要四步: 备份账本和MSPs. 以滚动的方式将orderer升级到最新版. 以滚动的方式将peers升级到最新版. 将order ...

  10. HEVC扩展备用安装方法

    这个玩意微软商店免费但是下架了,购买需要RMB 安装 转到 https://store.rg-adguard.net/ 在左侧的下拉菜单选择"ProductId" 把链接中&quo ...