Ubuntu搭建Redis集群

简介: Ubuntu搭建Redis集群

为什么要有集群


之前我们已经讲了主从的概念,一主可以多从,如果同时的访问量过大(1000w),主服务肯定就会挂掉,数据服务就挂掉了或者发生自然灾难


大公司都会有很多的服务器(华东地区、华南地区、华中地区、华北地区、西北地区、西南地区、东北地区、台港澳地区机房)


集群的概念



集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。


当请求到来首先由负载均衡服务器处理,把请求转发到另外的一台服务器上。


redis集群


分类


  • 软件层面



  • 硬件层面



软件层面:只有一台电脑,在这一台电脑上启动了多个redis服务。


硬件层面:存在多台实体的电脑,每台电脑上都启动了一个redis或者多个redis服务。


搭建集群


当前拥有两台主机172.16.179.130、172.16.179.131,这⾥的IP在使⽤时要改为实际值


参考阅读


redis集群搭建


[Python]搭建redis集群


配置机器1


在演示中,172.16.179.130为当前ubuntu机器的ip


在172.16.179.130上进⼊Desktop⽬录,创建conf⽬录


在conf⽬录下创建⽂件7000.conf,编辑内容如下


port 7000
bind 172.16.179.130
daemonize yes
pidfile 7000.pid
cluster-enabled yes
cluster-config-file 7000_node.conf
cluster-node-timeout 15000
appendonly yes


在conf⽬录下创建⽂件7001.conf,编辑内容如下


port 7001
bind 172.16.179.130
daemonize yes
pidfile 7001.pid
cluster-enabled yes
cluster-config-file 7001_node.conf
cluster-node-timeout 15000
appendonly yes


在conf⽬录下创建⽂件7002.conf,编辑内容如下


port 7002
bind 172.16.179.130
daemonize yes
pidfile 7002.pid
cluster-enabled yes
cluster-config-file 7002_node.conf
cluster-node-timeout 15000
appendonly yes


总结:三个⽂件的配置区别在port、pidfile、cluster-config-file三项


使⽤配置⽂件启动redis服务


redis-server 7000.conf
redis-server 7001.conf
redis-server 7002.conf


查看进程如下图



配置机器2(172.16.179.130 与1 步骤相同,将IP地址换为机器2的即可)



创建集群


文档连接


redis的安装包中包含了redis-trib.rb,⽤于创建集群


接下来的操作在配置机器1上进⾏


将命令复制,这样可以在任何⽬录下调⽤此命令


sudo cp /usr/share/doc/redis-tools/examples/redis-trib.rb /usr/local/bin/


安装ruby环境,因为redis-trib.rb是⽤ruby开发的


sudo apt-get install ruby


在提示信息处输⼊y,然后回⻋继续安装


运⾏如下命令创建集群


redis-trib.rb create --replicas 1 172.16.179.130:7000 172.16.179.130:7001 172.16.179.130:7002 172.1


执⾏上⾯这个指令在某些机器上可能会报错,主要原因是由于安装的 ruby 不是最 新版本!


天朝的防⽕墙导致⽆法下载最新版本,所以需要设置 gem 的源


解决办法如下


  1. 先查看⾃⼰的 gem 源是什么地址


gem source -l – 如果是https://rubygems.org/ 就需要更换


  1. 更换指令为


gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/


  1. 通过 gem 安装 redis 的相关依赖


sudo gem install redis



  1. 然后重新执⾏指令


redis-trib.rb create --replicas 1 172.16.179.130:7000 172.16.179.130:7001 172.16.179.130:7002 17


提示如下主从信息,输⼊yes后回⻋



提示完成,集群搭建成功


数据验证


根据上图可以看出,当前搭建的主服务器为7000、7001、7003,对应的从服务器是7004、7005、7002


  • 在172.16.179.131机器上连接7002,加参数-c表示连接到集群


redis-cli -h 172.16.179.131 -c -p 7002


  • 写⼊数据


set name itheima


  • ⾃动跳到了7003服务器,并写⼊数据成功



  • 在7003可以获取数据,如果写入数据又重定向到7000(负载均衡)



