顺丰Redis-Sentinel架构部署

[原创]个人理解,请批判接受,有误请指正。转载请注明出处: https://heyfl.gitee.io/design/sf-redis-sentinel-design.html

接: Redis-Sentinel总结

背景

介于Redis-Sentinel的高可用性,我们在顺丰内部的Redis集群中,大量使用了Redis-Sentinel来保证Redis的高可用性
但是由于Redis主从的复制是异步的,从节点数据略微落后于主节点数据,为了业务的一致性,一般从节点是闲置的,也就是说不会做读写分离

但这种情况下,Redis的最高吞吐量会被限制死在单机的吞吐量上,这对于一些高吞吐量的业务来说,是不够的。 因此有了下面的架构

阅读更多

docker部署redis集群(Sentinel版)

拉取Redis镜像

1
docker pull redis

通过镜像启动容器(Redis集群实例*3 1主2从,集群部署完再设密码)

1
2
3
4
5
6
7
docker run -it --name redis9000 -d -p 9000:6379 redis redis-server --requirepass 123456 --port 6379
docker run -it --name redis9001 -d -p 9001:6379 redis redis-server --requirepass 123456 --port 6379
docker run -it --name redis9002 -d -p 9002:6379 redis redis-server --requirepass 123456 --port 6379

#docker run -it --name redis9003 -d -p 9003:6379 redis redis-server --requirepass 123456 --port 6379
#docker run -it --name redis9004 -d -p 9004:6379 redis redis-server --requirepass 123456 --port 6379
#docker run -it --name redis9005 -d -p 9005:6379 redis redis-server --requirepass 123456 --port 6379

查询各个实例的容器IP

阅读更多

Redis集群--sentinel 与 cluster的区别

[原创]个人理解,请批判接受,有误请指正。转载请注明出处: https://heyfl.gitee.io/redis/Different-Between-Sentinel-And-Cluster.html

一、sentinel 与 cluster的区别


Sentinel的作用
  • 监控+自动故障迁移(自动升主)
    • 定期监控redis是否按照预期良好地运行;
    • 当一个master节点不可用时,能够选举出master的多个slave 并令其自动升主

PS. sentinel本身支持集群


Cluster的作用
阅读更多

1分钟教你redis集群搭建(2服務器)

遇到有疑惑的可参考这个链接

注意: 关闭redis集群不能直接kill掉进程,或者关机,我们要通过命令redis-cli -p 7001 shutdown进行关闭,这样在关闭之前,数据才能够进行保存

1. 安装 redis

详:略

2. 创建 n 个 redis.conf 文件(redis 集群需要至少6个节点[3主3从])

详:

1
2
3
4
5
6
7
daemonize    yes                          //redis后台运行
pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7002,7003
port 7000 //端口7000,7002,7003
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout 5000 //请求超时 设置5秒够了
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
阅读更多