前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >缓存实战(八)「手摸手」主从环境的部署+压测

缓存实战(八)「手摸手」主从环境的部署+压测

作者头像
悟空聊架构
发布2022-05-13 15:20:45
3430
发布2022-05-13 15:20:45
举报
文章被收录于专栏:悟空聊架构 | 公众号

大家好,我是悟空。

前言

上周给大家深度剖析了 Redis 主从架构的原理后,读者朋友们觉得还不错,大白话的讲解,非常容易看懂。

缓存实战的文章写了很多篇,先把历史文章汇个总,方便大家查看:

《缓存实战(一)缓存初级打怪》

《缓存实战(二)Redis分布式锁》

《缓存实战(三)Redisson 分布式锁》

《缓存实战(三)Redisson 分布式锁》

《缓存实战(四)实战 Spring Cache

缓存实战(五)Redis 开发手册 | 花果山版

《缓存实战(六)详解 Redis 冷备》

《缓存实战(七)镜 | 深入剖析主从架构原理》

这次我们来讲解下主从架构的搭建、测试及压测。因为大部分都是纯手工操作,所以看起来会有些枯燥,不过没关系,先点赞收藏,也许某天就用上了~

主从架构搭建

本架构方案是一主一从,一个主节点负责写,一个从节点负责读。如果从节点能够读到主节点的数据,就表示从节点可以拷贝主节点中的数据,主从架构搭建成功。

一主一从的方案

Redis 环境搭建

两台机器上都需要安装下 Redis。参考官方文档安装。

配置主从架构和读写分离

需要配置
  • 从节点是否是只读的。配置项:slave-read-only。默认配置,不需要改。
  • 配置从节点的安全认证密码,配置项:masterauth(从节点),requirepass(主节点)。
  • 配置从节点属于哪个主节点,配置项:slaveof。
  • 配置 Redis 绑定自己的 IP 地址,配置项:bind。
配置步骤

(1)首先需要关闭两台服务器上的 Redis:

代码语言:javascript
复制
redis-cli shutdown

(2)第二台机器作为从节点,配置如下:

代码语言:javascript
复制
vi /etc/redis/6379.conf

slave-read-only yes
masterauth abc123
slaveof eshop-cache01 6379
bind 192.168.10.115

(3)第一台机器作为主节点,配置如下:

代码语言:javascript
复制
vi /etc/redis/6379.conf

slave-read-only yes
requirepass abc123
bind 192.168.10.86

(4)重启Redis 实例

先重启主节点上的 Redis 实例,再启动从节点上的 Redis 实例:

代码语言:javascript
复制
cd /etc/init.d
./redis_6379 start

(5)查看 Redis 实例是否启动成功

代码语言:javascript
复制
ps -ef | grep redis

(6)查看从节点的信息

代码语言:javascript
复制
# 通过 ip 地址、端口号、账号、密码连接 Redis
redis-cli -h 192.168.10.115 -p 6379 -a abc123
# 查看配置信息
info relication

(7)查看主节点的信息

代码语言:javascript
复制
# 通过 ip 地址、端口号、账号、密码连接 Redis
redis-cli -h 192.168.10.86 -p 6379 -a abc123
# 查看配置信息
info replication

mark

以防端口不通问题,可以在两台机器上打开 6379 端口:

代码语言:javascript
复制
iptables -A INPUT -ptcp --dport  6379 -j ACCEPT

测试主从同步

主从原始数据是否已同步

首先查看主从节点上 Redis 中的数据是否一致:

代码语言:javascript
复制
get keys

发现 key 的数量和名字都是一样的,验证通过。

挑选一个 key,看下 value 是否相同:

代码语言:javascript
复制
get key11

结果是相同的,验证通过

mark

测试主从数据实时同步

主节点上设置一个 key12

代码语言:javascript
复制
set key12 120

从节点上查看 key12 的值

代码语言:javascript
复制
get key12

从节点上查询到 key12 的值是 120,说明主从同步没问题,验证通过。

测试从节点只读

读写分离架构中,从节点是只读的,只能查询,所以 set 一个 key 会报错,验证通过。

压测主从环境

Redis 安装文件自带压测工具:redis-benchmark。

压测工具的命令格式如下:

代码语言:javascript
复制
redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests]> [-k <boolean>]

我们就使用默认的参数进行测试:

  • 并发数:50 个。Number of parallel connections (default 50)
  • 请求总数:共 10 W 个请求。Total number of requests (default 100000)
  • 每个GET/SET 命令的字节数:2 Bytes。Data size of SET/GET value in bytes (default 2)
代码语言:javascript
复制
cd /usr/local/bin
./redis-benchmark -h 192.168.10.115 -p 6379 -c 50 -n 100000 -d 2

测试结果会有多个命令的压测结果:如 PING_INLINE、PING_BULK 、SET、GET、INCR、LPUSH、RPUSH 、LPOP、RPOP 、SADD、SPOP、LPUSH、LRANGE_100、LRANGE_300、LRANGE_500、MSET

来看下 GET 命令的压测结果:

代码语言:javascript
复制
====== GET ======
  100000 requests completed in 1.51 seconds
  50 parallel clients
  2 bytes payload
  keep alive: 1

99.57% <= 1 milliseconds
99.77% <= 4 milliseconds
99.86% <= 5 milliseconds
99.92% <= 6 milliseconds
99.94% <= 7 milliseconds
99.99% <= 9 milliseconds
100.00% <= 9 milliseconds
66050.20 requests per second

说明:

  • 10W 请求在 1.51 秒完成。
  • 99.57% 的请求在 1 毫秒内完成。
  • 99.77% 的请求在 4 毫秒内完成。
  • 所有的请求都在 9 毫秒内完成。
  • 每秒发送 66050 个请求。

其他命令的结果和 Get 命令也是类似的结果,不再展开说明。

至此,Redis 的主从架构搭建和压测已完成了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 悟空聊架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 主从架构搭建
    • Redis 环境搭建
      • 配置主从架构和读写分离
        • 需要配置
        • 配置步骤
    • 测试主从同步
      • 主从原始数据是否已同步
        • 测试主从数据实时同步
          • 测试从节点只读
          • 压测主从环境
          相关产品与服务
          云数据库 Redis
          腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档