在哪个服务器上写数据:CRC16


  • redis cluster在设计的时候,就考虑到了去中⼼化,去中间件,也就是说,集群中 的每个节点都是平等的关系,都是对等的,每个节点都保存各⾃的数据和整个集 群的状态。每个节点都和其他所有节点连接,⽽且这些连接保持活跃,这样就保 证了我们只需要连接集群中的任意⼀个节点,就可以获取到其他节点的数据


  • Redis集群没有并使⽤传统的⼀致性哈希来分配数据⽽是采⽤另外⼀种叫做哈希槽 (hash slot)的⽅式来分配的。redis cluster 默认分配了 16384 个slot,当我们 set⼀个key 时,会⽤CRC16算法来取模得到所属的slot,然后将这个key 分到哈 希槽区间的节点上,具体算法就是:CRC16(key) % 16384。所以我们在测试的 时候看到set 和 get 的时候,直接跳转到了7000端⼝的节点


  • Redis 集群会把数据存在⼀个 master 节点,然后在这个 master 和其对应的salve 之间进⾏数据同步。当读取数据时,也根据⼀致性哈希算法到对应的 master 节 点获取数据。只有当⼀个master 挂掉之后,才会启动⼀个对应的 salve 节点,充当 master


  • 需要注意的是:必须要3个或以上的主节点,否则在创建集群时会失败,并且当存 活的主节点数⼩于总节点数的⼀半时,整个集群就⽆法提供服务了


相关文章
|
9月前
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
651 2
|
存储 NoSQL 数据库
Redis 逻辑数据库与集群模式详解
Redis 是高性能内存键值数据库,广泛用于缓存与实时数据处理。本文深入解析 Redis 逻辑数据库与集群模式:逻辑数据库提供16个独立存储空间,适合小规模隔离;集群模式通过分布式架构支持高并发和大数据量,但仅支持 database 0。文章对比两者特性,讲解配置与实践注意事项,并探讨持久化及性能优化策略,助你根据需求选择最佳方案。
1082 5
|
7月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
840 6
|
8月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
10月前
|
负载均衡 NoSQL Redis
【赵渝强老师】Redis的主从复制集群
Redis主从复制是指将一台Redis服务器的数据复制到其他Redis服务器,实现数据热备份、故障恢复、负载均衡及高可用架构的基础。主节点负责写操作,从节点同步数据并可提供读服务,提升并发处理能力。
332 5
|
NoSQL Ubuntu Redis
Ubuntu开机自启redis
本文介绍了如何在Ubuntu系统中通过创建systemd服务单元文件、重新加载systemd配置、启用服务和启动服务的步骤来实现Redis的开机自启动。
912 1
|
9月前
|
存储 NoSQL 算法
Redis的集群架构与使用经验
本文介绍了Redis的集群架构与使用经验,包括主从复制、哨兵集群及Cluster分片集群的应用场景与实现原理。内容涵盖Redis主从同步机制、数据分片存储方式、事务支持及与Memcached的区别,并讨论了Redis内存用尽时的处理策略。适用于了解Redis高可用与性能优化方案。
|
存储 NoSQL Redis
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 +  无锁架构 +  EDA架构  + 异步日志 + 集群架构
|
存储 NoSQL 算法
Redis分片集群中数据是怎么存储和读取的 ?
Redis集群采用的算法是哈希槽分区算法。Redis集群中有16384个哈希槽(槽的范围是 0 -16383,哈希槽),将不同的哈希槽分布在不同的Redis节点上面进行管理,也就是说每个Redis节点只负责一部分的哈希槽。在对数据进行操作的时候,集群会对使用CRC16算法对key进行计算并对16384取模(slot = CRC16(key)%16383),得到的结果就是 Key-Value 所放入的槽,通过这个值,去找到对应的槽所对应的Redis节点,然后直接到这个对应的节点上进行存取操作
|
NoSQL Ubuntu 网络安全
在 Ubuntu 20.04 上安装和配置 Redis
在 Ubuntu 20.04 上安装和配置 Redis 的步骤如下:首先更新系统包,然后通过 `apt` 安装 Redis。安装后,启用并启动 Redis 服务,检查其运行状态。可选配置包括修改绑定 IP、端口等,并确保防火墙设置允许外部访问。最后,使用 `redis-cli` 测试 Redis 功能,如设置和获取键值对。
654 1