linux---redis集群搭建(主从哨兵)
文章目录
- linux---redis集群搭建(主从哨兵)
-
-
-
-
- [一,配置文件并启动一个 Redis 服务器实例](#一,配置文件并启动一个 Redis 服务器实例)
- 二,创建多个reids实例 (复制并定制化 Redis 配置文件)
- 三,配置客户端的主从关系
- 四,配置哨兵
-
-
-
一,配置文件并启动一个 Redis 服务器实例
首先确保自己已经安装了redis,然后找到自己的安装位置,查看列表

切换到root根目录 创建myreids目录(将集群搭建到root目录 以便出现错误 不影响原文件)
sh
cd /root #切换到root根目录
ll #查看该目录下所有列表信息
mkdir -p /root/myredis #创建myredis目录
复制/opt/redis-6.2.1/redis.conf文件到/root/myredis目录
shell
cp /opt/redis-6.2.1/redis.conf /root/myredis/
编辑并且配置redis.conf文件
shell
vim /root/myredis/redis.conf
设置行号(便于修改文件 精准导航)
shell
#按Esc 进入末行模式 第一行是 1G 以此类推 最后一行为G 启动编辑按:i
:set nu




然后保存并且退出
sheef
:wq
创建redis638.conf并且编辑内容 然后保存并且退出
shell
# vim 编辑内容时 若文件不存在则创建
vim /root/myredis/redis6379.conf

到了这里 就算是已经配置好了一个最基础的配置了 可以开启一个简单的redis服务了
使用以下命令可以启动 Redis 服务
shell
redis-server /root/myredis/redis6379.conf
二,创建多个reids实例 (复制并定制化 Redis 配置文件)
我这里就额外创建两个作为展示
复制拷贝编辑好的/root/myredis/redis6379.conf
shell
cp redis6379.conf redis6380.conf
cp redis6379.conf redis6381.conf
分别修改redis6380 redis6381里面的配置文件:

使用命令开启这两个redis实例
shell
redis-server /root/myredis/redis6380.conf
redis-server /root/myredis/redis6381.conf
查看redis进程和redis服务器端口号
shell
ps -ef | grep redis

这时候就可以启动3个客户端并链接3个不同端口的redis服务器了
shell
redis-cli -p 6379
redis-cli -p 6380
redis-cli -p 6381
这个时候就算是实现了创建多个reids实例 功能 但是这个时候还是存在问题的
shell
# redis的客户端输入 一下命令 三个客户端都会显示是master(主节点)
INFO replication
三,配置客户端的主从关系
在6380客户端和6381客户端中配置主从(注意:只在从里面配置)
分别在两个客户端 输入以下代码
shell
#slaveof 虚拟机ip地址 主节点端口号
SLAVEOF 192.168.159.131 6379
然后 就会只有一个'master'(主节点) 两个 slave
(从节点)了
这个时候 再在从节点客户端输入 info replication 命令时 就会如下显示

现在基本的一主二从 已经配置完成了
但是现在依然存在问题 当主节点宕机时 会使服务器及数据损坏 这个时候就需要配置'哨兵' 来确保 Redis 系统的高可用性
四,配置哨兵
配置哨兵的作用是确保 Redis 系统的高可用性。Redis Sentinel(哨兵)是一个用于监控和管理 Redis 集群的自动化系统,它可以检测 Redis 主节点和从节点的故障,并在需要时进行自动故障转移和节点恢复。主要作用包括:
- 监控 Redis 实例:哨兵定期检查 Redis 主节点和从节点的健康状态,包括网络连接、响应时间等,以确保集群的稳定运行。
- 自动故障转移:如果主节点宕机或不可用,哨兵会自动将一个从节点升级为新的主节点,以保证系统的可用性。它还会更新其他从节点的配置,使它们连接到新的主节点。
- 配置管理:哨兵负责管理 Redis 集群的配置信息,包括主从节点的配置、故障转移策略等。
- 提供故障通知:哨兵可以向管理员发送警报通知,当出现节点故障或其他异常情况时,管理员可以及时采取措施来处理问题。
- 服务发现:客户端可以通过连接到哨兵来发现 Redis 集群的主节点和从节点,并获取集群的连接信息,从而实现对 Redis 集群的动态发现和连接。
创建哨兵的方式 :
创建并编辑/root/myredis/sentinel26379.conf文件设置哨兵
shell
vim /root/myredis/sentinel26379.conf

保存退出了 已经出现一个哨兵的配置 然后以此来再拷贝创建两个哨兵
shell
cp /root/myredis/sentinel26379.conf /root/myredis/sentinel26380.conf
cp /root/myredis/sentinel26379.conf /root/myredis/sentinel26381.conf
依次修改sentinel26380.conf,sentinel26381.conf两个文件
只需要修改文件中的 port 改为自己对应的端口号 :26380 26381 就可以了
启动三个哨兵
shell
redis-sentinel sentinel26379.conf
redis-sentinel sentinel26380.conf
redis-sentinel sentinel26381.conf
创建三个哨兵是为了确保高可用性和容错性。
- 容错性:通过多个哨兵节点,即使一个哨兵节点发生故障,其他哨兵节点仍然可以继续监视和管理 Redis 集群。如果只有一个哨兵节点,当这个哨兵节点发生故障时,将导致整个 Redis 集群失去监控和管理,从而增加了集群的风险。
- 选举:在进行主节点故障转移时,需要进行投票和选举过程。如果只有两个哨兵节点,当两个节点之间发生分裂(网络分区)时,可能会导致投票无法达成一致,从而无法进行故障转移。而有三个或更多的哨兵节点可以确保在大多数节点达成一致的情况下进行投票,增加了投票的可靠性。
- 监控:多个哨兵节点可以分布在不同的服务器上,从而可以更好地监控 Redis 集群的各个节点。这样可以增加监控的覆盖范围,减少单点故障的影响。
这个时候就可以实现 当主节点宕机时 哨兵检测到之后 选择出一个从节点为主节点