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主从搭建和哨兵模式都已经配置好了

相关推荐
学Linux的语莫10 小时前
docker,docker-compose二进制包安装
docker
_oP_i12 小时前
Docker 整体架构
docker·容器·架构
杨浦老苏12 小时前
可视化服务构建器Dock-Dploy
docker·工具·群晖
落世繁华12 小时前
DIFY合同生成全流程开发实践(三、后端接口以及优化方向)
docker·一键部署·dify·合同生成·文字转word
嘻哈baby13 小时前
Redis高可用部署与集群管理实战
数据库·redis·bootstrap
ascarl201013 小时前
Kubernetes 环境 NFS 卡死问题排查与解决纪要
云原生·容器·kubernetes
Java爱好狂.15 小时前
Java面试Redis核心知识点整理!
java·数据库·redis·分布式锁·java面试·后端开发·java八股文
阿杆16 小时前
如何在 Spring Boot 中接入 Amazon ElastiCache
java·数据库·redis
m0_5695310116 小时前
《K8s 网络入门到进阶:Service 与 Ingress 原理、部署方案及核心区别对比》
网络·容器·kubernetes
wxjlkh16 小时前
docker 搭建 grafana+prometheus 监控主机资源之node_exporter
docker·grafana·prometheus