Docker搭建Redis主从 + Redis哨兵模式(一主一从俩哨兵)

我这里是搭建一主一从,俩哨兵,准备两台服务器,分别安装docker

我这里有两台centos服务器 

主服务器IP:192.168.252.134

从服务器IP:192.168.252.135

1.两台服务器分别拉取redis镜像

docker pull redis

2.查看镜像 docker images

3.创建文件目录,我这里是放在 /opt/docker/redis

mkdir /opt/docker/redis/conf

mkdir /opt/docker/redis/data

4.主节点配置文件修改(提前准备好配置文件)可以去redis官方下载:redis.conf 配置文件下载

进入到 cd  /opt/docker/redis/conf  把 redis.conf 配置文件放到这里

如果不想下载的话也可以直接  vim redis.conf 创建并编辑文件,配置内容如下

cd /opt/docker/redis/conf

# 注释掉 所有IP都可以访问redis服务
#bind 127.0.0.1 -::1

# 关闭保护模式
protected-mode no

# 端口号
port 6379

# 改为no 后台进程的模式,避免跟docker的-d命令冲实
daemonize no

pidfile /var/run/redis_6379.pid

loglevel notice

logfile ""

# 登录密码
requirepass 123456

# 主节点密码
masterauth 123456

# 持久化
# 开启后,Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件,每次启动时Redis都会先把这个文件的数据读入内存里
appendonly yes

5.从节点配置文件修改

同样  cd /opt/docker/redis/conf   编辑 vim redis.conf

从节点的配置只多了一个 replicaof  主从复制的配置,(如果配置多个从节点,复制此配置即可)

# 注释掉 所有IP都可以访问redis服务
#bind 127.0.0.1 -::1

# 关闭保护模式
protected-mode no

# 端口号
port 6379

# 改为no 后台进程的模式,避免跟docker的-d命令冲实
daemonize no

pidfile /var/run/redis_6379.pid

loglevel notice

logfile ""

# 登录密码
requirepass 123456

# 主节点密码
masterauth 123456

# 持久化
# 开启后,Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件,每次启动时Redis都会先把这个文件的数据读入内存里
appendonly yes

#从节点需要配置这个 主节点的IP 和端口
replicaof 192.168.252.134 6379

6.分别启动 两台服务器上的redis容器

# 主服务器启动
# 创建并运行redis容器
docker run -d --privileged=true --restart always -v /opt/docker/redis/data:/data -v /opt/docker/redis/conf/redis.conf:/etc/redis/redis.conf --name redis-master -p 6379:6379 redis /etc/redis/redis.conf


# 从服务器启动
# 创建slave节点
docker run -d --privileged=true --restart always -v /opt/docker/redis/data:/data -v /opt/docker/redis/conf/redis.conf:/etc/redis/redis.conf --name redis-slave -p 6379:6379 redis /etc/redis/redis.conf

参数说明:

-v /opt/docker/redis/data:/data ## 将容器里的数据挂载到宿主机/opt/docker/redis/data目录下

-v /opt/docker/redis/conf/redis.conf:/etc/redis/redis.conf ## 容器里的redis配置文件与/opt/docker/redis/conf/redis.conf下的配置文件互相通信

/etc/redis/redis.conf  ## 指定要加载的配置文件 就是映射的上面配置的那个redis.conf文件

7.这样一主一从的redis服务就启动成功了,我们进入容器验证一下

# 查看容器

docker ps

# 进入主容器

docker exec -it redis-master /bin/bash

# 登录到redis服务

redis-cli

# 输入密码

auth 123456

# ping一下

ping

可以看到服务正常启动

8.查看主从信息

info replication

从节点查看:也是一样进入到从节点容器,登录redis服务里面

使用命令 exit 即可退出服务和容器

此时 主从搭建已经配置好了,我们可以用redis工具往主节点redis中set数据,即可看到从节点有相同的数据被同步过来了。

9.哨兵模式配置

哨兵的配置文件 sentinel.conf 也同样可以去  redis官方下载:sentinel.conf 配置文件下载

创建目录并进入

mkdir /opt/docker/sentinel

cd /opt/docker/sentinel

使用官方配置 把 sentinel.conf 文件copy到 服务器 /opt/docker/sentinel 这个目录

或者直接 vim sentinel.conf  配置内容如下

# Example sentinel.conf

# 关闭保护模式
protected-mode no

# 哨兵服务的端口号
port 26379

