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集群,这样不用频繁切换终端
关掉一台服务器,集群状态还是正常运行
依然是三台主节点
本篇文章到处结束