Docker搭建Redis主从以及哨兵

Redis

直接从docker最新版本,要就要最新的6.x

docker pull reids

下载好了镜像之后,就需要下载配置文件,docker的reids是不带配置文件的

# 这是我自己新建的文件夹地址,这里你们根据自己喜好来
cd /data/reids
wget http://download.redis.io/redis-stable/redis.conf
# 下载好了配置文件后,需要更改一些默认的东西
# 比如: 守护进程进行,端口号,绑定IP,一些日志,持久化文件地址等
# 完成上面的准备工作之后
docker run -p 6379:6379 --name=my-redis -v /data/redis:/usr/local/etc/redis -d redis-server /usr/local/etc/redis/redis.cnf
# 这里我是挂载的文件夹,为什么不挂载文件呢? 这也是我之前遇到的坑,他妈的redis根本就没有文件给我挂载
# 所以我们挂载到对应的文件夹,我的文件夹是有刚才下载的配置文件的,这个你们也注意一下
# 毕竟我走的坑不大但是它多,我就是这样,大问题基本没有,但是全是小问题
# 这 run 的命令哪些 -d -v 什么的就不解释了,如果你不知道,就需要补一补docker了

完成上面的步骤基本就能够运行自己的redis了,不行的话可以评论,我会看评论的

主从

接下来搭建reids主从复制

注意事项:

  • 需要启动至少两台Redis主机
  • 不绑定IP地址(因为需要外界建立连接)bind 127.0.0.1 ::1 注释它或者IP改为 0.0.0.0
  • 不开启保护模式 protected-mode no
  • 可以不开启守护进程,因为是docker -d 自带后台运行 daemonize no
  • 根据需求设置密码

配置文件

redis.cnf=======
    bind 0.0.0.0 ::1
    protected-mode no
    daemonize no

然后根据配置文件启动好后查看一下本机信息,虽然没什么用,但是就是喜欢看一下
在这里插入图片描述

使用 docker inspect 命令查看你容器的IP

这是为了让两个redis之间绑定用的IP

docker inspect --format='{{.NetworkSettings.IPAddress}}'

在这里插入图片描述

使用 redis-cli 连接到redis服务器

redis-cli -h 192.168.18.4 -p 6379
> info replication				# 查看本机信息	
> slaveof 172.17.0.1 6379 		# 虽然已经过时了,但还是向后兼容了这段命令
> replicaof 172.17.0.1 6379		# 5.x之后使用这段命令绑定主机

在这里插入图片描述
然后在主机 info 一下,可以看到和之前的不一样了,多了一个从机 slaves: 1
在这里插入图片描述
使用以上命令绑定主机后,在主机查看本机信息就可以看到有一个从机了,有问题请评论告诉我,欢迎来交流问题

哨兵

哨兵也需要配置文件,依旧到/data/redis目录下载

cd /data/redis
wget http://download.redis.io/redis-stable/sentinel.conf

下载后,更改一下配置文件直接开撸好吧

# 守护进程,用docker的话就no吧,毕竟docker自带 -d 属性,不是的话就yes
daemonize no 
# 修改日志文件存储的路径
logfile "/var/tmp/sentinel.log"

# 修改监控的主redis服务器
# ip填写自己的,别傻啦吧唧写个ip昂,docker的就是容器的IP
# 最后一个2表示,两台机器判定主被动下线后,就进行failover(故障转移)
sentinel monitor mymaster ip 6390 2

#这个事确认你reids是否还活着的阈值
sentinel down-after-milliseconds mymaster 5000
docker run --name sentinel1  
 -v  /home/work/docker_data/redis/sentinel.conf:/usr/local/etc/redis/sentinel.conf 
 -d --net=host 
 redis redis-sentinel /usr/local/etc/redis/sentinel.conf

这个 --net=host 可以解释一下是一种网络模式,用了这个之后就不需要自己端口映射了,他会默认映射端口号,如果需要搭建集群的话,你可以改为 --net-bridge 这个是docker默认的网络模式

docker run --name=t-s4 -p 26380:26379 -v /data/redis/sentinel.conf:/usr/local/etc/redis/sentinel.cnf -d --net=bridge redis:latest redis-sentinel /usr/local/etc/redis/s
entinel.cnf

启动之后还是使用redis-cli连接它
在这里插入图片描述
连接好了之后呢,就可以查看本机信息,info sentinel 可以看到上面显示master1 表示检测到了绑定的主机

有人肯定有疑惑,为什么slaves是0呢,因为我忘记改配置文件了,绑定了我的从机
在这里插入图片描述
ip 175.17.0.2才是我的主机

以上都是我在同一台虚拟机搭建的,有什么问题欢迎评论,我肯定看,别不好意思

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值