大家好,我是悟空。
上周给大家深度剖析了 Redis 主从架构的原理后,读者朋友们觉得还不错,大白话的讲解,非常容易看懂。
缓存实战的文章写了很多篇,先把历史文章汇个总,方便大家查看:
这次我们来讲解下主从架构的搭建、测试及压测。因为大部分都是纯手工操作,所以看起来会有些枯燥,不过没关系,先点赞收藏,也许某天就用上了~
本架构方案是一主一从,一个主节点负责写,一个从节点负责读。如果从节点能够读到主节点的数据,就表示从节点可以拷贝主节点中的数据,主从架构搭建成功。
一主一从的方案
两台机器上都需要安装下 Redis。参考官方文档安装。
(1)首先需要关闭两台服务器上的 Redis:
redis-cli shutdown
(2)第二台机器作为从节点,配置如下:
vi /etc/redis/6379.conf
slave-read-only yes
masterauth abc123
slaveof eshop-cache01 6379
bind 192.168.10.115
(3)第一台机器作为主节点,配置如下:
vi /etc/redis/6379.conf
slave-read-only yes
requirepass abc123
bind 192.168.10.86
(4)重启Redis 实例
先重启主节点上的 Redis 实例,再启动从节点上的 Redis 实例:
cd /etc/init.d
./redis_6379 start
(5)查看 Redis 实例是否启动成功
ps -ef | grep redis
(6)查看从节点的信息
# 通过 ip 地址、端口号、账号、密码连接 Redis
redis-cli -h 192.168.10.115 -p 6379 -a abc123
# 查看配置信息
info relication
(7)查看主节点的信息
# 通过 ip 地址、端口号、账号、密码连接 Redis
redis-cli -h 192.168.10.86 -p 6379 -a abc123
# 查看配置信息
info replication
mark
以防端口不通问题,可以在两台机器上打开 6379 端口:
iptables -A INPUT -ptcp --dport 6379 -j ACCEPT
首先查看主从节点上 Redis 中的数据是否一致:
get keys
发现 key 的数量和名字都是一样的,验证通过。
挑选一个 key,看下 value 是否相同:
get key11
结果是相同的,验证通过
mark
主节点上设置一个 key12
set key12 120
从节点上查看 key12 的值
get key12
从节点上查询到 key12 的值是 120,说明主从同步没问题,验证通过。
读写分离架构中,从节点是只读的,只能查询,所以 set 一个 key 会报错,验证通过。
Redis 安装文件自带压测工具:redis-benchmark。
压测工具的命令格式如下:
redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests]> [-k <boolean>]
我们就使用默认的参数进行测试:
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 命令的压测结果:
====== 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
说明:
其他命令的结果和 Get 命令也是类似的结果,不再展开说明。
至此,Redis 的主从架构搭建和压测已完成了。