Redis 单机、主从、哨兵和集群架构详解和搭建

目录

前言

单机部署

[检查安装 gcc 环境](#检查安装 gcc 环境)

[下载安装 Redis](#下载安装 Redis)

[启动 Redis](#启动 Redis)

[关闭 Redis](#关闭 Redis)

配置Redis

主从部署

整体架构图

主从复制配置

[重启 Redis](#重启 Redis)

验证

主从复制的作⽤

主从复制缺点

哨兵部署(Sentinel)

整体架构图

哨兵模式配置

启动哨兵

验证

哨兵模式的作用

集群部署(Cluster)

整体架构图

集群模式配置

[启动 Redis](#启动 Redis)

创建集群模式

查看集群信息

总结


前言

本教程将演示在 linux 环境下安装 Redis7,给⼤家最简单,最快捷的安装⽅式,其中包括单机部署、主从部署、哨兵部署、集群 部署的安装以及相应的架构介绍。

单机部署

检查安装 gcc 环境

复制代码
-- 检查版本
gcc --version
-- 安装 gcc
yum install gcc

下载安装 Redis

复制代码
-- 创建目录,⽂件归类
mkdir -p /opt/software/redis

-- 进⼊redis⽂件夹,使⽤wget下载
cd /opt/software/redis
wget https://download.redis.io/redis-stable.tar.gz

-- 解压下载的redis包
tar -xzf redis-stable.tar.gz

-- 进⼊redis-stable⽬录,然后使⽤make install 编译并安装,安装完成后 /usr/local/bin 会⽣成相应的服务
cd redis-stable
make install

-- 检查是否成功⽣成
ll /usr/local/bin

文件介绍:

  • redis-benchmark:性能测试⼯具
  • redis-check-aof:修复有问题的 aof ⽂件
  • redis-check-rdb:修复有问题的rdb⽂件
  • redis-sentinel:Redis集群使⽤
  • redis-server:Redis服务器启动命令
  • redis-cli:客户端,操作⼊⼝

启动 Redis

在/opt/software/redis/redisstable/src 或者 /usr/local/bin ⽬录下的 redis-server 启动
Redis 服务.

复制代码
-- Redis 源码路径下启动
./src/redis-server
-- 使⽤usr/local/bin 路径下启动(该⽬录下或者不在该目录下也可以启动)
redis-server

关闭 Redis

复制代码
-- 退出 redis客户端
quit
或
ctrl + c

-- 关闭 redis
redis-cli shutdown

配置Redis

前⾯的启动⽅式⽆法再后台运⾏,退出之后直接关闭了 Redis 服务,所以我们还需要针对 Redis 做⼀些设置。

复制代码
-- 修改当前Redis⽬录下/opt/software/redis/redis-stable的 Reids.conf ⽂件
vi redis.conf


如果想配置显示出行号,则可以 在打开 vim 后输⼊:":set number " 。

配置如下:

复制代码
#88⾏,修改bind 项,* -::* ⽀持远程连接
bind * -::* 

#310⾏,开启守护进程,后台运⾏
daemonize yes 

#356⾏,指定⽇志⽂件⽬录
logfile /opt/software/redis/redis-stable/redis.log 

#516⾏,指定⼯作⽬录
dir /opt/software/redis 

#1051⾏,给默认⽤户设置密码,主要是使⽤ redis-cli 连接 redis-server时,需要通过密码校验。⾃⾏学习,可以不设置。
#requirepass admin 

#112⾏,允许远程连接 如果不设置密码必须讲此设置关闭。
protected-mode no 

修改完成后,使⽤配置⽂件启动 Redis,并使⽤ redis-cli 连接测试,需要注意由于前⾯我们配置了安全密码,所以连接后需要先验证密码,否则会报错。

复制代码
#根据redis配置,启动redis
redis-server redis.conf

#连接 redis
redis-cli

#如果设置密码,则需要验证权限
auth admin

主从部署

主从复制,是指将⼀台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点;且⼀个主节点可以有多个从节点(或没有从节点),但⼀个从节点只能有⼀个主节点。

整体架构图

主从复制配置

主节点不需要做任何改变,从节点都需要修改配置加上主节点信息

复制代码
修改redis 配置文件
vi  redis.conf

# 从节点都添加主节点信息
replicaof 192.168.18.201 6379

重启 Redis

复制代码
#如果启动了,就先关闭
redis-cli shutdown

#启动
redis-server redis.conf

验证

验证主从复制是否配置成功,使用以下命令, 查看redis 节点信息.

复制代码
redis-cli info Replication

主从复制的作⽤

  • 数据冗余:主从复制实现了数据的热备份,是持久化之外的⼀种数据冗余⽅式。
  • 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是⼀种服务的冗余。
  • 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应⽤连接 主节点,读Redis数据时应⽤连接从节点),分担服务器负载;尤 其是在写少读多的场景下,通过多个从节点分担读负载,可以⼤ ⼤提⾼Redis服务器的并发量。
  • ⾼可⽤基⽯:除了上述作⽤以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis⾼可⽤的基础。

主从复制缺点

  • 复制延时,信号衰减

由于所有的写操作都是现在master上操作,然后同步更新 到slave上,所以从master同步到slave机器上有⼀定的延迟, 当系统很繁忙的时候,延迟问题会更加严重,slave机器数量的增加也会使这个问题更加严重。

  • master挂了如何办?

默认情况下,不会在slave节点中⾃动重选⼀个master,每 次都要⼈⼯⼲预。

哨兵部署(Sentinel)

Redis主从复制会遇到一些限制和弊端,主机宕机之后,整个redis服务只能读不能写。为了解决这些问题,Redis引入了哨兵模式。

Redis 哨兵模式是一种用于构建高可用性 Redis 集群的解决方案。它通过监控 Redis 实例的状态并自动进行故障转移,提供了客户端重定向机制以确保应用程序可以正常访问 Redis。

整体架构图

哨兵模式配置

3 个机器都需要修改 sentinel.conf 配置,配置完成之后先从主节点开始启动哨兵。

复制代码
#6⾏,关闭保护模式
protected-mode no 

#15⾏,指定sentinel为后台启动
daemonize yes 

#34⾏,指定⽇志存放路径
logfile /opt/software/redis/redis-stable/sentinel.log 

#73⾏,指定数据库存放路径
dir /opt/software/redis 

#93⾏,修改 指定该哨兵节点监控20.0.0.20:6379这个主节点,该主节点的名称是mymaster,最后的2的含义#与主节点的故障判定有关:⾄少需要2个哨兵节点同意,才能判定主节点故障并进⾏故障转移
sentinel monitor mymaster 192.168.18.201 6379 2

#134⾏,判定服务器down掉的时间周期,默认30000毫秒(30秒)
sentinel down-after-milliseconds mymaster 30000

#234⾏,故障节点的最⼤超时时间为180000(180秒)
sentinel failover-timeout mymaster 180000 

注意: 哨兵的端口是 26379 , 防火墙需要开放端口.

启动哨兵

复制代码
redis-sentinel sentinel.conf 

启动后检查哨兵状态

复制代码
redis-cli -p 26379 info sentinel

验证

故障模拟

复制代码
-- 直接停掉主节点服务
redis-cli shutdown

-- 观察哨兵⽇志,主节点下线,重新选举另一个节点为主节点
tail -f sentinel.log

在另一台以前是从节点的服务器查询, 发现切换成主节点了

复制代码
redis-cli info replication

拓展命令:

复制代码
-- 停⽌哨兵
redis-cli -p 26379 shutdown

哨兵模式的作用

  • 主从监控:监控reids主从是否正常运行
  • 消息通知:哨兵可以将故障转移的结果发送给客户端
  • 故障转移:如果Master异常,则会进行主从切换,将其中一个Slave作为新的Master
  • 配置中心:客户端通过连接哨兵来获得当前Redis服务的主节点地址

集群部署(Cluster)

哨兵模式仍然面临内存容量和写入性能的限制,因为这种模式的写入能力仍然局限于单个节点。为了解决这一问题,Redis在3.x版本之后推出了Cluster集群模式。Cluster模式通过数据分片和节点的水平扩展,实现了更高效的内存利用和写入性能。

整体架构图

集群模式配置

三主三从模式配置

复制代码
-- 创建集群配置⽂件夹,另外两个机器重复这个过程
mkdir -p /opt/software/redis/redis-stable/cluster
mkdir -p /opt/software/redis/cluster

6379 配置

复制代码
vim ./cluster/redis_6379.conf

将下面内容复制进redis_6379.conf文件

允许所有的IP地址

bind * -::*

后台运⾏

daemonize yes

允许远程连接

protected-mode no

开启集群模式

cluster-enabled yes

集群节点超时时间

cluster-node-timeout 5000

配置数据存储⽬录

dir "/opt/software/redis/cluster"

开启AOF持久化

appendonly yes

端⼝

port 6379

log⽇志

logfile "/opt/software/redis/redis-stable/cluste
r/redis6379.log"

集群配置⽂件

cluster-config-file nodes-6379.conf

AOF⽂件名

appendfilename "appendonly6379.aof"

RBD⽂件名

dbfilename "dump6379.rdb"

6380 配置

复制代码
vim ./cluster/redis_6380.conf

将下面内容复制进redis_6380.conf文件

允许所有的IP地址

bind * -::*

后台运⾏

daemonize yes

允许远程连接

protected-mode no

开启集群模式

cluster-enabled yes

集群节点超时时间

cluster-node-timeout 5000

配置数据存储⽬录

dir "/opt/software/redis/cluster"

开启AOF持久化

appendonly yes

端⼝

port 6380

log⽇志

logfile "/opt/software/redis/redis-stable/cluste
r/redis6380.log"

集群配置⽂件

cluster-config-file nodes-6380.conf

AOF⽂件名

appendfilename "appendonly6380.aof"

RBD⽂件名

dbfilename "dump6380.rdb"

启动 Redis

配置⽂件准备完成之后,启动所有redis服务,⽤cluster配置⽂件

复制代码
redis-server ./cluster/redis_6379.conf
redis-server ./cluster/redis_6380.conf

其他两台机器重复上面的操作.

注意: 启动 redis 时, 要注意 以前启动的redis和哨兵需要关闭

复制代码
# 查看运行中的进程信息
netstat -ntlp

然后使用kill pid 命令删除这个进程

复制代码
#关闭哨兵
kill 29733
#关闭redis
kill 20317

创建集群模式

当三台机器的6台redis都启动完成, 则使用以下命令,创建集群.

复制代码
-- 创建三主三从集群模式,每⼀个主节点带⼀个从节点
redis-cli --cluster create --cluster-replicas 1 192.168.75.129:6379 192.168.75.129:6380 192.168.75.131:6379 192.168.75.131:6380 192.168.75.132:6379 192.168.75.132:6380

查看集群信息

复制代码
-- 查看集群信息
redis-cli cluster info
-- 查看单个节点信息
redis-cli info replication
-- 查看集群节点身份信息
redis-cli cluster nodes

注意: 集群用到的端口会加10000,所以16379和16380 端口的防火墙也要开放.

总结

edis主从:可实现高并发(读),典型部署方案:一主二从

redis哨兵:可实现高可用,典型部署方案:一主二从三哨兵

redis集群:可同时支持高可用(读与写)、高并发,典型部署方案:三主三从

三者之间对比:

相关推荐
Channing Lewis31 分钟前
sql server如何创建表导入excel的数据
数据库·oracle·excel
秃头摸鱼侠32 分钟前
MySQL安装与配置
数据库·mysql·adb
UGOTNOSHOT37 分钟前
每日八股文6.3
数据库·sql
行云流水行云流水1 小时前
数据库、数据仓库、数据中台、数据湖相关概念
数据库·数据仓库
John Song1 小时前
Redis 集群批量删除key报错 CROSSSLOT Keys in request don‘t hash to the same slot
数据库·redis·哈希算法
IvanCodes1 小时前
七、Sqoop Job:简化与自动化数据迁移任务及免密执行
大数据·数据库·hadoop·sqoop
tonexuan1 小时前
MySQL 8.0 绿色版安装和配置过程
数据库·mysql
JohnYan2 小时前
工作笔记- 记一次MySQL数据移植表空间错误排除
数据库·后端·mysql
我最厉害。,。2 小时前
Windows权限提升篇&数据库篇&MYSQL&MSSQL&ORACLE&自动化项目
数据库·mysql·sqlserver
远方16092 小时前
20-Oracle 23 ai free Database Sharding-特性验证
数据库·人工智能·oracle