高可用的Redis主从复制集群,从理论到实践

本文介绍了如何构建高可用的Redis主从复制集群,包括理论知识和实践步骤。首先,详细讲解了Redis主从复制的工作原理,强调其异步复制特性可能导致的数据不一致。然后,通过配置文件展示了如何设置主从节点,以及启动和验证主从关系。接着,讨论了在全量同步和增量复制过程中的细节。最后,探讨了哨兵系统在故障切换中的作用,确保集群的高可用性。
摘要由CSDN通过智能技术生成

在这里插入图片描述

前言

我们都知道,服务如果只部署一个节点,很容易出现单点故障,从而导致服务不可用。所以服务做成高可用是很有必要的,Redis服务自然也是这样。本文主要从理论和实践两方面讲解Redis高可用集群。手把手教你搭建一个高可用的redis主从复制集群。

本文采取理论和实践穿插讲解的方式,如果只关心集群的搭建,可以跳过文中理论部分。

分享一份Java面试资料,由于文章篇幅限制,不可能将所有面试题以文字形式把大厂面试题展示出来,本篇为大家精选了一些面试题,如果你需要这份完整版的面试笔记,获取面试资料只需:点击这里领取!!! 暗号:CSDN在这里插入图片描述

前置阅读

Redis持久化:Redis:持久化
实验环境

VMware Workstation 15
CentOS Linux release 7.7.1908
Redis-5.0.8

注意事项

三个节点ip分别为192.168.1.101、192.168.1.102、192.168.1.103
确保三个节点都能访问互联网,并且三个节点能够相互通信
确保Linux的yum、wget、tar、gcc等基础命令、编译器可用
建议先关闭防火墙,Centos 7操作如下firewall-cmd --state ## 查看防火墙状态 not running表示已经关闭 systemctl stop firewalld.service ## 关闭防火墙 systemctl disable firewalld.service ## 禁止开机启动防火墙

redis单机安装

下载wget download.redis.io/relea
解压tar -zxvf redis-5.0.8.tar.gz
编译cd redis-5.0.8 make
安装make install ## 或者指定安装目录 make install PREFIX=指定路径。默认路径是/usr/local/bin ./utils/install_server.sh ## 安装成服务,如果上一步配置了PREFIX,需要把安装路径配置到环境变量/etc/profile
install_server.sh是redis提供的脚本,运行之后会让你指定几个配置:端口号、配置文件路径、日志文件路径、数据文件路径。

如果都设置成默认值,redis根据按照端口号来区分同一台主机上的不同的实例,因为install_server.sh可以多次运行,每次运行相当于安装了一个实例。

安装过程如果都是默认安装,会有以下几个配置:

端口号:6379
配置文件路径:/etc/redis/6379.conf
日志文件路径:/var/log/redis_6379.log
数据文件路径:/var/lib/redis/6379/
redis-server.sh路径:/usr/local/bin/
redis-cli.sh路径:/usr/local/bin/
安装成功会出现如下日志

Copied /tmp/6379.conf => /etc/init.d/redis_6379 Installing service…
Successfully added to chkconfig! Successfully added to runlevels 345!
Starting Redis server… Installation successful!

可以看到redis服务已经自动启动。

主从复制

Redis主从复制是redis3.0之后自带的一种集群实现方式,不需要其他的中间件。是一种基于异步复制的主从实现方式。所以Redis主从复制并不能保证数据的强一致性.。集群在特定的条件下可能会丢失写操作。

集群结构

现在来搭建一个一主两从的集群,集群拓扑图如下在这里插入图片描述
其中master节点可写可读,一般用来处理写请求,slave节点默认情况下是只读的,所以用来处理读请求。两个slave节点的数据都是从master节点复制过去的。所以这种集群也叫读写分离。

配置

redis配置文件默认路径为/etc/redis/6379.conf,用vi/vim打开,三个节点都配置如下内容

需要绑定的ip地址 bind 127.0.0.1 192.168.1.101 192.168.1.102 192.168.1.103

关闭后台运行,便于观察 daemonize no

注释日志路径,让日志直接输出在控制台,便于观察

logfile /var/log/redis_6379.log

关闭AOF持久化模式

appendonly no
启动

配置完成后分别启动三个节点

cd /usr/local/bin redis-server /etc/redis/6379.conf

设置主从关系

两个slave节点用redis-cli客户端连接redis-server后,均执行如下命令,把自己设置成master节点的slave

> replicaof 192.168.1.101 6379

replicaof也可以直接写在配置文件中(文中为了实验效果,以命令的方式执行)

################################# REPLICATION #################################

Master-Replica replication. Use replicaof to make a Redis instance a copy of

another Redis server. A few things to understand ASAP about Redis replication.

±-----------------+ ±--------------+

| Master | —> | Replica |

| (receive writes) | | (exact copy) |

±-----------------+ ±--------------+

1) Redis replication is asynchronous, but you can configure a master to

stop accepting writes if it appears to be not connected with at least

a given number of replicas.

2) Redis replicas are able to perform a partial resynchronization with the

master if the replication link is lost for a relatively small amount of

time. You may want to configure the replication backlog size (see the next

sections of this file) with a sensible value depending on your needs.

3) Replication is automatic and does not need user intervention. After a

network partition replicas automatically try to reconnect to masters

and resynchronize with them.

replicaof

replicaof在redis5.0之前的版本叫slaveof,命令描述如下

127.0.0.1:6379> he

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值