Ubuntu搭建Redis集群

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 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个或以上的主节点,否则在创建集群时会失败,并且当存 活的主节点数⼩于总节点数的⼀半时,整个集群就⽆法提供服务了


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
NoSQL Ubuntu Redis
Ubuntu开机自启redis
本文介绍了如何在Ubuntu系统中通过创建systemd服务单元文件、重新加载systemd配置、启用服务和启动服务的步骤来实现Redis的开机自启动。
127 1
|
14天前
|
Kubernetes Ubuntu 网络安全
ubuntu使用kubeadm搭建k8s集群
通过以上步骤,您可以在 Ubuntu 系统上使用 kubeadm 成功搭建一个 Kubernetes 集群。本文详细介绍了从环境准备、安装 Kubernetes 组件、初始化集群到管理和使用集群的完整过程,希望对您有所帮助。在实际应用中,您可以根据具体需求调整配置,进一步优化集群性能和安全性。
61 12
|
1月前
|
存储 NoSQL Redis
redis主从集群与分片集群的区别
主从集群通过主节点处理写操作并向从节点广播读操作,从节点处理读操作并复制主节点数据,优点在于提高读取性能、数据冗余及故障转移。分片集群则将数据分散存储于多节点,根据规则路由请求,优势在于横向扩展能力强,提升读写性能与存储容量,增强系统可用性和容错性。主从适用于简单场景,分片适合大规模高性能需求。
53 5
|
5月前
|
监控 NoSQL Redis
看完这篇就能弄懂Redis的集群的原理了
看完这篇就能弄懂Redis的集群的原理了
200 0
|
5月前
|
NoSQL Ubuntu 安全
在Ubuntu 18.04上安装和保护Redis的方法
在Ubuntu 18.04上安装和保护Redis的方法
106 0
|
3月前
|
缓存 NoSQL Ubuntu
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
71 3
|
3月前
|
NoSQL Ubuntu Redis
Ubuntu安装redis
本文介绍了在Ubuntu系统上安装Redis的两种方法:一种是通过编译安装本地Redis包,包括下载、解压、编译安装、配置启动和测试连接的步骤;另一种是通过apt安装在线的Redis包,并提供了更新系统软件包列表、安装Redis服务器、检查Redis服务器状态和测试连接的命令。
234 0
Ubuntu安装redis
|
3月前
|
负载均衡 应用服务中间件 nginx
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
90 1
|
4月前
|
存储 关系型数据库 文件存储
Ubuntu22.04LTS基于cephadm快速部署Ceph Reef(18.2.X)集群
这篇文章是关于如何在Ubuntu 22.04LTS上使用cephadm工具快速部署Ceph Reef(18.2.X)存储集群的详细教程,包括ceph的基本概念、集群的搭建步骤、集群管理以及测试集群可用性等内容。
940 8
Ubuntu22.04LTS基于cephadm快速部署Ceph Reef(18.2.X)集群
|
5月前
|
NoSQL Ubuntu Oracle
在Ubuntu 14.04上安装Cassandra并运行单节点集群的方法
在Ubuntu 14.04上安装Cassandra并运行单节点集群的方法
78 0