:::tips
在Redis分片集群中,通常不需要使用Sentinel,因为Redis分片集群已经实现了数据的分片和自动故障转移,可以保证集群的高可用性和稳定性。分片集群需要的节点数量较多,这里演示搭建一个最小的分片集群,包含3个master节点,每个master包含一个slave节点,结构如下
:::
准备Redis实例
:::tips 提前准备6台Redis实例,用于实现分片集群,先准备6台Redis实例的配置文件redis.conf :::
#配置Redis服务端口
port 端口号
#开启集群功能
cluster-enabled yes
#配置Redis集群的配置文件名称,不需要我们创建,由redis自己维护
cluster-config-file /tmp/6379/nodes.conf
#配置节点心跳超时时间
cluster-node-timeout 5000
#Redis的持久化文件的存放目录
dir /tmp/6379
#允许所有IP地址访问
bind 0.0.0.0
#开启Redis后台运行
daemonize yes
#配置注册的Redis实例的IP
replica-announce-ip 192.168.136.160
#关闭保护模式
protected-mode no
#配置数据库数量
databases 1
#配置日志路径
logfile /tmp/6379/run.log
启动Redis
:::tips 然后启动每台Redis :::
redis-server redis.conf所在的路径
创建集群
:::tips 虽然服务启动了,但是目前每个服务之间都是独立的,没有任何关联,现在还需要将启动后的Redis实例绑定为集群 :::
redis-cli --cluster create --cluster-replicas 1 Redis服务所在的IP1 Redis服务所在的IP2 Redis服务所在的IP3 Redis服务所在的IP4 Redis服务所在的IP5 Redis服务所在的IP6
说明:
redis-cli --cluster或者./redis-trib.rb #表示集群操作命令
create #表示创建集群
--replicas 1或者--cluster-replicas 1 #表示指定集群中每个master的副本个数为1,此时节点总数÷(replicas + 1)得到的就是master的数量。因此节点列表中的前n个就是master,其它节点都是slave节点,随机分配到不同master
集群操作
:::tips 使用Redis客户端连接分片集群时需要加上-c参数 :::
redis-cli -c -h 任意一台Redis服务的IP地址 -p Redis服务的端口号