Redis实践(3)主从复制高可用架构

Redis
placeholder image
admin 发布于:2023-05-27 20:43:43
阅读:loading

1.基本介绍

Redis单击环境版仅适合学习和测试应用,因为一台服务器将承载应用的全部请求,压力较大且容量有限,所以生产环境应当考虑更高级别的可用策略,主从复制是Redis高可用中最简单的实现方式。实现Redis高可用的模式主要有三种: 主从模式、哨兵模式、集群模式。本文将基于当前最新版本Redis7.0.11来搭建的主从模式,并验证相关配置的正确性。

主从模式顾名思义是一台为主机Master,一台为从机Slave,甚至可以是多台为从机,这种结构将多台服务器的Redis服务连接为一个整体。Redis master slave 使用异步方式将数据从 master 传输到 slave。从节点会确认接收到主节点发送的数据,主节点将包含多个从节点。Redis 支持级联复制类型,因此我们的从服务器连接到另一个从服务器,为主从节点启用持久性选项是非常好的做法。基本上,主从是一种用于将数据库从一台服务器复制到另一台服务器的方法,redis主从架构如下:

image.png

(图一)

image.png

(图二)

优势

(1)部署方便,调整几个参数配置即可。

(2)请求处理的读写分离,主节点负责数据写入,从节点只读模式对外提供数据读取,比单机处理性能更高

(3)整体上数据实时同步,数据将会存在有多个备份。

劣势

(1)所有从机的数据依赖主机节点,主节点不能宕机,否则主节点数据的写入将不可用,从节点的读取尚可,可用性较低;

(2)主节点的写入压力仍然存在,从节点为只读模式无法分担写入压力;

2.搭建配置

搭建过程将承接第一篇文章《Redis实践(1)简单介绍与安装》中的安装信息,在以下三台服务器上配置主从结构的集群,以服务器134为主节点,138和139为从节点,即传说中的一主二从(一主二仆),参考服务器列表如下:

IP地址端口号标识
192.168.244.1346379Master
192.168.244.1386379Slave
192.168.244.1396379Slave

(1)修改$REDIS_HOME/redis.conf文件第87行,注释“#bind 127.0.0.1 -::1”行内容,表示redis可以在外部IP连接;

(2)修改$REDIS_HOME/redis.conf文件第111行,修改为“protected-mode no”,主要是将参数值yes修改为no,关闭保护模式,可被远程服务器连接;

(3)修改$REDIS_HOME/redis.conf文件第309行,修改为“daemonize yes”,主要是将参数值no修改为yes,以后台进程的方式运行;

(4)修改$REDIS_HOME/redis.conf文件第341行,原始值为“pidfile /var/run/redis_6379.pid”修改为“pidfile "/app/redis/redis-stable/runtime/redis_6379.pid"”,将存储进程的文件存储在文件夹内;

(5)修改$REDIS_HOME/redis.conf文件第354行,修改为“/app/redis/redis-stable/runtime/logs/redis.log”,设置redis运行日志文件的路径;

(6)修改$REDIS_HOME/redis.conf文件第1036行,修改为“requirepass chendd”,设置redis连接密码;

image.png

上图redis.default.conf是复制的redis.conf文件的原始文件,redis.conf为主节点Master上修改后的文件内容,二者区别见上图。特别注意修改了pidfile和logfile参数,全部指向了$REDIS_HOME/runtime和logs子目录,在启动redis-server时,它不会自动创建文件夹,所以在启动前需要保证文件夹物理存在。

(7)拷贝redis.conf文件为redis.slave.conf,表示为从节点,修改从节点redis.slave.conf文件,表示从节点从主节点复制数据所需要的参数,下图标红处为两个文件的区别,即从主节点服务器和端口以及密码相关,参考如下图所示:

image.png

(8)拷贝redis.slave.conf至两个从节点138和139服务器的$REDIS_HOME目录中;

(9)相关启动和停止的命令(当前`pwd`路径为$REDIS_HOME路径,即“/app/redis/redis-stable”),需要指定对应的redis.conf配置文件,在Master上指向redis.conf,在Slave上指向redis.slave.conf文件,参考启动命令和日志输出如下:

image.png

(134 Master节点启动成功)

image.png

(138 Slave节点启动成功)

image.png

(139 Slave节点启动成功)

3.主从验证

(1)连接服务器的命令参考:

     ① bin/redis-cli -a chendd -h 192.168.244.134 -p 6379 #连接redis,传递ip和端口和密码,也可以不用传递密码在连接后执行命令时限制输入密码;

     ② bin/redis-cli -a chendd -h 192.168.244.134 #连接远程服务器端口为6379的服务;

     ③ bin/redis-cli -a chendd #连接redis,传递密码,默认为连接本机redis和默认6379端口号;

(2)验证138 Slave从节点数据为只读,无法新增或修改数据,如下图所示:

验证slave138只读.gif

(3)验证134 Master主节点新增或修改后从节点138和139实时更新到数据,如下图所示:

验证主从复制.gif

4.知识点整理

(1)一主二从的高可用架构,共计三台服务器,redis版本为最新的7.0.11;

(2)自定义pid文件路径参数和自定义logfile路径参数,涉及到了不存在的文件夹路径时,必须手工提前创建好;

(3)涉及到了使用密码,主机开启了访问密码,从机需要设置主从复制时的密码;

(4)未涉及到使用用户,关于实践在安全行方面以密码的形式来验证就可以了,在实际应用中,若多个项目共享redis时,可能会根据用户来划分权限;

(5)未调整相关的数据持久化的配置,其实可以修改“dbfilename dump.rdb”为“appendfilename "appendonly.aof"”为$REDIS_HOME/runtime目录下的;

5.相关下载

(1)redis安装源码包下载,安装后的redis-server版本为redis7.0.11;

(2)主从架构的配置文件下载,包含原始配置、主节点配置、从节点配置;

(3)《redis主从架构.zip》;


 点赞


 发表评论

当前回复:作者

 评论列表


留言区