Redis05-redis集群
1、redis集群概述
- Redis 集群是 Redis 官方提供的 分布式解决方案,用于解决单机 Redis 在 数据容量、并发性能 和 高可用性 方面的瓶颈
- 数据分片,数据按哈希槽(16384 slots)分配到不同节点,支持水平扩展。
- 故障转移,主节点宕机时,从节点自动提升为新主节点(类似 Sentinel,但集成在集群内)。
- 扩容/缩容,支持动态增加或移除节点,数据自动重新分配。
- 提高性能,读写请求分散到不同节点,突破单机性能限制。
hash slots(槽) 个数 16384
hash slots(槽) 范围 0~16383
所有主库平分hash槽,从库没有hash槽
主库之间的数据是独立的,不一样的
集群不能用的情况:
(1)有半数或者半数以上的主库机器down掉
(2)没有从库,集群不能用
一个主库挂掉,它的从库自动顶替为主库,此时主库的hash槽也给了从库,正常使用,挂掉的主库修复好后,会成为从库,不会抢占为主,而且在挂掉期间主库上存储的数据,也会自动同步到从库
部署redis集群
- Redis集群节点数量至少为6个才能保证组成完整高可用的集群。
- 建议为集群内所有节点统一目录,一般划分三个目录:conf、data、log,分别存放配置、数据和日志相关文件。
- 这里配置的是3主3从
修改配置文件,6台redis服务器都要修改
vim /apps/redis/redis_6379.conf
port 6379 #每个节点的端口不同
appendonly yes
daemonize yes
logfile "/apps/redis/logs/6379.log"
pidfile /var/run/redis_6379.pid #每个节点的pid文件不同
cluster-enabled yes #开启集群模式
cluster-config-file nodes-6379.conf #存储集群信息的配置文件,自动生成,不允许相同
cluster-node-timeout 5000 #集群节点通信超时时间(毫秒)
启动所有节点
redis-server /apps/redis/redis_6379.conf
3、关闭防火墙和selinux(以51为例子)
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
4、查看集群信息
redis-cli -h 192.168.4.51 -p 6351
192.168.4.51:6351> ping
PONG
192.168.4.51:6351> cluster info
目前还没有创建集群,所以显示fail
cluster_state:fail
cluster_slots_assigned:0
cluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:1
cluster_size:0
...
5、查看集群节点信息
192.168.4.51:6351> cluster nodes
f81f997d5ed988ec1587558e78d5f7dbc96abcbf :6351@16351 myself,master - 0 0 0 connected
/var/lib/redis/6379/nodes-6351.conf
创建集群
在任意一台上执行创建集群的脚本都可以,这里在51上面执行
1、部署ruby脚本运行环境(在51上面执行)
yum -y install ruby
rpm -ivh ruby-devel-2.0.0.648-30.el7.x86_64.rpm
which gem
/usr/bin/gem
gem install redis.gem
生成创建集群的脚本
cd /root/redis/redis-4.0.8/src/
从源码目录拷贝到系统目录
cp redis-trib.rb /usr/local/bin/
chmod 755 /usr/local/bin/redis-trib.rb
2、创建和管理集群 51 52 53 为主
./redis-trib.rb create --replicas 1 \
192.168.4.51:6351 192.168.4.52:6352 \
192.168.4.53:6353 192.168.4.54:6354 \
192.168.4.55:6355 192.168.4.56:6356
查看集群信息,任意一台主机访问本机的redis服务查看即可
cluster info # 查看集群信息
cluster nodes # 查看集群节点信息
测试集群,客户端访问任意一台master主机,存放数据,在其他服务器上查看
redis-cli -c -h ip地址 -p 端口
# -c是访问集群模式
# 主库提供读写服务,从库提供只读服务
查看库在集群中的角色
info relpication
集群节点选举策略(三主,三从)
停止某个主库的redis服务,对应的从库会自动升级为主库,包括原主库的hash槽也会直接给从库,当之前的主库恢复时,自动成为当前主库的从库,且在它坏掉期间,主库上新存的数据,会自动同步到主库上

浙公网安备 33010602011771号