知识点
- 集群的密钥空间被分成 16384 个槽,有效地设置了 16384 个主节点的集群大小上限 (但是,建议的最大节点大小约为 1000 个节点)
- 取模算法。缺点:节点不固定情况下,当节点宕机,或者扩容下,计算储存机器不对,数据混乱。
- 哈希环算法2^32取模。优点:能解决节点不固定下计算数据储存问题。缺点:可能导致计算的数据分配不均匀,环型内分配中,某台机器计算范围大,大致数据倾斜。
- 哈希槽算法HASH_SLOT = CRC16(key) mod 16384 。每个key都通过技术得到对应槽位。
- redis集群支持多个master,每个master可以挂载多个slave
集群搭建
这里以一台机器为例子,以7369,7370,7371 为master,7362,7373,7374 为slave
- 修改配置redis7369.conf 同理7370,7371,7362,7373,7374 同理
- 注释#bind 127.0.0.1 -::1
- 关闭保护模式 protected-mode no
- 这里建议修改端口,为了安全不要使用默认端口 port 7369
- 后台运行 daemonize yes
- pidfile "/var/run/redis_7369.pid"
- 日志路径 logfile "/usr/local/redis7.0.0/log7369"
- 修改rdb文件名称 dbfilename "mydump7369.rdb" ,默认使用rdb持久化,如果需要用aof则需要修改appendonly yes
- rdb文件保存路径 dir "/usr/local/redis7.0.0/redis-7.0.0/myredis"
- 设置密码 requirepass "123456"
- 设置master密码,masterauth "123456"
- cluster-enabled yes 开启集群
- cluster-config-file nodes-7369.conf 集群配置文件
- cluster-node-timout 5000 集群通讯超时时间
- 启动服务器
- redis/bin/redis-server redis7.0.0/myredis/redis7369.conf
- 设置集群关系 redis/bin/redis-cli -a 123456 --cluster create --cluster-replicas 1 host:7369 host:7370 host:7371 host:7372 host:7373 host:7374
- 链接master 7369,CLUSTER NODES查看集群关系
- 在master set值时会报错,原因是因为当值的槽位,不在当前机器的槽位的范围。解决方案:在链接的时候加- c
- 当节点master节点宕机,slave会自动转成master。如果宕机的master重启,之前的master会成slave。如果需要达到原来的顺序。执行 CLUSTER NODES 命令