本文目录如下:

  • 一、前言
  • 二、部署拓扑图
  • 三、搭建 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 到 1 主 2 从 3 哨兵的架构演进之路_Redis

另外 Redis 的端口都是 6379,Sentinel(哨兵) 的端口都是 26379。

部署的拓扑图如下,三台服务器上都部署了一个哨兵。

从单点 Redis 到 1 主 2 从 3 哨兵的架构演进之路_redis_02

三、搭建 Redis 一主两从

我们原来的单点的服务器上是有运行的 Redis 容器的,把这个容器的镜像打包备份下,然后拷贝和还原到新的服务器上就好了。

搭建 Redis 一主两从的步骤如下:

  • 拷贝和还原 Redis 镜像到三台服务器上。
  • 其中一台服务器作为主节点,配置文件为主节点的,用 docker 启动 Redis 主节点。
  • 另外两台服务器作为从节点,配置文件为从节点的,用 docker 启动两个 Redis 从节点。
  • 进入到主节点和从节点容器中,查看主从复制状态。

1.1 备份和还原 Redis 镜像

打包测试环境的 Redis 镜像,这个命令会将服务器上 redis 镜像打包成 tar 包,这样我们就方便拷贝到其他服务器上了。执行打包镜像命令:

sudo docker save -o redis.tar redis:0.1
  • 1.

因为保存的 tar 包权限不够,所以设置下权限为 777。执行修改权限的命令:

sudo chmod 777 redis.tar
  • 1.

将这个 tar 包拷贝新环境的三台服务器上。执行导入镜像的命令:

sudo docker load -i redis.tar
  • 1.

添加配置文件 redis.conf 放在本地,作为 redis 容器的配置文件。这个文件也可以在 redis 官网下载 https://redis.io/。redis.conf 文件放到 /home/redis 目录下。

sudo mkdir /home/redis
  • 1.

1.2 主节点配置

修改本地的 redis.conf 文件:

requirepass abc123
masterauth abc123
  • 1.
  • 2.

requirepass 和 masterauth:对于数据比较重要的节点,主节点会通过设置requirepass参数进行密码 验证,这时所有的客户端访问必须使用auth命令