Redis两节点高可用设计方案​功能验证

举报
架构师聊技术 发表于 2022/12/13 15:19:19 2022/12/13
【摘要】 该文档主要是针对RedisGraph高可用方案设计的功能测试,来说明方案是可实施是可行的。具体方案设计看前面的高可用方案设计文章

该文档主要是针对RedisGraph高可用方案设计的功能测试,来说明方案是可实施是可行的。具体方案设计看前面的高可用方案设计文章

  • 功能测试准备条件
    • master、slave 两台服务器
    • 172.25.0.3&主、172.25.0.4&从、172.168.1.250&VIP
    • Keepalived v2.0.7
    • 部署RedisGraph一主一从模式
  • 测试目标
    • 主节点宕机从节点接管
    • 主节点回复作为新的从节点
    • VIP在主从间切换
  • 服务器资源规划

主要分享低代码、微服务、容器化、SAAS‬、系统架构方面的的‬内容‬‬,希望‬大家‬点赞‬,评论,关注‬。

  1. 主从模式设置
#从库设置
slaveof 172.25.0.3 6379
  1. 执行查看主节点信息
redis-cli -h 127.0.0.1 info replication


  1. 查看从节点信息
docker exec 543df118730d redis-cli -h 127.0.0.1 info replication


  1. keepalived设置
global_defs {
 router_id redis-master
}
 
vrrp_script chk_redis {
 script "/usr/local/keepalived/scripts/redis_check_0.sh 172.25.0.3 6379" #监控脚本 
 interval 2 #监控时间
 timeout 2 #超时时间
 fall 3
}
 
vrrp_instance redis {
 state BACKUP 
 interface ens192
 lvs_sync_daemon_interface ens192
 virtual_router_id 202
 priority 150 #权重值 
 nopreempt #nopreempt:设置不抢占,这里只能设置在state为backup的节点上,而且这个节点的优先级必须比另外节点的高
 advert_int 1
 
 virtual_ipaddress {
 172.168.1.250 #VIP地址 
 }
 
 track_script {
 chk_redis
 }
 
notify_master "/usr/local/keepalived/scripts/redis_master_0.sh 172.25.0.3 172.25.0.4 6379 6380"
notify_backup "/usr/local/keepalived/scripts/redis_backup_0.sh 172.25.0.3 172.25.0.4 6379 6380"
notify_fault /usr/local/keepalived/scripts/redis_fault_0.sh
notify_stop /usr/local/keepalived/scripts/redis_stop_0.sh
}
  1. 查看VIP信息
ip addr


  1. 模拟RedisGraph主节点宕机
docker-compose stop redisgraph-master
  1. 查看主节点IP信息,可以看到vip已经转移


  1. 查看从节点IP信息,已经接管vip


  1. 恢复RedisGraph主节点
docker-compose start redisgraph-master
  1. 查看RedisGraph主节点主从信息


  1. 模拟RedisGraph从节点宕机
docker-compose stop redisgraph-slave-one
  1. 查看从节点IP信息,可以看到VIP已经释放


  1. 查看主节点IP信息,已经接管VIP


  1. 模拟主节点keepalived宕机
systemctl stop keepalived.service
  1. 查看主节点IP信息,VIP已经释放


  1. 查看从节点IP信息,已经接管VIP


  1. 功能测试
  • 添加
172.168.1.250:6379> GRAPH.QUERY MotoGP_0000001 "CREATE (:Rider {name:'Valentino Rossi'})-[:rides]->(:Team {name:'Yamaha'}), (:Rider {name:'Dani Pedrosa'})-[:rides]->(:Team {name:'Honda'}), (:Rider {name:'Andrea Dovizioso'})-[:rides]->(:Team {name:'Ducati'})"


  • 查询
172.168.1.250:6379> GRAPH.QUERY MotoGP "MATCH (r:Rider)-[:rides]->(t:Team {name:'Ducati'}) RETURN count(r)"


  • 数据同步
    • 查看主库数据
[root@bocloudv01 container]# docker exec -it 543df118730d redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> keys *
1) "MotoGP_0000007"
2) "MotoGP_0000002"
3) "MotoGP_0000003"
4) "MotoGP_0000008"
5) "MotoGP_0000005"
6) "MotoGP_0000004"
7) "MotoGP_0000001"
    • 查看从库数据库
[root@bocloudv01 container]# docker exec -it 2a89ff201ace redis-cli -h 127.0.0.1 -p 6380
127.0.0.1:6380> keys *
1) "MotoGP_0000007"
2) "MotoGP_0000002"
3) "MotoGP_0000003"
4) "MotoGP_0000008"
5) "MotoGP_0000005"
6) "MotoGP_0000004"
7) "MotoGP_0000001"

主要分享低代码、微服务、容器化、SAAS‬、系统架构方面的的‬内容‬‬,希望‬大家‬点赞‬,评论,关注‬。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。