# 改为no 后台进程的模式,避免跟docker的-d命令冲实
daemonize no

pidfile /var/run/redis-sentinel.pid

loglevel notice

logfile ""

dir /tmp

# 添加主节点的 IP和端口 后面的这个数字1,代表主机挂了,slave投票看让谁接替成为主机,票数最多的,就会成为主机! (我这只部署两台哨兵 所以写1)
sentinel monitor mymaster 192.168.252.134 6379 1

# 主节点的认证密码 
sentinel auth-pass mymaster 123456

# 监控时间 (名称) (超时时间,当超过这个时间,则认为master已经挂了)
sentinel down-after-milliseconds mymaster 50000

acllog-max-len 128

sentinel parallel-syncs mymaster 1

sentinel failover-timeout mymaster 180000

sentinel deny-scripts-reconfig yes

SENTINEL resolve-hostnames no

SENTINEL announce-hostnames no

SENTINEL master-reboot-down-after-period mymaster 0

多个哨兵的配置都是如此

10.启动哨兵模式容器  多个哨兵操作都是同样的(我这里是两台服务器两个哨兵)

# redis 哨兵  主节点
docker run -d --privileged=true --restart always -v /opt/docker/sentinel/sentinel.conf:/etc/redis/sentinel.conf  --name sentinel-master -p 26379:26379 redis redis-sentinel /etc/redis/sentinel.conf


# redis 哨兵 从节点
docker run -d --privileged=true --restart always -v /opt/docker/sentinel/sentinel.conf:/etc/redis/sentinel.conf  --name sentinel-slave -p 26379:26379 redis redis-sentinel /etc/redis/sentinel.conf

参数说明

redis-sentinel 是 Redis 提供的哨兵模式的命令行工具,它可以用来启动一个哨兵进程,并且可以通过它来监控和管理 Redis 服务

/etc/redis/sentinel.conf 是指定启动的加载文件

11.进到哨兵容器里面查看哨兵信息

# 进入到哨兵容器
docker exec -it sentinel-master /bin/bash

# 登录redis哨兵服务
redis-cli -p 26379

# 查看哨兵信息
info sentinel

通过上面的几个状态信息,我们可以看到哨兵检测的主节点信息,主节点下面有几个从节点,同时哨兵节点有几个。

至此 redis主从搭建和哨兵模式都已经配置好了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/668685.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

编写备份MySQL 脚本

