redis集群的三种部署方式——主从复制、哨兵机制、cluster集群

前言

Redis是常用的非关系型数据库,具有以下特点:
1.核心特点

  • 高性能:Redis基于内存操作,读写速度极快,特别适用于对性能要求高的实时应用。
  • 数据持久化:支持RDB和AOF两种持久化方式,确保即使在服务器重启后也能恢复数据。
  • 分布式特性:通过主从复制、哨兵模式或cluster集群模式,Redis可以轻松地构建高可用和可扩展的服务。
  • 丰富的数据结构:提供了多种数据结构支持,便于开发人员根据实际需求进行数据建模和处理。
  • 高可用性:支持主从复制和Sentinel系统,实现高可用性和故障恢复,当主节点出现故障时,从节点可以自动接管服务,保证系统的连续性和稳定性。
  • 开源免费:Redis是一种开源的软件,遵守BSD协议,可以免费使用和部署。
  • 可扩展性:支持分布式部署,可以通过分片和复制等方式实现高可扩展性。
    本篇文章介绍redis集群的三种部署方式,包括主从复制、哨兵机制、cluster集群

实验环境介绍

1、6台1u1g的CentOS7 虚拟机,配置了本地yum仓库
2、XShell远程连接工具

redis安装部署

Redis的安装比较简单

yum -y install lrzsz


将压缩包拖入

为Redis安装依赖关系

yum -y install tcl gcc


将压缩包解压到指定安装目录下,编译安装

tar -zxf redis-6.2.6.tar.gz -C /usr/sr0
cd /usr/sr0/redis-6.2.6/
make && make install



指定配置文件启动redis,redis会占用终端,需要放在后台

redis-server redis.conf &


查看进程,其中6379是redis的默认端口

netstat -antp | grep 6379


进入redis

redis-cli

redis集群的三种部署方式

一、主从同步

redis的主从同步工作原理简单概括为:
1、salve向master发送sync命令
2、master启动后台存盘进程,并收集所有修改数据命令
3、master完成存盘后,传送整个数据文件到slave
4、slave接受数据文件,加载到内存中完成首次完全同步
5、后续有新数据产生时,master继续将新的数据命令传递给slave完成同步

redis的主从同步部署方式比起MySQL更加简单,只需要在配置文件中做修改,再指定配置文件启动redis即可
本实验做一主两从
准备三台配置一样的虚拟机,将三台虚拟机的防火墙都关闭

systemctl stop firewalld.service && systemctl status firewalld.service


先对担任主的第一台配置文件进行修改

cd /usr/src/redis-6.2.6/
vim redis.conf


修改bind一栏为0.0.0.0,使服务器监听所有可用的网络端口

同时对从数据库的配置文件进行修改

cd /usr/src/redis-6.2.6/
vim redis.conf



指定主节点的IP地址和端口号

重启三台虚拟机的redis,重新读取配置文件使配置生效

redis-cli shutdown
redis-server redis.conf &


进入redis命令行,查看是否生效

表示担任主节点,并且从节点的数量为两台

验证:在主节点写入数据,数据会被同步到从节点上

二、sentinel哨兵机制

Redis哨兵机制(Sentinel)是一种高可用性解决方案,用于监控和管理Redis集群中的多个节点。
1.基本概念

  • 定义:Redis Sentinel是一个分布式系统,由一个或多个Sentinel进程组成,这些进程会监控Redis集群中的主节点和从节点的健康状态。
  • 功能:主要负责监控、故障转移、通知和配置管理。
    2.工作原理
  • 监控:每个Sentinel进程定期通过PING命令检查主节点和从节点的状态。如果发现某个节点不可用,它会将其标记为主观下线状态。
  • 故障判断:当多数Sentinel实例确认某个主节点无法访问时,它们会开始进行故障转移过程。
  • 故障转移:通过选举机制,选举出一个新的主节点,并将原主节点的从节点重新配置为新的从节点。
  • 通知:当Redis实例的状态发生变化时,Sentinel可以通过通知机制将故障或恢复信息发送给管理员或其他系统。

    延续上面的实验,此时三台redis处于一主二从的状态
    同时修改三台redis的seentinel配置文件
vim sentinel.conf


指定哨兵主节点
主节点ip,端口以及哨兵投票数量2,当有2个及以上的哨兵认为主节点不可用时那么就是客观下线,就需要进行主从故障转移

超过该时间主节点没有响应哨兵,则哨兵会对主节点主观下线,单位是毫秒

启动哨兵

redis-sentinel sentinel.conf &


查看哨兵状态

redis-cli -p 26379
info sentinel




验证:关闭主服务器,模拟故障

可以看到迅速进行了切换



第一台恢复之后,会指向新的主服务器

三、cluster集群

cluster集群是Redis从3.0版本开始支持,自带的一种集群方式。它的原理使用了分布的思想,其数据会均分到所有的主节点上。此部署方式,当数据量过大时,会让服务器均摊压力。在各个主节点上分配的数据都不是全量的。是分片存储的。目前此种部署方式在生产环境的较多。至少六台,三台主,三台从。

准备6台安装了redis的虚拟机
同时操作:关闭防火墙,修改配置文件

systemctl stop firewalld.service
cd /usr/src/redis-6.2.6
vim redis.conf


使服务器监听所有可用的网络端口

启用cluster集群

重启所有的redis

redis-cli shutdown
redis-server redis.conf &


后面都在单台redis上操作
创建出cluster集群,需要罗列出每一台redis的IP地址和端口号

redis-cli --cluster create 192.168.0.10:6379 192.168.0.20:6379 192.168.0.30:6379 192.168.0.40:6379 192.168.0.50:6379 192.168.0.60:6379 --cluster-replicas 1



查看集群节点状态

redis-cli
cluster nodes


需要到对应的节点上去创建数据


可以使用-c选项连接到整个cluster集群,这样不用频繁切换终端

关掉一台服务器,集群状态还是正常运行

依然是三台主节点

本篇文章到处结束

Docker部署Redis集群的三主三从架构是一个常见的高可用解决方案,它利用了Redis主从复制机制,使得数据可以在多个节点之间备份和同步。以下是步骤: 1. **安装Docker**:首先确保你的机器上已经安装了Docker。 2. **创建镜像**:你可以基于官方的Redis镜像(`redis:latest`)创建自己的镜像,并配置为支持主从模式。例如,在Dockerfile中添加环境变量如`REPLICATION_MODE=master`或`slave`。 3. **启动服务**: - 主节点(Master):在每个主机上运行三个容器,设置其中一个为主节点,其余两个作为副本。使用`docker run --name node1 -d redis:latest REPLICATION_MODE=master`等命令启动容器,记得调整主机名以区分不同节点。 - 从节点(Slave):其他三个容器分别设置为从节点,连接到主节点并开始同步数据。 4. **网络配置**:使用Docker网络将所有节点连接起来,保证它们可以通过网络通信。可以使用默认桥接网络,也可以自定义网络。 5. **监控与管理**:推荐使用像`docker-compose`这样的工具来管理和配置容器,这样可以更方便地定义服务之间的依赖以及环境变量。 6. **负载均衡**:为了进一步提高可用性和容错性,可以考虑外部的负载均衡器或使用Redis哨兵(Sentinel)来监控主节点的健康状况,并自动故障转移。 7. **验证集群**:在部署后,通过客户端测试各个节点的读写性能是否正常,确认集群已成功建立并能有效工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值