基于Docker实现Redis主从+哨兵搭建的示例实践

目录
  • 1.拉取镜像
  • 2. 编写主 从配置文件
    • 2.1 创建/home/redis/redis_conf目录:
    • 2.2 编写主配置文件
    • 2.3 编写从配置文件
    • 2.4  编写从配置文件
  • 3 编写sentinel配置文件
    • 3.1创建哨兵配置文件
    • 3.2编写哨兵配置文件
  • 4  启动主节点容器
    • 4.1启动主节点容器
    • 4.2 启动从节点容器
  • 5 存在的问题:
  • 6、分别启动每个  docker容器里面的哨兵
    • 6.1进入主节点容器
    • 6.2查看文件
    • 6.3启动主哨兵服务
    • 6.4 启动两个从哨兵服务
    • 6.5进入主哨兵
    • 6.6查看哨兵状态
    • 6.7退出哨兵
    • 6.8退出容器

说明:在一台服务器上搭建redis一主二从三哨兵

1.拉取镜像

docker pull redis:4

2. 编写主 从配置文件

2.1 创建/home/redis/redis_conf目录:

2.2 编写主配置文件

#vi redis-master.conf

port 6379              #服务端口
bind 0.0.0.0           #任何服务器都可连接
logfile "redis.log"    #日志文件名
dir /data              #data为等会开启docker容器里面的目录
appendonly yes         #是否持久化

2.3 编写从配置文件

#vi redis-slave-1.conf

port 6380
bind 0.0.0.0
logfile "redis.log"
dir /data
daemonize no
appendonly yes
slaveof 192.168.17.33 6379
slave-read-only no

2.4  编写从配置文件

#vi redis-slave-2.conf

port 6381
bind 0.0.0.0
logfile "redis.log"
dir /data
daemonize no                   #关闭redis自我保护
appendonly yes                 #开启redis持久化
slaveof 192.168.17.33 6379     #给该从节点指定隶属于的主节点
slave-read-only no             #如果没有这一行从节点不能写入数据只能读取数据

3 编写sentinel配置文件

3.1创建哨兵配置文件

touch sentinel.conf

3.2编写哨兵配置文件

3.2.1   vim sentinel.conf

port 26379
dir "/data"
logfile "sentinel.log"
daemonize yes
sentinel monitor mymaster 192.168.17.33 6379 2
#这里是哨兵的关键 mymaster:哨兵集群的名称 配置主节点的ip和端口 ,后面的数字2表示当哨兵集群当中有两个哨兵没有检测到主节点的心跳的时候表明主节点挂掉,开始推选新的主节点。(这里我们的哨兵 集群总共有三个哨兵)

3.2.2  vim sentinel2.conf

port 26380
dir "/data"
logfile "sentinel.log"
daemonize yes
sentinel monitor mymaster 192.168.17.33 6379 2

3.2.3  vim sentinel3.conf

port 26381
dir "/data"
logfile "sentinel.log"
daemonize yes
sentinel monitor mymaster 192.168.17.33 6379 2

4  启动主节点容器

4.1启动主节点容器

4.1.1 启动容器

docker run -d -p 6379:6379 -p 26379:26379 -v /home/redis/redis_conf/redis-master.conf:/data/redis.conf -v /home/redis/redis_conf/sentinel.conf:/data/sentinel.conf --name redis-master redis:4 redis-server redis.conf

4.1.2 进入容器

docker exec -it redis-master /bin/bash

4.1.3 进入redis客户端

