title: Redis哨兵集群搭建(Docker-Compose)
date: 2022-09-27 17:00:56
tags:
- Redis

代码地址:https://github.com/li-zheng-hao/redis-sentinel-docker-compose

部署方式

一主两从三哨兵:

  1. 1个主节点
  2. 2个从节点
  3. 3个哨兵节点

服务器配置

  • 系统:CentOS 7.9
  • IP:172.10.2.52
  • 服务器数量:1台

这里只是用一台服务器部署进行演示,后面会在备注中指明如何在多个服务器上分开部署

部署脚本

主从脚本

version: '3'
services:
master:
image: redis
container_name: redis-master
command: redis-server --requirepass lzh123456 --masterauth lzh123456
network_mode: host
slave1:
image: redis
container_name: redis-slave-1
network_mode: host
command: redis-server --slaveof 172.10.2.52 6379 --masterauth lzh123456 --requirepass lzh123456 --port 6380
slave2:
image: redis
container_name: redis-slave-2
network_mode: host
command: redis-server --slaveof 172.10.2.52 6379 --masterauth lzh123456 --requirepass lzh123456 --port 6381

其中几个注意点:

  1. network_mode使用的是host模式,所以不需要绑定端口
  2. 由于这个脚本是两个slave节点都和master在一个节点,因此需要在运行时配置端口

如果是要部署在三个不同的服务器上,需要更换为下面两个脚本

# master脚本
version: '3'
services:
master:
image: redis
container_name: redis-master
command: redis-server --requirepass lzh123456 --masterauth lzh123456
network_mode: host
# slave脚本
version: '3'
services:
slave:
image: redis
container_name: redis-slave
network_mode: host
command: redis-server --slaveof 172.10.2.52 6379 --masterauth lzh123456 --requirepass lzh123456

上面master脚本部署master节点,只需要部署一次,slave脚本部署slave节点,需要部署几个就在几个服务器上运行,同一台服务器上如果需要运行多个slave,那么还是得像第一步一样配置端口。

运行的脚本为:

docker-compose -f xxxx.yml up -d

上面没有挂载配置文件和数据文件,如果有需要的可以使用如下方式挂载:

volumes:
- ./config.conf:/etc/redis/redis.conf
- ./data:/data

如果有以下需求,建议手动挂载:

  1. 设置最大内存限制
  2. 设置数据存储策略(AOF或RDB,定时存储的频率),默认的是RDB,没有开启AOF
  3. 挂载数据,保存到宿主机上防止容器被删数据丢失

哨兵脚本

下面是部署三个哨兵的脚本

version: '3'
services:
sentinel1:
image: redis
container_name: redis-sentinel-1
command: redis-sentinel /usr/local/etc/redis/sentinel1.conf --port 26379
network_mode: host
volumes:
- ./conf/sentinel1:/usr/local/etc/redis
sentinel2:
image: redis
container_name: redis-sentinel-2
network_mode: host
command: redis-sentinel /usr/local/etc/redis/sentinel2.conf --port 26380
volumes:
- ./conf/sentinel2:/usr/local/etc/redis
sentinel3:
image: redis
network_mode: host
container_name: redis-sentinel-3
command: redis-sentinel /usr/local/etc/redis/sentinel3.conf --port 26381
volumes:
- ./conf/sentinel3:/usr/local/etc/redis

哨兵的配置文件:

port 26379
dir /tmp
sentinel monitor mymaster 172.10.2.52 6379 2
sentinel auth-pass mymaster lzh123456
sentinel down-after-milliseconds mymaster 3000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 5000
sentinel deny-scripts-reconfig yes

注意点:

  1. 同样都是部署在同一台服务器,因此需要对三个哨兵分别配置端口
  2. 配置脚本需要复制三份,因为哨兵进程会对这个文件写入一些配置,因此不能用同一份共享

如果要分成多个服务器进行部署,需要改写成下面这样:

version: '3'
services:
sentinel:
image: redis
container_name: redis-sentinel-1
command: redis-sentinel /usr/local/etc/redis/sentinel1.conf --port 26379
network_mode: host
volumes:
- ./conf/sentinel1:/usr/local/etc/redis

需要在几台服务器上运行就部署几遍,部署命令与部署主从节点相同

客户端连接

客户端我使用的是AnotherRedisDesktopManager,配置连接方式如下:

可以用这个工具查看slave节点的信息:

之后可以手动测试下线master或者slave节点测试是否能够正常切换

在.Net Core中连接的方式根据使用的库决定,我用的是FreeRedis,配置方式如下:

RedisClient redisClient = new RedisClient(
GlobalConfig.Instance.Redis.RedisConn,
GlobalConfig.Instance.Redis.SentinelAdders.ToArray(),
true //是否读写分离
);
serviceCollection.AddSingleton<IRedisClient>(redisClient);

配置信息:

 "Redis": {
"ServiceName": "mymaster",
"Password": "lzh123456",
"RedisConn": "mymaster,password=lzh123456",
"SentinelAdders": [
"172.10.2.52:26379",
"172.10.2.52:26380",
"172.10.2.52:26381"
],
"RedisCacheExpireSec": 300
},

