文章目录
1 redis简述
1.1 支持的数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
参考地址:https://www.runoob.com/redis/redis-data-types.html
1.2 redis ha高可用方案
单点故障:高可用最少3个节点包括1主2从,当主节点停止服务时会从所有从节点中选择一个作为主节点,当主节点没有停止服务,但是由于网络问题监控状态无响应默认为停止服务时,就会出现两个主机,从节点复制数据时就会有两个数据源,造成数据同步问题。
解决方式:redis建议采用sentinel哨兵模式,通过监控主从来实现自动恢复,当主节点停止服务时就下线降级为从节点,监控到下线主节点服务启动时下线主节点会自动排队等待升级。
2 搭建redis集群
2.1 设置redis的启动文件
- 启动方式为:docker-compose up -d
- 文件目录为:/usr/local/docker/redis/
- 文件名称为:docker-compose.yml
- 文件内容为:
version: '3'
services:
master:
restart: always
container_name: redis-master
image: redis
ports:
- 6379:6379
slave1:
restart: always
container_name: redis-slave-1
image: redis
ports:
- 6380:6379
command: redis-server --slaveof redis-master 6379
slave2:
restart: always
container_name: redis-slave-2
image: redis
ports:
- 6381:6379
command: redis-server --slaveof redis-master 6379
2.2 设置sentinel的配置文件
- 文件目录为:/usr/local/docker/redis/sentinel/
- 文件名称为:
sentinel1.conf、sentinel2.conf、sentinel3.conf
- 文件内容为:3个文件的内容都一样
port 26379
dir /tmp
#自定义集群名,ip为主节点的ip,2为最小投票数
sentinel monitor mymaster 192.168.30.148 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
2.3 设置sentinel的启动文件
- 启动方式为:docker-compose up -d
- 文件目录为:/usr/local/docker/redis/sentinel/
- 文件名称为:docker-compose.yml
- 文件内容为:
version: '3'
services:
sentinel1:
image: redis
container_name: sentinel1
ports:
- 26379:26379
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
volumes:
- ./sentinel1.conf:/usr/local/etc/redis/sentinel.conf
sentinel2:
image: redis
container_name: sentinel2
ports:
- 26380:26379
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
volumes:
- ./sentinel2.conf:/usr/local/etc/redis/sentinel.conf
sentinel3:
image: redis
container_name: sentinel3
ports:
- 26381:26379
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
volumes:
- ./sentinel3.conf:/usr/local/etc/redis/sentinel.conf
2.4 验证是否成功
2.4.1 验证redis是否启动成功
通过redis desktop manager工具,输入ip和端口,连接验证
2.4.2 验证sentinel是否启动成功
命令验证:
docker exec -it sentinel1 bash #进入容器
redis-cli -p 26379 #连接redis
sentinel master mymaster #查看监控节点信息