基于Docker实现Redis主从+哨兵搭建的示例实践

作者:熙仪繁华 时间:2022-02-17 20:43:14 

说明:在一台服务器上搭建redis一主二从三哨兵

1.拉取镜像

docker pull redis:4

基于Docker实现Redis主从+哨兵搭建的示例实践

2. 编写主 从配置文件

2.1 创建/home/redis/redis_conf目录:

基于Docker实现Redis主从+哨兵搭建的示例实践

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。表明从节点没有连接到主节点。

基于Docker实现Redis主从+哨兵搭建的示例实践

 查看日志:

1:S 18 Jan 04:20:32.954 # Error condition on socket for SYNC: Connection refused

解决:

原因分析:可能是由于host没有配置主机的默认ip

基于Docker实现Redis主从+哨兵搭建的示例实践

修改后重新启动:一主二从

基于Docker实现Redis主从+哨兵搭建的示例实践

基于Docker实现Redis主从+哨兵搭建的示例实践

基于Docker实现Redis主从+哨兵搭建的示例实践

6、分别启动每个  docker容器里面的哨兵

6.1进入主节点容器

首先进入容器。 docker exec -it redis-master bash

6.2查看文件

用 ls 命令,我们就可以看淡到 sentinel.conf 文件,这个配置文件我们就会用来启动 redis 的哨兵。 ls

基于Docker实现Redis主从+哨兵搭建的示例实践

6.3启动主哨兵服务

redis-sentinel sentinel.conf 

基于Docker实现Redis主从+哨兵搭建的示例实践

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

基于Docker实现Redis主从+哨兵搭建的示例实践

6.7退出哨兵

exit

6.8退出容器

exit

来源:https://blog.csdn.net/weixin_41672684/article/details/122411917

标签:Docker,Redis,主从,哨兵
0
投稿

猜你喜欢

  • 什么样的网站放Google AdSense最理想

    2007-10-12 19:09:00
  • 匿名FTP服务器的建立与应用

    2007-03-27 16:16:00
  • 提高内容类网站粘度的常见方法

    2009-07-16 16:12:00
  • Linux工具之Nethogs按进程监控网络带宽的安装部署

    2023-09-02 00:34:03
  • Solaris 架设FTP虚拟系统

    2009-12-22 18:54:00
  • Web内容安全过滤设备应注重多层次管理功能

    2008-11-12 17:13:00
  • Apache服务器配置全攻略(三)

    2008-01-13 22:30:00
  • QICMS商家联盟网站系统v1.0免费版正式发布

    2009-09-28 15:58:00
  • 关于Apache默认编码错误 导致网站乱码的解决方案

    2023-07-29 21:19:24
  • 让DNS服务器支持泛域名解析

    2009-01-22 16:00:00
  • 如何在论坛增加外链和论坛软文写作技巧

    2009-07-11 23:49:00
  • 如何建立安全的ProFTPD应用经验谈

    2009-12-23 19:21:00
  • 网页内容 针对用户和搜索引擎的不同要求

    2008-12-02 11:07:00
  • 广告联盟中什么关键字最贵?

    2008-06-03 13:01:00
  • 影响搜索引擎优化效果的四十九个内部因素

    2008-12-12 12:01:00
  • 我的E-Mail服务器为什么变慢了

    2007-03-29 11:35:00
  • 菜鸟学Linux命令:ssh命令(远程登录)

    2022-06-09 13:25:05
  • Discuz! X2调用活动主题并过滤内容中的图片

    2011-11-21 16:58:37
  • WordPress 将选中文字转发到微博

    2011-11-03 17:29:33
  • 构建反病毒反垃圾邮件系统(三)

    2007-09-27 13:43:00
  • asp之家 网站运营 m.aspxhome.com