首页 > 数据库 >在Linux部署Redis主从和哨兵集群实现高可用

在Linux部署Redis主从和哨兵集群实现高可用

时间:2023-04-05 17:00:37浏览次数:42  
标签:Redis redis 节点 6380 26380 Linux sentinel 哨兵 主从

前言

本文主要讲述在 Linux 系统中配置和部署 Redis 主从集群和哨兵,实现高可用和自动故障迁移。

准备工作

参考 Redis 单机部署 安装 3 个 Redis 服务作一主二从,本文准备了 6380(主)、6381(从) 和 6382(从)。

参考 Redis 单机部署 安装 3 个 Redis 服务作哨兵集群,本文准备了 26380、26381 和 26382。

开始前最好先停止这几个服务。

启动主从节点

启动主节点

service redis_6380 start

启动从节点三种方式

下面的步骤每个从节点都需要执行,修改对应从节点端口号即可。

  • redis-cli 指令,从节点重启后跟随会失效
# 启动从节点
service redis_6381 start

# redis-cli 连接从节点
redis-cli -p 6381

# 如果主节点有密码需要执行这一条指令
config set masterauth <password>

# 跟随 6380 主节点
REPLICAOF 127.0.0.1 6380
  • 启动时配置,从节点重启后跟随会失效
redis-server /etc/redis/6381.conf --replicaof 127.0.0.1 6380
  • 通过配置文件(推荐)
echo "编辑配置文件"
vim /etc/redis/6381.conf
# 主节点IP和端口号
replicaof 127.0.0.1 6380

# 主节点密码,如果有的话
masterauth <master-password>
echo "启动从节点"
service redis_6381 start

测试

通过redis-cli连接主节点6380写入数据

# 连接主节点
redis-cli -p 6380

# 写入数据
set key1 key1

然后连接任一从节点可以看到相同数据

# 连接从节点
redis-cli -p 6381

# 写入数据
keys *

通过从节点可以查询,但它是只读的,不能写数据,写入会返回错误。

image-20210926162749342

部署哨兵

安装服务时,脚本帮我们创建了相关目录、文件、作为服务启动的脚本以及配置了开机启动。但它是当成 Redis 服务创建的,而我们要的是哨兵,所以需要替换成哨兵的配置文件,并对相关路径进行修改,并且需要将服启动脚本启动命令加上 --sentinel 表示启动的是哨兵服务。

每个哨兵服务配置步骤都一样,根据端口号改对应地方。

修改配置

替换、编辑配置文件

# 拷贝源码目录下哨兵配置文件,替换掉安装服务自动创建的配置文件。提示时输入 y 回车
cp ~/soft/redis/redis-6.2.5/sentinel.conf /etc/redis/26380.conf

# 编辑配置文件
vim /etc/redis/26380.conf
# 端口号
port 26380
# pid 文件路径
pidfile /var/run/redis_26380.pid
# 日志文件路径
logfile /var/log/redis_26380.log
# 数据文件路径
dir /var/lib/redis/26380
# sentinel monitor <主节点别名,每个集群主别名唯一> <主节点IP> <主节点端口号> <n个哨兵认为主节点主观下线,才会将主节点标记为客观下线>
sentinel monitor mymaster 127.0.0.1 6380 2
# 后台启动
daemonize yes

一套哨兵集群可以监控多套主从集群sentinel monitor指定各个集群主节点就行了,主节点别名必须唯一。如:

sentinel monitor mymaster 127.0.0.1 6380 2
sentinel monitor mymaster2 127.0.0.1 6383 2

修改服务脚本

  • 编辑对应的脚本,在追加启动参数 --sentinel 如下图所示
vim /etc/init.d/redis_26380

在这里插入图片描述

启动哨兵

service redis_26380 start

测试

停掉主节点。

service redis_6380 stop

通过redis-cli连接任一哨兵查看集群状态,可以看到主节点切换到了6382,这时可以通过连接6382来写入数据了。

# 连接哨兵
redis-cli -p 26380

# 查看主节点信息
sentinel master mymaster

image-20210926162518670

再看看从节点信息,可以看到6380变成了从节点,并且状态为s_down,代表下线

sentinel slaves mymaster

image-20210926163121065

image-20210926163148079

旧主节点重启后状态就正常了,不过它已经是从节点了,不会变回去。

