分片集群模式
- 概念
- 动手实操
- 1、环境准备
- 2、配置文件配置
- 3、启动所有redis
- 4、创建集群
- 5、测试集群读/写
概念
Redis 分片集群是一种用于横向扩展 Redis 数据库的方法,它将数据分散存储在多个 Redis 节点中,从而提高了系统的吞吐量和容量。在 Redis 分片集群中,数据被分割成多个片段(或分片),然后分布在不同的 Redis 节点上。
以下是 Redis 分片集群的一些关键概念和工作原理:
-
分片:数据按照某种规则(比如哈希)被分割成多个片段,每个片段被称为一个槽(slot)。槽是 Redis 分片集群中数据的基本单元。
-
节点:Redis 分片集群由多个节点组成,每个节点都是一个独立的 Redis 服务器。每个节点都负责存储和处理一部分数据片段,并且节点之间相互通信以实现数据的路由和同步。
-
槽分配:在 Redis 分片集群中,每个槽都被分配给一个节点,节点负责存储和处理分配给它的槽中的数据。槽的分配可以由系统自动完成,也可以手动配置。
-
路由:当客户端发送命令到 Redis 分片集群时,集群会根据命令操作的键值来确定数据属于哪个槽,并将命令路由到负责该槽的节点上进行处理。
-
数据复制:为了提高数据的可用性和容错性,Redis 分片集群通常会对数据进行复制。每个槽中的数据通常会有一个或多个副本,这些副本存储在不同的节点上。当主节点(存储数据的节点)宕机时,系统会自动选举一个从节点(副本节点)来成为新的主节点,从而保证数据的可用性。
-
集群管理:Redis 分片集群需要进行管理和监控,包括节点的健康状态监测、槽的分配和重新分配、数据的迁移、故障恢复等。Redis 提供了一些工具和命令来进行集群管理,比如
redis-cli
、redis-trib.rb
、CLUSTER
命令等。
动手实操
1、环境准备
三台centos7虚拟机,每台虚拟机,一个master,一个slave
节点 | IP | PORT |
---|---|---|
master | 192.168.3.131 | 8001 |
master | 192.168.3.137 | 8002 |
master | 192.168.3.138 | 8003 |
slave | 192.168.3.131 | 9001 |
slave | 192.168.3.137 | 9002 |
slave | 192.168.3.138 | 9003 |
2、配置文件配置
由于需要和之前搭建的主从模式、哨兵模式的redis集群区分开,同时满足6个节点(3个master、3个slave),所以我直接重新复制原装的redis.conf文件到每台虚拟机对应的两个文件夹(master、slave)里面
我在三台服务器的/usr/local/bin/kconfig
文件夹下新建master
、slave
文件夹,并复制原装的redis.conf
接着给每个redis.conf
文件修改以下内容:我这里是先改一个,复制到另外5个,再小改(整体符合实际即可)
port 8001
# 开启集群功能
cluster-enabled yes
# 集群的配置文件名称,不需要我们创建,由redis自己维护
cluster-config-file /tmp/master/nodes-6379.conf
# 节点心跳失败的超时时间
cluster-node-timeout 5000
# 持久化文件存放目录
dir /tmp/master
# 绑定地址
bind 0.0.0.0
# 让redis后台运行
daemonize yes
# 注册的实例ip
replica-announce-ip 192.168.3.131
# 保护模式
protected-mode no
# 数据库数量
databases 1
# 日志
logfile /tmp/master/run.log
以3台虚拟机的master为例
给redis的输出文件创建文件夹,否则会报错
3、启动所有redis
redis-server kconfig/master/redis.conf
redis-server kconfig/slave/redis.conf
ps -ef | grep redis
4、创建集群
虽然服务启动了,但是目前每个服务之间都是独立的,没有任何关联。
我们需要执行命令来创建集群,在Redis5.0
之前创建集群比较麻烦,5.0
之后集群管理命令都集成到了redis-cli
中。
笔者在这里只介绍redis5.0之后的
我们使用的是Redis5.0.7
版本,集群管理以及集成到了redis-cli
中,格式如下:
redis-cli --cluster create 192.168.3.131:8001 192.168.3.131:9001 192.168.3.137:8002 192.168.3.137:9002 192.168.3.138:8003 192.168.3.138:9003 --cluster-replicas 1
这里输入yes
,则集群开始创建:
通过命令可以查看集群状态:
redis-cli -p 8001 cluster nodes
5、测试集群读/写
集群操作时,需要给redis-cli
加上-c
参数,否则会报错
以131服务器的8001为例:
redis-cli -c -p 8001
当我们写键值对的时候,redis分片集群会自动算到其中一个master/slave节点,将键值对保存
1)假如138服务器的master节点宕机,800*都为master节点
2)集群信息