(默认是进入 6379 端口的 redis 。还有我们在启动容器的时候已经顺便将 redi服务端启动起来了:redis-server redis.conf,所以进入容器不用启动redis 服务了,直接可以进入客户端了。 redis-cli

4.1.4查看redis信息,如果是主节点

role 将会为 master 。

info replication

4.1.5退出redis-cli

exit

4.1.6退出redis-master 容器

exit

4.2 启动从节点容器

(两个从节点容器是一样的启动方式,只修改对应的路径,端口映射,名称等,最后面的redis.conf对应的是容器内映射的redis.conf),这里只写出启动一个从节点

的命令,自己启动第二个从节点。

4.2.1启动容器,并同时用容器内的redis.conf启动redis

#启动redis-slave-1容器 同时启动redis-server

docker run -d -p 6380:6380 -p 26380:26380 -v /home/redis/redis_conf/redis-slave-1.conf:/data/redis.conf -v /home/redis/redis_conf/sentinel2.conf:/data/sentinel.conf --name redis-slave-1 redis:4 redis-server redis.conf

#单独启动redis-slave-2容器 同时启动redis-server

docker run -d -p 6381:6381 -p 26381:26381 -v /home/redis/redis_conf/redis-slave-2.conf:/data/redis.conf -v /home/redis/redis_conf/sentinel3.conf:/data/sentinel.conf --name redis-slave-2 redis:4 redis-server redis.conf
 

4.2.2 进入容器

 [root@kcx-yk-k8s-master-33 redis_conf]#docker exec -it redis-slave-2 /bin/bash

4.2.3 进入客户端 (注意:如果直接用 redis-cli 进入,默认会进入 6379 端口的 redis 客户端,如果我们三台不同的服务器,主从节点都是用的各自对的 6379 端口就不会有问题,但是如 果像我一样使用的一台服务器,从节点的端口是 6380 和 6381 就需要指定端口进入 redis 客户端) redis-cli -p 6380

4.2.4查看信息(从节点的role为slave)

info replication

备注: 如果 role 为 master ,我们还可以手工指定主节点(ip和端口根据自己的实际情况指定主节点的 ip 和端口) slaveof 127.0.0.1 6379

5 存在的问题:

显示master_link_status的状态为down。表明从节点没有连接到主节点。

查看日志:

1:S 18 Jan 04:20:32.954 # Error condition on socket for SYNC: Connection refused

解决:

原因分析:可能是由于host没有配置主机的默认ip

修改后重新启动:一主二从

6、分别启动每个  docker容器里面的哨兵

6.1进入主节点容器

首先进入容器。 docker exec -it redis-master bash

6.2查看文件

用 ls 命令,我们就可以看淡到 sentinel.conf 文件,这个配置文件我们就会用来启动 redis 的哨兵。 ls

6.3启动主哨兵服务

redis-sentinel sentinel.conf

6.4 启动两个从哨兵服务

首先进入容器。

docker exec -it redis-slave-1 bash(docker exec -it redis-slave-2 bash) 

启动哨兵

redis-sentinel sentinel.conf 

6.5进入主哨兵

redis-cli -p 26379 

6.6查看哨兵状态

(我们会看到哨兵会显示监听的主节点的信息和从节点的数量,以及现在的哨兵数量。现在的哨兵数量应该为 3 ) info

6.7退出哨兵

exit

6.8退出容器

exit

到此这篇关于基于Docker实现Redis主从+哨兵搭建的示例实践的文章就介绍到这了,更多相关Docker Redis主从+哨兵搭建内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于Docker搭建Redis主从集群的实现

    最近陆陆续续有不少园友加我好友咨询 redis 集群搭建的问题,我觉得一定是之前写的这篇 <基于Docker的Redis集群搭建> 文章有问题了,所以我花了几分钟浏览之前的文章总结了下面几个问题: redis 数量太少,只创建了 3 个实例:由于只有 3 个实例,所以全部只能是主节点,无法体现集群主从关系:如何搭建主从集群?如何分配从节点? 基于之前的文章,我想快速的过一下这几个问题,本文基于 Docker + Redis 5.0.5 版本,通过 cluster 方式创建一个 6 个 redi

  • 使用docker搭建redis主从的方法步骤

    一.构建 Docker 环境 1.创建 dockerfile FROM centos:latest RUN groupadd -r redis && useradd -r -g redis redis RUN yum -y update && yum -y install epel-release && yum -y install redis && yum -y install net-tools EXPOSE 6379 2.构建镜像 do

  • Docker下redis的主从配置教程详解

    1.拉取redis镜像 docker pull redis 2.启动3个redis容器服务,分别使用到6379.6380.6381端口 docker run --name redis-6379 -p 6379:6379 -d redis docker run --name redis-6380 -p 6380:6379 -d redis docker run --name redis-6381 -p 6381:6379 -dredis 3.查看容器 [tcy@tcy1 ~]$ docker ps

  • centos6使用docker部署redis主从数据库操作示例

    本文实例讲述了centos6使用docker部署redis主从数据库操作.分享给大家供大家参考,具体如下: 目录结构: /redis /Dockerfile /Readme /redis-3.2.8.tar.gz /start.sh Dockerfile: FROM centos MAINTAINER qiongtao.li hnatao@126.com ADD ./redis-3.2.8.tar.gz /opt ADD ./start.sh /opt/start_redis.sh RUN ec

  • 使用Docker搭建Redis主从复制的集群

    在主从复制模式的集群里,主节点一般是一个,从节点一般是两个或多个,写入主节点的数据会被复制到从节点上,这样一旦主节点出现故障,应用系统能切换到从节点去读写数据,这样能提升系统的可用性.而且如果再采用主从复制模式里默认的读写分离的机制,更能提升系统的缓存读写性能.所以对性能和实时性不高的系统而言,主从复制模式足以满足一般的性能和安全性方面的需求. 1 概述主从复制模式 在实际应用中,如果有相应的设置,在向一台Redis服务器里写数据后,这个数据可以复制到另外一台(或多台)Redis服务器,这里数据

  • 详解使用Docker进行Redis主从复制实践

    一.背景 最近在做零信任安全网关,需要使用Redis作为认证缓存服务器,因为网关服务器分布在多个集群,每次都跨机房认证不太实现:所以需要使用Redis主从同步,将过程记录下来,希望可以给需要的同学一点参考. 二.操作步骤 安装Docker 主服务配置 从服务配置 验证同步效果 三.安装Docker 本篇文章主要是问了记录主从配置的过程,因此我采用最简单的docker方式来搭建Redis服务,安装docker的命令如下所示 curl -sSL https://get.daocloud.io/doc

  • 基于Docker实现Redis主从+哨兵搭建的示例实践

    目录 1.拉取镜像 2. 编写主 从配置文件 2.1 创建/home/redis/redis_conf目录: 2.2 编写主配置文件 2.3 编写从配置文件 2.4  编写从配置文件 3 编写sentinel配置文件 3.1创建哨兵配置文件 3.2编写哨兵配置文件 4  启动主节点容器 4.1启动主节点容器 4.2 启动从节点容器 5 存在的问题: 6.分别启动每个  docker容器里面的哨兵 6.1进入主节点容器 6.2查看文件 6.3启动主哨兵服务 6.4 启动两个从哨兵服务 6.5进入主

  • docker搭建redis主从哨兵集群的实现步骤

    目录 1:获取redis镜像 2:创建redis主从+哨兵docker-compose文件 3:redis配置和哨兵配置说明 4:启动docker-compose 5:查看启动情况 6:进入主节点查看集群情况 本文以docker-compose 搭建高可用Redis 主从.哨兵集群为例子 关于redis主从,哨兵集群原理参见:Redis 单机安装/ 哨兵模式集群安装 1:获取redis镜像 docker pull redis:6.2.7 2:创建redis主从+哨兵docker-compose文

  • docker实现redis集群搭建的方法步骤

    目录 一.创建redis docker基础镜像 二.制作redis节点镜像 三.运行redis集群 引用: 摘要:接触docker以来,似乎养成了一种习惯,安装什么应用软件都想往docker方向做,今天就想来尝试下使用docker搭建redis集群. 首先,我们需要理论知识:Redis Cluster是Redis的分布式解决方案,它解决了redis单机中心化的问题,分布式数据库--首要解决把整个数据集按照分区规则映射到多个节点的问题. 这边就需要知道分区规则--哈希分区规则.Redis Clus

  • 基于Docker的Mysql主备搭建的实现步骤

    目录 前期规划: 配置过程: Docker mysql主从配置.我们会在一台centos的虚拟机上,配置mysql主备 前期规划: docker mysql版本 mysql:5.7 docker网络配置,我们会创建名称为mysql的网络,子网掩码为 172.88.0.0/16 docker mysql主对应的容器名称:mysql-master, ip地址:172.88.0.11,映射端口:3307,文件卷配置(配置文件和数据文件持久化)mysql配置文件地址:/usr/local/docker/

  • redis 主从哨兵模式实现一主二从

    目录 一.环境 二.安装 三.配置 3.1.配置redis.config文件 3.2.配置sentinel.config文件 一.环境 操作系统:centos7.6/Mac OSredis版本:6.2.5以上版本ssh工具:xshell和xftpspringboot集成redis哨兵主从 二.安装 三台服务器上使用相同的方式安装redis 把redis-6.2.5.tar.gz文件上传到服务的/usr/local/src/tools目录中 #> tar -xvf redis-6.2.5.tar.

  • 使用Docker配置redis sentinel哨兵的方法步骤

    目录 1.配置主从 2. 配置哨兵 3.SpringBoot连接 本文演示一主二从. 先说一下遇到的问题.我看网上说想配置哨兵,必须让启动redis的docker网络模式为host,否则无法访问到从还是什么的.我指定--network host后无法外网访问,redis desktop manager连不上redis了,后来发现我这个新克隆的机器没关防火墙,关上就好了. 1.配置主从 docker pull一下redis master mkdir -p /mydata/redis/6379/co

  • 基于Docker+Selenium Grid的测试技术应用示例代码

    Selenium Grid介绍 尽管在未来将会推出的Selenium 4.0版本中对Selenium Grid的一些新特性进行了说明,但是目前来看官方并没有太多详细文档供大家参考,所以本书中仍结合目前被广泛使用的Selenium Grid 版本进行讲解. 正如其官网对Selenium Grid的描述,它是一个智能代理服务器,允许Selenium测试将命令路由到远程Web浏览器实例.其目的是提供一种在多台计算机上并行运行测试的简便方法.使用Selenium Grid,一台服务器充当将JSON格式的

  • docker实现MySQL主从双备的示例代码

    目录 环境配置 MySQL基础知识 搭建主MySQL 搭建从MySQL 配置主从复制 拓展 环境配置 本地操作系统:Win10虚拟机的操作系统:CentOS Stream 8已安装docker,可以参考详细安装教程 MySQL基础知识 搭建MySQL主从双备是在docker情况下自定义MySQL的配置文件,在上一节我们讲述了如何挂载docker的MySQL数据文件,其中run指令参数-v /home/mysql/conf:/etc/mysql/conf.d是挂载MySQL的配置文件. 当我们通过

  • 基于Docker的MySQL主从复制环境搭建的实现步骤

    1. 前言 之前的程序架构可能是这样的一种形式: 当程序体量扩大后,我们进行扩展,可能会扩展多个后台服务实例,但数据库还是只有一个,所以系统的瓶颈还是在数据库上面,所以这次的主要任务就是对数据库进行扩展,主要形式为:扩展多台数据库实例,实现读写分离,对于一些写的任务分配到主数据库,对于读的任务使用子数据库进行读取.从而提高系统性能. 修改后的架构如下所示: 2. 环境预搭建 这次使用docker来进行这个环境的搭建,使用MySQL版本为5.7.13. docker pull mysql:5.7.

随机推荐