如果是其它库,需要参考官方文档来配置

Redis哨兵集群搭建-Docker-Compose的更多相关文章

  1. redis哨兵集群搭建

    下载redis jar包redis-4.0.11.tar.gz放在/data/redis目录下 解压 命令:tar -zxvf redis-4.0.11.tar.gz 解压后如图所示 在/usr/lo ...

  2. redis哨兵集群、docker入门

    redis-sentinel主从复制高可用 Redis-Sentinel Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果m ...

  3. Redis本地集群搭建(5版本以上)

    Redis本地集群搭建(5版本以上) 2019年11月3日10:05:48 步骤 1.下载安装Redis的安装包 2.复制5份,一共6份Redis的解压安装版,修改每个Redis节点的端口并开启节点 ...

  4. Linux - redis哨兵集群实例

    目录 Linux - redis哨兵集群实例 命令整理 配置流程 Linux - redis哨兵集群实例 命令整理 官网地址:http://redisdoc.com/ redis-cli info # ...

  5. helm部署Redis哨兵集群

    介绍 Redis Sentinel集群是由若干Sentinel节点组成的分布式集群,可以实现故障发现.故障自动转移.配置中心和客户端通知. 如下图: Redis Sentinel 故障转移过程: 从这 ...

  6. 11.Redis 哨兵集群实现高可用

    作者:中华石杉 Redis 哨兵集群实现高可用 哨兵的介绍 sentinel,中文名是哨兵.哨兵是 redis 集群机构中非常重要的一个组件,主要有以下功能: 集群监控:负责监控 redis mast ...

  7. python连接redis哨兵集群

    一.redis集群模式有多种, 哨兵模式只是其中的一种实现方式, 其原理请自行谷歌或者百度 二.python 连接 redis 哨兵集群 1. 安装redis包 pip install redis 2 ...

  8. redis的集群搭建(很详细很详细)

    说在前面的话 之前有一节说了redis单机版的搭建和使用jedis管理redis单机版和集群版, 本节主要讲一下redis的集群搭建. 跳转到jedis管理redis的使用 认识redis集群 首先我 ...

  9. linux环境下redis安装(redis伪集群搭建)

    redis在linux环境下搭建 1.创建目录 [root@192 local]# mkdir /usr/local/redis 2.下载redis,并解压 [root@192 local]# wge ...

  10. 单台服务器-利用docker搭建Redis哨兵集群模式

    前言:只有一台华为云服务器,所以打算创建三个容器来模拟三个服务器了. 一:拉取redis镜像 二:拉取redis.conf文件 放在自定义的目录下:wget -c http://download.re ...

随机推荐

  1. 【linux】 第1回 linux运维基础

    目录 1. 运维的本质 2. 电脑与服务器 2.1 电脑的种类 2.2 服务器种类 2.3 服务器品牌 2.4 服务器尺寸 2.5 服务器内部组成 3. 磁盘阵列 4. 系统简介 5. 虚拟化 6. ...

  2. 微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍

    微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍 一.为什么会有 API Gateway 网关 随着微服务架构的流行,很多公司把原有的单 ...

  3. 获取cpu的核数

    //获取cpu的核数 System.out.println(Runtime.getRuntime().availableProcessors());

  4. 【JavaWeb】学习笔记——Tomcat集成

    简介 Tomcat是基于Java的一个开放源代码.运行servlet和JSP Web应用的Web应用软件容器,又称servlet容器 安装 官方网站:https://tomcat.apache.org ...

  5. 八、指定节点pod运行在固定节点

    指定pod运行在固定节点 一.指定固定节点:Pod.spec.nodeName Pod.spec.nodeName 将 Pod 直接调度到指定的 Node 节点上,会跳过 Scheduler 的调度策 ...

  6. Conda 环境移植 (两种方式)

    ------------------------方法一------------------------ 优点: 在原机器上需要进行的操作较少,且除了conda不需要其余的库来支撑:需要传输的文件小,操 ...

  7. DP?

    杨斌涵//aad69d38 分治优化DP 分治优化1D/1D dp 对于一类 \[f(x) = \min_{k = y}^{x - 1} w(l, r) \] 即所有 \(w(l,r)\) 事先已知, ...

  8. C温故补缺(一):数据类型和基本类型占位

    数据类型 基本类型:就是算术类型,包括整型和实型 枚举类型:一组离散的整数 void类型:无可用值类型 派生类型:指针(*),数组([]),结构体(struct),共用体(union),函数(fun( ...

  9. vulnhub靶场渗透实战11-Deathnote

    ​网络模式,怎么方便怎么来. 靶场地址:https://download.vulnhub.com/deathnote/Deathnote.ova 这个靶机很简单.vbox装好.​ 1:主机发现,和端口 ...

  10. day18 批量查询与模糊查询 & 聚合函数与内置函数 & distinct关键字 & 分页查询limit & 排序order

    day18 两个表student和user student id s_name s_age s_sex user id u_name u_age u_sex 批量插入 insert into stud ...