首页 > 数据库 >Redis集群单机环境搭建

Redis集群单机环境搭建

时间:2022-10-15 23:22:43浏览次数:87  
标签:127.0 单机 0.1 Redis redis server cluster 集群 slots

概述

目标:在单台物理机上搭建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

标签:127.0,单机,0.1,Redis,redis,server,cluster,集群,slots
From: https://www.cnblogs.com/nuccch/p/16795339.html

相关文章

  • redis 链接要素
    1注释bind127.0.0.1这里是本机的环路ip只允许本机链接该redis其他主机无法链接2daemonizeno如果在启动docker时附带了-d的守护进程启动那么就不能在......
  • redis bitmap数据结构之java对等操作
    在之前的文章中,我们有说过bitmap,bitmap在很多场景可以应用,比如黑白名单,快速判定,登录情况等等。总之,bitmap是以其高性能出名。其基本原理是一位存储一个标识,其他衍生知......
  • hadoop集群搭建与简单应用
    系统镜像:CentOS-6.5-x86_64-Li.iso虚拟机:VMwareWorkstation16Pro(16.0.0build-16894299)JDK:1.8.0_161hadoop:2.7.0创建虚拟机虚拟机安装后将系统install对mas......
  • 基于session和redis两种方式的短信登录业务流程及代码实现
    短信登录业务短信登录的业务流程基于session实现短信登录的业务流程流程说明:发送短信:从前端获取到手机号,校验手机号,生成验证码,将验证码保存到session,并将验证码发......
  • k8s上的 部署TiDB 集群
    k8s上的部署TiDB集群一、k8s环境准备略二、k8s上部署TiDB2.1、部署StorageClass-nfs方案sc种类很多,模拟的话此处就有较为简单的nfs类型的sc#nfs部署方案http......
  • 【翻译】Raft 共识算法:集群成员变更
    转载请注明出处:https://www.cnblogs.com/morningli/p/16770129.html之前都在集群配置是固定的(参与共识算法的server集合)假设下讨论raft。在实践中,偶尔有需要改变配置,比如......
  • redis常用命令
    Redis事务命令DISCARD取消事务,放弃执行事务块内的所有命令。EXEC执行所有事务块内的命令。MULTI标记一个事务块的开始。UNWATCH取消WATCH命令对所有key的监视......
  • Redis 的简单学习与整理
    Redis的简单学习与整理背景最近一直进行Redis性能调优和高可用的课题但是不管什么课题,第一步应该是学习与使用redis之前总结过rdb与rdr分析键值对等内容.但是......
  • Redis常用命令-实战篇
    目录写在前面连接操作命令持久化远程服务控制对value操作的命令操作字符串String命令ListSetHash写在前面java操作redis太常见了,基本上有需要的系统,都会上缓存,缓存......
  • Redis6 新功能介绍
    特性的详细细节在此不赘述,我们来看Redis6.0,。Redis6.0版本特性大约可以分为四类,如下表新特性内核优化应用优化其他ACL权限管控(包括ACLLOG)过期Key回收优化......