目录 环境准备 增量备份 增量备份和差异备份 完整代码如下 测试脚本是否正常 星期天运行脚本(完全备份) 星期一运备份脚本(增量备份) 星期二备份数据(其他天--增量备份) 星期三备份数据(差异备…

cobalt strike基础测试

下载链接4.3:https://pan.baidu.com/s/1E_0t30tFWRiE5aJ7F-ZDPg 链接4.0:https://pan.baidu.com/s/1SkMmDem3l6bePqIDgUz2mA 提取码:burp 一、简介: cobalt strike(简称CS)是一款团队作战渗透测试神器,分为客户端…

C++笔试强训day37

目录 1.旋转字符串 2.合并k个已排序的链表 3.滑雪 1.旋转字符串 链接https://www.nowcoder.com/practice/80b6bb8797644c83bc50ac761b72981c?tpId196&tqId37172&ru/exam/oj 如果 A 字符串能够旋转之后得到 B 字符串的话,在 A 字符串倍增之后的新串中&am…

linux驱动学习(二)之点灯

需要板子一起学习的可以这里购买(含资料):点击跳转 如何实现对硬件控制 分析硬件原理图(开发板的原理图)----> 分析硬件的控制方法 ---> 控制硬件时,所要用到的寄存器 ----> 了解控制硬件寄存器的…

关于如何在Arch Linux上编写自己的第一个module

前一段时间一直想深入学习编写一个module插入到自己的内核当中,但是网上的资料基本上全都针对的Ubuntu和Debian等流行的Linux发行版,这里打算简单的记录一波博客。 啥是Module?(着急可不看) 众所周知:现代宏内核架构的操作系统都会借鉴微内核…

【stableDiffusion】HuggingFace模型下载(只要知道url,就直接开始下载)

一、方法 有人说,那我怎么知道 huggingface 上面我想要的资源的url,去哪儿找啊? 那就涉及到一些魔法手段了,或者你能在其他人的博客或者百度上搜索到合适的url。 我这个办法是用来节约我的魔法的流量的。 1.迅雷 1.1 打开迅雷&…

【Kotlin】简单介绍与使用kotlin

🍎个人博客:个人主页 🏆个人专栏:Kotlin ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 特点 变量和常量 数据类型和类型推断 函数 字符串模板 条件表达式 空安全 when 表达式 循环 我的其他博客 前言 Kotlin是…

PostgreSQL基础(六):PostgreSQL基本操作(二)

文章目录 PostgreSQL基本操作(二) 一、字符串类型 二、日期类型 三、

比较与深浅克隆

1.比较 (1)Comparable接口:(重写compareTo方法) 由于它是一个接口,而且在这个接口中只有一个compareTo方法,所以所有实现该接口的类都需要重写。这个compareTo方法相当于制定一个比较标准&…

Raid的全局热备和独立热备

目录 Hot Spare背景: 1.定义与功能 2.数据存储与容量 3.配置模式 4.数量限制: 5.数据重建: 6.管理与维护 实操全局热备和独立热备: 配置全局热备: 配置独立热备: Hot Spare背景: 在RAID配置中,Hot Spare(热备)是一个非常重要的概念…

【数据结构与算法 | 二叉树篇】二叉树的前中后序遍历(递归版本)

1. 二叉树的概念 (1). 二叉树的结构 借用了一下力扣的模板 public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val val;this.left left;this.righ…

【C++】list的使用(上)

🔥个人主页: Forcible Bug Maker 🔥专栏: STL || C 目录 前言🌈关于list🔥默认成员函数构造函数(constructor)析构函数(destructor)赋值运算符重载 &#x1…

第十六课,海龟画图:设置画笔颜色、宽度函数,移动画笔函数

一,turtle.color():画笔颜色函数 这个函数能设置画笔画出来的颜色,当然,使用它之前你需要认识有哪些“颜料”可供你选择,turtle库的color()函数可以选择以下颜色: "white" 白色(建议…

进程间通信(27000字超详解)

🌎进程间通信 文章目录: 进程间通信 进程间通信简介       进程间通信目的       初识进程间通信       进程间通信的分类 匿名管道通信       认识管道       匿名管道       匿名管道测试       管道的四种…

Linux系统编程(七)网络编程TCP、UDP

本文目录 一、基础知识点1. IP地址2. 端口3. 域名4. 网络协议类型5. IP协议类型6. 字节序7. socket套接字 二、常用API1. socket套接字描述符2. bind套接字绑定3. listen设置客户端连接个数4. accept接收客户端请求5. connect连接服务端 三、编程流程1.TCP编程 在学习本章之前&…

sqoop操作

介绍 sqoop是隶属于Apache旗下的, 最早是属于cloudera公司的,是一个用户进行数据的导入导出的工具, 主要是将关系型的数据库(MySQL, oracle...)导入到hadoop生态圈(HDFS,HIVE,Hbase...) , 以及将hadoop生态圈数据导出到关系型数据库中 操作 将数据从mysql中导入到HDFS中 1.全量…

[AI Google] Google I/O 2024: 为新一代设计的 I/O

编辑注:以下是 Sundar Pichai 在 I/O 2024 上讲话的编辑版,并包含了更多在舞台上宣布的内容。查看我们收藏中的所有公告。 Google 完全进入了我们的 Gemini 时代。 在开始之前,我想反思一下我们所处的这一刻。我们已经在 AI 上投资了十多年…

【LeetCode 101】对称二叉树

1. 题目 2. 分析 这道题比较经典。我又一次做错了,这次是花了20min都没有做出来。 最开始我的思想就是,递归比较左根节点的左子树和右根节点的右子树是否对称即可,然后觉得能解决问题了,便动手coding。哪知道,又碰到了…

23.Labview中的数值类型讨论 ---- 位(bit)、字节(byte)、I8、U8、单双精度、复数

hello,大家好,本篇向大家介绍一个最常用但最容易让人忽略和最容易犯错的知识:数值。 “数值” 这个概念在Labview中被涉及的还是很多的,几乎任何一个程序都无可避免的会用到,但我相信大家绝大多数人对数值这个概念应用…

CentOS8安装opensips 3.5

环境:阿里云 操作系统CentOS8.5 依赖包安装: libmicrohttpd cd /usr/local/src wget https://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-latest.tar.gz tar vzxf libmicrohttpd-latest.tar.gz cd libmicrohttpd-1.0.1/./configure make make …