作者:微信小助手
发布时间:2022-06-08T17:04:54
这是悟空的第 150 篇原创文章
官网:www.passjava.cn
你好,我是悟空呀~
本文目录如下:
一、前言
二、部署拓扑图
三、搭建 Redis 一主两从
1.1 备份和还原 Redis 镜像
1.2 主节点配置
1.3 从节点配置
1.4 启动容器
1.5 查看 Redis 状态
1.6 测试主从复制
四、搭建哨兵集群
4.1 哨兵集群拓扑图
4.2 哨兵服务是怎么启动的
4.3 哨兵配置
4.4 启动哨兵容器
五、客户端自动感知故障
如何实现自动感知故障
客户端自动感知的原理
六、遇到的问题
6.1 提示不能写只读的 redis 节点
6.2 提示连接 Redis 失败
七、总结
我们有个项目中用的 MySQL、Redis、ES、微服务都是单节点部署的,没有做集群模式部署,为了提高整体的可用性,对项目的部署架构进行了升级,支持高可用。相关内容可参考之前的两篇:
通过本篇,你可以学到以下内容:
缓存实战的文章写了很多篇,把历史文章汇总下,方便大家查看:
我们项目的测试环境 12 台服务器已经部署好了,其中三台用来部署 Redis 的 一主 + 两从 + 三哨兵的服务器。服务器资源清单如下:
另外 Redis 的端口都是 6379,Sentinel(哨兵) 的端口都是 26379。
部署的拓扑图如下,三台服务器上都部署了一个哨兵。
我们原来的单点的服务器上是有运行的 Redis 容器的,把这个容器的镜像打包备份下,然后拷贝和还原到新的服务器上就好了。
搭建 Redis 一主两从的步骤如下:
打包测试环境的 Redis 镜像,这个命令会将服务器上 redis 镜像打包成 tar 包,这样我们就方便拷贝到其他服务器上了。执行打包镜像命令:
sudo docker save -o redis.tar redis:0.1
因为保存的 tar 包权限不够,所以设置下权限为 777。执行修改权限的命令:
sudo chmod 777 redis.tar
将这个 tar 包拷贝新环境的三台服务器上。执行导入镜像的命令:
sudo docker load -i redis.tar
添加配置文件 redis.conf 放在本地,作为 redis 容器的配置文件。这个文件也可以在 redis 官网下载 https://redis.io/。redis.conf 文件放到 /home/redis 目录下。
sudo mkdir /home/redis
修改本地的 redis.conf 文件:
requirepass abc123
masterauth abc123
requirepass 和 masterauth:对于数据比较重要的节点,主节点会通过设置requirepass参数进行密码 验证,这时所有的客户端访问必须使用auth命令实行校验。从节点与主节点 的复制连接是通过一个特殊标识的客户端来完成,因此需要配置从节点的 masterauth参数与主节点密码保持一致,这样从节点才可以正确地连接到主 节点并发起复制流程。
slave-read-only yes
requirepass abc123
masterauth abc123
slaveof 10.2.1.61 6379
需要注意的是需要映射本地文件夹。
sudo docker run -p 6379:6379 --restart=always --name redis \
-v /home/redis/redis.conf:/usr/local/etc/redis/redis.conf \
-v /home/redisdata:/data/ \
-d 301
-v 代表映射的文件或文件夹,这里映射了 redis.conf 文件和 data 目录。data 目录会存放 Redis 的 AOF
和 RDB
持久化文件。
-d 表示后台运行,46b 代表镜像 id。因为我们服务器是没有外网的,所以用的是本地镜像启动的,如果你的服务器有外网,完全可以用官网的 redis 镜像启动。
进入容器,连接 redis,node1的 redis 密码是 abc123