title: 数据缓存
author: xulishan@finogeeks.com
数据缓存
FinClip采用Redis实现数据缓存功能,Redis 是一种开源(BSD 许可)、内存中数据结构存储的开源软件,通常 用作数据库、缓存和消息代理。 Redis 提供了诸如字符串、散列、列表、集合、带范围查询的排序集合、位图、 超级日志、地理空间索引和流等数据结构。 Redis 内置复制、Lua 脚本、LRU 驱逐、事务和不同级别的磁盘持久 化,并通过 Redis Sentinel 和自动提供高可用性,在实际部署中,我们推荐客户采用Redis的集群模式,以实现高 可用性和可扩展性。
部署架构
Redis 的拓扑图如下
服务配置
实例(Instance):此中间件默认(最低)交付状态下为六实例部署,互为主从,且从节点宕机不影响主节点使用
Slot:16384
若 REDIS 发生主从切换,会存在秒级的影响
数据目录
服务器 | 设计用途 | 路径 |
---|---|---|
节点 1 | 持久化数据目录 | /mnt/var/lib/container/redis |
docker-compose 文件目录 | /mnt/opt/docker-compose/redis | |
节点 2 | 持久化数据目录 | /mnt/var/lib/container/redis |
docker-compose 文件目录 | /mnt/opt/docker-compose/redis | |
节点 3 | 持久化数据目录 | /mnt/var/lib/container/redis |
docker-compose 文件目录 | /mnt/opt/docker-compose/redis |
网络
底层:此中间件基于 docker-compose
启动,docker-compose
基于 docker0 虚拟网卡进行通信,因此本中间件在所有服务器上的所有组件,均通过 docker0 网卡划分出的子网进行通信,并且通过 --network=host
配置运行。
子网网段可以通过
ifconfig docker0
进行确认。
业务层:
服务器 | 设计用途 | 端口 |
---|---|---|
节点 1 | [占用宿主机固定端口] Redis 实例 1 对外服务 | 7000 |
[占用宿主机固定端口] Redis 实例 2 对外服务 | 7001 | |
[占用宿主机固定端口] Redis 实例 1 集群 BUS | 17000 | |
[占用宿主机固定端口] Redis 实例 2 集群 BUS | 17001 | |
[占用宿主机固定端口] Redis 实例 1 Prometheus Metrics 信息提供 | 7200 | |
[占用宿主机固定端口] Redis 实例 2 Prometheus Metrics 信息提供 | 7201 | |
节点 2 | [占用宿主机固定端口] Redis 实例 1 对外服务 | 7000 |
[占用宿主机固定端口] Redis 实例 2 对外服务 | 7001 | |
[占用宿主机固定端口] Redis 实例 1 集群 BUS | 17000 | |
[占用宿主机固定端口] Redis 实例 2 集群 BUS | 17001 | |
[占用宿主机固定端口] Redis 实例 1 Prometheus Metrics 信息提供 | 7200 | |
[占用宿主机固定端口] Redis 实例 2 Prometheus Metrics 信息提供 | 7201 | |
节点 3 | [占用宿主机固定端口] Redis 实例 1 对外服务 | 7000 |
[占用宿主机固定端口] Redis 实例 2 对外服务 | 7001 | |
[占用宿主机固定端口] Redis 实例 1 集群 BUS | 17000 | |
[占用宿主机固定端口] Redis 实例 2 集群 BUS | 17001 | |
[占用宿主机固定端口] Redis 实例 1 Prometheus Metrics 信息提供 | 7200 | |
[占用宿主机固定端口] Redis 实例 2 Prometheus Metrics 信息提供 | 7201 |
状态检查
登录到 REDIS 所在的服务器上,执行
docker exec -it redis-7000 bash
进入容器执行
redis-cli -h 127.0.0.1 -p 7000
,并通过命令auth <密码>
登录后,执行CLUSTER NODES
,确认 6 个节点均已被加入到集群中,并且主节点(Master)、从节点(Slave)应该为同等数量如有必要,可以检查所有 3 台服务器上的 6 个容器确保集群正常
节点增、删
新增节点:若需要新增节点,请依照下列步骤操作
- 确认新节点已经安装好 Docker 19.03 或更高版本、已经安装好 docker-compose 1.27 或更高版本
- 确认新节点对于当前 REDIS 所在的所有服务器的 7000、7001、17000、17001、7200、7201 均为互相可达状态
- 从旧服务器的 “持久化数据目录” 中复制 conf 文件夹的 redis.conf 文件到新服务器的同名目录
- 从旧服务器的 “docker-compose 文件目录“ 复制 docker-compose.yaml 到新服务器的同名目录
- 执行
docker-compose up -d
启动新 REDIS 实例 1 与实例 2 - 进入 REDIS 任一实例容器,执行命令
redis-cli -p 7000 -a '<密码>' --cluster add-node <新节点IP>:<端口> <新节点IP>:<端口>
- 登录到 REDIS 命令行并使用密码鉴权后,执行
CLUSTER NODES
,确认新节点均已被加入到集群中,并且主节点(Master)、从节点(Slave)应该为同等数量
删除节点:若要删除节点,请依照下列步骤操作
- 主从节点需要分别操作。进入 REDIS 任一实例容器,执行命令
redis-cli -p 7000 -a '<密码>' --cluster del-node <从节点IP>:<端口>
- 执行命令
redis-cli -p 7000 -a '<密码>' --cluster reshard <主节点IP>:<端口>
,再执行redis-cli -p 7000 -a '<密码>' --cluster del-node <主节点IP>:<端口>
- 登录到 REDIS 命令行并使用密码鉴权后,执行
CLUSTER NODES
,确认需要移除的节点已被踢出集群,并且主节点(Master)、从节点(Slave)应该为同等数量
数据导出、恢复
REDIS 用于做数据缓存,无需备份