:::tips 在Redis分片集群中,通常不需要使用Sentinel,因为Redis分片集群已经实现了数据的分片和自动故障转移,可以保证集群的高可用性和稳定性。分片集群需要的节点数量较多,这里演示搭建一个最小的分片集群,包含3个master节点,每个master包含一个slave节点,结构如下
image.png :::

准备Redis实例

:::tips 提前准备6台Redis实例,用于实现分片集群,先准备6台Redis实例的配置文件redis.conf :::

  1. #配置Redis服务端口
  2. port 端口号
  3. #开启集群功能
  4. cluster-enabled yes
  5. #配置Redis集群的配置文件名称,不需要我们创建,由redis自己维护
  6. cluster-config-file /tmp/6379/nodes.conf
  7. #配置节点心跳超时时间
  8. cluster-node-timeout 5000
  9. #Redis的持久化文件的存放目录
  10. dir /tmp/6379
  11. #允许所有IP地址访问
  12. bind 0.0.0.0
  13. #开启Redis后台运行
  14. daemonize yes
  15. #配置注册的Redis实例的IP
  16. replica-announce-ip 192.168.136.160
  17. #关闭保护模式
  18. protected-mode no
  19. #配置数据库数量
  20. databases 1
  21. #配置日志路径
  22. logfile /tmp/6379/run.log

启动Redis

:::tips 然后启动每台Redis :::

  1. redis-server redis.conf所在的路径

创建集群

:::tips 虽然服务启动了,但是目前每个服务之间都是独立的,没有任何关联,现在还需要将启动后的Redis实例绑定为集群 :::

  1. redis-cli --cluster create --cluster-replicas 1 Redis服务所在的IP1 Redis服务所在的IP2 Redis服务所在的IP3 Redis服务所在的IP4 Redis服务所在的IP5 Redis服务所在的IP6
  2. 说明:
  3. redis-cli --cluster或者./redis-trib.rb #表示集群操作命令
  4. create #表示创建集群
  5. --replicas 1或者--cluster-replicas 1 #表示指定集群中每个master的副本个数为1,此时节点总数÷(replicas + 1)得到的就是master的数量。因此节点列表中的前n个就是master,其它节点都是slave节点,随机分配到不同master

集群操作

:::tips 使用Redis客户端连接分片集群时需要加上-c参数 :::

  1. redis-cli -c -h 任意一台Redis服务的IP地址 -p Redis服务的端口号