Redis哨兵模式集群安装部署(docker版)

本文详细介绍了如何在Docker环境下搭建Redis的主从复制和哨兵(Sentinel)集群,包括配置、启动、测试主从数据同步以及哨兵的故障切换功能。在遇到错误如NOAUTH、master_link_status:down和Sentinel权限问题时,提供了相应的解决方案。通过这种方式,可以实现高可用性和数据安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

Redis集群Docker版本安装部署测试:
1、主从集群搭建
2、sentinel集群搭建
3、故障转移测试


一、Redis三种集群介绍

具体可以参考:

1、Redis集群搭建的三种方式
2、 集群的三种模式

二、Redis主从部署

1.安装

1、获取安装文件:

$ docker pull redis:6.2.4
$ mkdir -p /usr/local/redis
$ cd /usr/local/redis
# 拉去redis.conf文件命令:
$ wget -c http://download.redis.io/redis-stable/redis.conf
# 启动:--privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限

2、创建配置文件:

  • master:172.22.1.68
$ vim /usr/local/redis/redis.conf

bind 0.0.0.0
port 6379
daemonize yes
logfile "/data/logs/redis.log"
masterauth zlwy@redis
requirepass zlwy@redis
appendonly yes
cluster-enabled yes
  • slave-1:172.22.1.88
$ vim /usr/local/redis/redis.conf

bind 0.0.0.0
port 6379
daemonize yes
logfile "/data/logs/redis.log"
replicaof 172.22.1.68 6379
masterauth zlwy@redis
requirepass zlwy@redis
appendonly yes
cluster-enabled yes
  • slave-2:172.22.1.94
$ vim /usr/local/redis/redis.conf

bind 0.0.0.0
port 6379
daemonize yes
logfile "/data/logs/redis.log"
replicaof 172.22.1.68 6379
masterauth zlwy@redis
requirepass zlwy@redis
appendonly yes
cluster-enabled yes

2.运行启动

运行启动 :

# 1、启动
$ docker run -p 6379:6379 -p 26379:26379  --privileged=true --name redis-6.2.4 -v $PWD/redis.conf:/etc/redis/redis.conf -v $PWD/data:/data -d --restart=always redis:6.2.4

#2、直接连接到redis容器中,直接上命令:

#先查询到myredis容器的ip地址。
$docker inspect redis-6.2.4 | grep IP

3.登录容器、测试客户端

测试配置:

# 进入容器
$ docker exec -it redis-6.2.4  bash
# 进入redis客户端
$ redis-cli -a "zlwy@redis"
# 认证(如果有密码)
127.0.0.1:6379> auth "zlwy@redis"
# 存值
127.0.0.1:6379> set name sanduo
# 取值
127.0.0.1:6379> get name

# 查询三台主机的信息
127.0.0.1:6379> info

4.配置主从测试

1、选择任意一台作为master(此处选择172.22.1.68):

# 选择172.22.1.68 为master(可任意)

# 在  172.22.1.88、 172.22.1.94 上执行(SLAVEOF(<5.x)/replicaof(>5.x))
127.0.0.1:6379> SLAVEOF  172.22.1.68 6379

127.0.0.1:6379> replicaof  172.22.1.68 6379

2、redis.conf 配置密码不生效,手动配置:

127.0.0.1:6379> config set masterauth zlwy@redis
127.0.0.1:6379> config set requirepass zlwy@redis

# 测试看信息(三台)
127.0.0.1:6379> info

# 查看master副本(172.22.1.68)
127.0.0.1:6379> info  replication

在这里插入图片描述

5.测试主从数据同步

第三步 : 配置主从 测试

三、哨兵(Sentinel)安装部署

前置条件:主从复制经过测试OK:

1.docker容器获取安装基础命令

Vim命令安装:

# 进入容器
$ docker exec -it redis-6.2.4  bash
# 进入redis客户端
$ redis-cli -a "zlwy@redis"
# 更新依赖命令:apt-get :安装vim命令:apt-get install -y vim
$ apt-get update
$ apt-get install -y vim

ps命令安装:

# 安装ps命令(三台容器依次安装ps命令)
$ apt-get install procps

2.配置sentinel.conf

sentinel.conf 配置如下:

# 创建配置文件 sentinel.conf
# 进入容器 1、进入三台redis容器:
$ docker exec -it redis-6.2.4  bash
#  2、进入容器根目录
$ cd /

#  3、创建哨兵配置文件:vim sentinel.conf(三台容器哨兵配置一模一样)
$ vim sentinel.conf

port 26379 #哨兵端口号 一定要和启动命令映射第二个端口号一致
daemonize yes  #后台启动
# 2为法定人数限制(quorum) 即3/2=1.5,取值为2
sentinel monitor mymaster 172.22.1.68 6379 2
#mymaster集群中master的密码,注意此行要在上面行的下面
sentinel auth-pass mymaster "zlwy@redis"

3.运行启动

启动查看进程:

# 启动 依次三台在sentinel.conf 配置文件同一级目录执行:
$ cd /
$  redis-sentinel sentinel.conf
# 查看 进程
$ ps -ef  

在这里插入图片描述

4.测试哨兵故障切换

测试故障切换:

# 停止172.22.1.68
$ docker stop redis-6.2.4
# 登录查看 172.22.1.88 ,172.22.1.94
$ docker exec -it redis-6.2.4  bash
$ redis-cli -a "zlwy@redis"
# 依次查看  172.22.1.88、172.22.1.94 切换
127.0.0.1:6379> info  replication

5.手动提升slave服务器为master

# 在需要提升的从服务器上执行slaveof no one (比如 172.22.1.88)
127.0.0.1:6379> slaveof no one 

# 切换主机 (比如 172.22.1.94)

127.0.0.1:6379> replicaof  172.22.1.68 6379

6.查看各节点上哨兵信息

$ redis-cli -a "zlwy@redis" -p 26379

127.0.0.1:26379> info sentinel

sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=172.22.1.68:6379,slaves=2,sentinels=4

在这里插入图片描述

三、错误信息汇总

安装碰见的错误信息:

错误1:(error) NOAUTH Authentication required

# 出现认证问题,应该是设置了认证密码,输入密码既可以啦
# 解决方案:
127.0.0.1:6379> auth "zlwy@redis"

错误2:master_link_status:down

检查配置:一般是网络不通或者加密有问题

在这里插入图片描述

错误3:(Sentinel)user default on nopass sanitize-payload ~* &* +@all

无法自动切换主从机

解决方案:修改配置文件sentinel.conf 添加权限密码 如下
# mymaster集群中master的密码,注意此行要在上面行的下面
sentinel auth-pass mymaster "zlwy@redis"

参考

本文参考如下:
1、docker搭建Redis集群-主从复制以及哨兵模式
2、SpringBoot集成Redis哨兵模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值