Redis 集群部署
admin
2023-01-27 16:37:46
0

Redis Cluster 部署文档

updated: 09/05/2019

1 说明

Redis Cluster 的主要特点如下:

  • 无中心结构,客户端与 redis 节点直连,不需要中间代理层
  • 节点冗余设计,slave->master 选举,集群容错
  • 数据分片存储,且支持在线分片
  • ASK / MOVED 转向机制,可通过任意节点,读写不属于本节点的数据

本文以部署一个可实现高可用的最小集群为例,集群部署在三台主机上,包含 M1、M2、M3、S1、S2、S3 六个节点。

M1、M2、M3 为主节点对应 Redis 实例:7000,7001,7002
S1、S2、S3 为从节点对应 Redis 实例:7003,7004,7005

主从节点交叉连接,对应关系为:

M1 -> S2
M2 -> S3
M3 -> S1

2 环境准备

系统环境

主机 IP 节点-角色-实例(端口)
redis1 192.168.0.100 M1-master-7000、S1-slave-7003
redis2 192.168.0.101 M2-master-7001、S2-slave-7004
redis3 192.168.0.102 M3-master-7002、S3-slave-7005

3 安装软件

分别在三台主机上编译安装 redis 5.0.4 版本。

安装完毕建议将 redis bin 目录加入 PATH 环境变量

4 配置集群

参考步骤 4.1 - 4.3,分别在三台主机上进行 Redis 集群配置。

4.1 创建集群目录

创建集群各节点配置和数据目录。

mkdir -p /data/redis-cluster/{7000,7001}

以 redis1 为例,目录结构如下:

/data/redis-cluster/
├── 7000
│   ├── redis.conf  # redis 实例配置文件
│   └── nodes.conf  # redis 集群节点的配置文件(由集群自动创建)
└── 7003
│   ├── redis.conf  # redis 实例配置文件
│   └── nodes.conf  # redis 集群节点的配置文件(由集群自动创建)
4.2 创建实例配置文件

分别复制 redis 源码目录下的 redis.conf 至节点配置和数据目录。

编辑 redis 实例配置文件中的各项配置。redis 默认未开启集群功能,需修改下面几个配置开启:

port 7000
bind 0.0.0.0                    # 允许其他主机连接
dir /data/redis-cluster/7000    # 节点实例配置目录
cluster-enabled yes             # 开启集群
cluster-config-file nodes.conf  # 集群配置文件
cluster-node-timeout 5000       # 超时时间
appendonly yes                  # 并开启AOF模式

请根据生产环境性能需求和实际部署情况修改相关配置项,注意每个节点的实例配置文件中端口不同。

4.3 防火墙设置

根据情况修改服务器防火墙配置,允许 Redis 主机互相连接 7000-7005, 17000-17005 端口,允许所有业务服务器连接 Redis 服务器的 7000-7005 端口。

5 启动集群

5.1 启动实例

分别在三台主机上启动全部 6 个 redis 节点实例,启动时指定配置文件为各自节点配置目录中的 redis.conf。

5.2 启动集群

在任意一台 redis 节点主机上执行如下命令启动集群:

redis-cli --cluster create \
    --cluster-replicas 1 \
    192.168.0.100:7000 \
    192.168.0.100:7001 \
    192.168.0.101:7002 \
    192.168.0.101:7003 \
    192.168.0.102:7004 \
    192.168.0.102:7005

注意修改命令中的 IP 为 redis 节点实例端口对应的真实主机 IP。

根据提示输入yes,出现下列信息则表示集群创建成功。

[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

6 测试

查看集群信息

在任意一个 redis 节点的主机上执行以下命令:

# redis-cli -c -h 192.168.0.100 -p 7000 cluster info

应输出类型以下信息:

cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:101
cluster_stats_messages_pong_sent:98
cluster_stats_messages_sent:199
cluster_stats_messages_ping_received:93
cluster_stats_messages_pong_received:101
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:199

列出集群节点

在任意一个 redis 节点的主机上执行以下命令,列出集群当前已知的所有节点(node),以及这些节点的相关信息。

# redis-cli -c -h 192.168.0.100 -p 7000 cluster nodes

输出类似以下信息:

50725018cd7f5f20214b0ed462975258397dfe29 192.168.0.102:7005@17005 slave 39e335386bb48f012f433287ed853174009114e5 0 1554876136000 6 connected
8874f69c2f5747cce3a02387167a00cdaba43d3c 192.168.0.100:7001@17001 master - 0 1554876137380 2 connected 5461-10922
c9cb48efbc1a83098cb730a5295402d9cdb343c2 192.168.0.101:7003@17003 slave 917301c74a9ed1ed52918b8e4c7f88de9743c361 0 1554876136375 4 connected
5633e918818033552b1adc089d99fbe9bcf36589 192.168.0.102:7004@17004 slave 8874f69c2f5747cce3a02387167a00cdaba43d3c 0 1554876136072 5 connected
917301c74a9ed1ed52918b8e4c7f88de9743c361 192.168.0.100:7000@17000 myself,master - 0 1554876136000 1 connected 0-5460
39e335386bb48f012f433287ed853174009114e5 192.168.0.101:7002@17002 master - 0 1554876136878 3 connected 10923-16383

查看集群数据槽分配

在任意一个 redis 节点的主机上执行以下命令,显示集群当前所有数据槽的分配情况。

# redis-cli -c -h 192.168.0.100 -p 7000 cluster slots

输出类似以下信息:

1) 1) (integer) 5461
   2) (integer) 10922
   3) 1) "127.0.0.1"
      2) (integer) 7001
   4) 1) "127.0.0.1"
      2) (integer) 7004
2) 1) (integer) 0
   2) (integer) 5460
   3) 1) "127.0.0.1"
      2) (integer) 7000
   4) 1) "127.0.0.1"
      2) (integer) 7003
3) 1) (integer) 10923
   2) (integer) 16383
   3) 1) "127.0.0.1"
      2) (integer) 7002
   4) 1) "127.0.0.1"
      2) (integer) 7005

相关内容

热门资讯

终于了解“九九牌游十三水.怎么... 终于了解“九九牌游十三水.怎么装挂?”外卦神器下载您好,九九牌游十三水这个游戏其实有挂的,确实是有挂...
今日重大消息“先锋大厅.怎么开... 家人们!今天小编来为大家解答先锋大厅透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里买很...
今日重大消息“同城跑胡子.到底... 网上科普关于“同城跑胡子有没有挂”话题很是火热,小编也是针对同城跑胡子作*弊开挂的方法以及开挂对应的...
【第一资讯】“七彩丹霞.到底有... 【第一资讯】“七彩丹霞.到底有挂吗?”必胜开挂神器您好,七彩丹霞这个游戏其实有挂的,确实是有挂的,需...
2025企业科技创新发展论坛在... 中证报中证网讯(记者 张兴旺)12月13日,2025企业科技创新发展论坛在深圳举办。该论坛以“融链赋...
原创 为... 在阅读文章前,辛苦您点下“关注”,方便讨论和分享。作者定会不负众望,按时按量创作出更优质的内容 文...
【今日要闻】“玄龙二厅.有没有... 家人们!今天小编来为大家解答玄龙二厅透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买很...
今日重磅消息“科乐填大坑.辅助... 家人们!今天小编来为大家解答科乐填大坑透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买...
我来教教您“新海贝之城拼三张.... 有 亲,根据资深记者爆料新海贝之城拼三张是可以开挂的,确实有挂(咨询软件...
今日重磅消息“哪吒重生.辅助器... 家人们!今天小编来为大家解答哪吒重生透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里买很...