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槽也会直接给从库,当之前的主库恢复时,自动成为当前主库的从库,且在它坏掉期间,主库上新存的数据,会自动同步到主库上
posted @ 2024-05-10 10:33  立勋  阅读(34)  评论(0)    收藏  举报