基于Docker实现Redis主从+哨兵搭建的示例实践
作者:熙仪繁华 发布时间:2022-02-17 20:43:14
说明:在一台服务器上搭建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
来源:https://blog.csdn.net/weixin_41672684/article/details/122411917


猜你喜欢
- tail命令也是一个非常常用的文件查看类的命令,今天就为大家介绍下Linux tail命令的用法。更多Linux命令详情请看:Linux命令
- 各位 Google AdSense 发布商您好,如果10月份您选择的付款方式为西联汇款,现在开始您就可以去领取您的西联汇款的收入了!领取西联
- 本文主要讲述如何在CentOS发行版中快速获取准确的服务器时间。通常情况下,如果您用户是将CentOS安装在桌面环境中,那么可以通过GUI的
- Discuz!7.0取消了视频主题,但是您可以发布外部链接视频。下面将详细介绍下如何发布:一、后台设置1)论坛后台 => 界面 =&g
- 1、复制配置文件到本用户环境下,再新建一个.vim文件夹,并创建bundle子文件夹sudo cp /etc/vim/vimrc /home
- WordPress是目前最流行的(截至2009年)的博客平台。它是一款开放源代码,其对谷歌SEO优化比较有利,可以被任何人免费使用。正因为如
- 由phpwind团队与淘宝图片导购联盟合作开发的“图片导购应用”近日正式发布,“图片导购应用”给站长带来了全新的盈利模式,利用“图片导购应用
- 1. 打开vmware,选择centos7.6镜像,开始安装操作系统2. 安装完毕后,关机,点击“编辑虚拟机设置&
- 我们与谷歌机器人的上一次约会棒极了,但网站们还对响应代码感到比较困惑,不知道自己返回的响应代码是否正确。我们的服务器返回了301永久重定向代
- WordPress 3.2 RC2现今发布了,如果你还没有测试过WordPress 3.2,现在是时候了,但如果你不是特别有冒险精神的话,不
- 核心提示: 本文收集了网络上比较常见的和大家比较关心的SEO问题,并附上解决办法1、为什么网站收录在近几天突然下降?答:这个在短时间内是正常
- 11月12日消息,世界著名的搜索引擎服务提供商Google与国内最大的电子商务软件及服务提供商ShopEx正式达成合作伙伴关系,双方将在目前
- SecretSecret 是一种包含少量敏感信息例如密码、令牌或密钥的对象。 这样的信息可能会被放在 Pod 规约中或者镜像中。 使用 Se
- 这几天发现很多中国的网站设计者和推广者有一个很大的误区,就是惜链接如金,很怕从自己的网站链接到其他网站。应该说这种担心是不必要的。在很多情况
- 由于ASP它本身是服务器提供的一贡服务功能,特别是最近由dVBbs的upfile文件出现漏洞以来,其高度的隐蔽性和难查杀性,对网站的安全造成
- 影响版本:DedeCms V 5.3程序介绍:DedeCms 基于PHP+MySQL的技术开发,支持Windows、Linux、Unix等多
- 虚拟机中Ubuntu无法连接网络的有效解决办法:1、Ubuntu网络设置:依次单击【System Settings】-->【Netwo
- 我的Godaddy主机的主域名已经过期一年多了,因为这个并不影响空间的正常使用,也就没有续费。昨晚想看看最近网站蜘蛛爬行情况,却发现Goda
- 阅读上一篇:一个完美网站的101项指标.第四部分.设计网站的安全非常重要,如果您的网站中存在需要授权才能访问的内容,保护好这些内容是您的责任
- 今年新做了个地方网站 喀克网 www.kakew.com现在将我在宣传中的各项开支给大家报一下,或许对大家有帮助:1、设计LOGO 费用10