service redis_6380 start

image-20210926163408120

其他问题

服务启动失败

服务停止后,再次启动失败显示下面信息,可以删掉提示的 pid 文件再启动

/var/run/redis_6380.pid exists, process is already running or crashed

参考链接

Redis 中文网文档

标签:Redis,redis,节点,6380,26380,Linux,sentinel,哨兵,主从
From: https://www.cnblogs.com/shuiyao3/p/17289795.html

相关文章

  • 在Linux部署Redis Cluster集群
    前言本文讲述在Linux系统部署RedisCluster实现数据分片的具体步骤。请参考Redis单机部署下载编译。RedisCluster是什么?RedisCluster是官方提供的一种用数据分片来实现横向扩容的解决方案,由一个或多个Redis服务组成一个无主集群。对Key使用哈希算法将数据分散......
  • 在Linux部署Redis代理Predixy实现数据分片
    前言本文以predixy-1.0.5为例,讲述Redis代理Predixy安装过程。Predixy是一款高性能全特征Redis代理,支持Redis-sentinel和Redis-cluster。作者拿其它常用代理做了性能测评,Predixy在各个维度性能都是最优的,与其他代理的功能对比。我们可以通过取模、随机、一致性哈希......
  • 【Linux】性能调优命令
    进程性能pidstatcat/proc/5598(PID)/statusfreepstoppstreepgrepvmstat#使用top命令,查找pid$top#通过TOP-H-p进程ID,找到具体的线程占用情况$top-H-p21564#通过命令pstack进程ID显示线程堆栈\$pstack24714Java相关参考文档:https://qinxuew......
  • 在Linux部署Redis代理Twemproxy实现数据分片
    前言本文主要讲述Redis代理Twemproxy安装过程。Twemproxy是推特开源用于Memcached和Redis的轻量级代理。这里以0.5.0版本为例。我们可以通过取模、随机、一致性哈希等算法将数据分散在多个Redis服务来实现水平扩展。但是客户端直连就需要跟每个Redis服务产生连接,......
  • 在Linux部署ElasticJob-Lite-UI运维控制台
    前言ElasticJob-Lite-UI是任务的分布式调度解决方案(ElasticJob-Lite)搭配的可视化运维控制台。运维控制台和ElasticJob-Lite并无直接关系,是通过读取作业注册中心(Zookeeper)数据展现作业状态,或更新注册中心数据修改全局配置。它具有这些功能:登录安全控制;注册中心、事件追踪数据源管......
  • Redis——(主从复制、哨兵模式、集群)的部署及搭建
    重点:主从复制:主从复制是高可用redis的基础,主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。哨兵和集群都是在主从复制基础上实现高可用的。缺点:故障恢复无法自动化,写操作无法负载均衡,存储能力受到单机的限制。哨兵:在主从复制的基础上,哨兵......
  • 在Linux部署Etcd集群
    前言目前解决分布式系统下数据强一致性的主要算法理论是Paxos和Raft,偏向CAP定理一致性(Consistency)、可用性(Availability)、分区容错性(Partitiontolerance)中的CP。Raft在容错和性能方面和Paxos相当,不同之处在于它将问题分解成相对独立的子问题,逻辑较为清晰,更易于理解。关于Raft......
  • 在Linux部署单机Redis完整过程
    前言本文以redis-6.2.5为例,讲述在Linux系统下单机Redis下载、编译、打包、安装为服务、启动和访问的整个过程。安装环境为LinuxCentOS64,本文用的7.5版本.下载编译目录在当前目录soft/redis下,最终服务可执行程序在/opt/soft/redis6中。准备工作#查看是否有文件下载......
  • 在Linux部署Apollo配置中心
    前言这篇是参考官网文档总结的Apollo分布式部署方式,包含具体步骤、资源和相关脚本,也在必要的地方给出了资料来源。通过Apollo-中文文档-部署架构可以了解到单机、集群和高可用部署架构的最佳实践方式。安装步骤本篇实践是在Linux系统,使用Apollo1.9.1版本为例,要求环境包含......
  • linux Tun/Tap 虚拟网卡
    一、TUN、TAP虚拟网卡的工作原理:+----------------------------------------------------------------+|||+--------------------++--------------------+|||UserApplicationA|......