前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker搭建redis集群-主从复制以及哨兵模式

Docker搭建redis集群-主从复制以及哨兵模式

作者头像
猿码优创
发布2019-07-27 20:07:10
2.4K0
发布2019-07-27 20:07:10
举报
文章被收录于专栏:猿码优创猿码优创

今天给大家分享一下docker搭建Redis集群-主从复制 以及哨兵模式。

本来想给大家搭建伪集群的,想了想还是给大家搭建真实的集群吧。这样更容易大家学习。

But但是我的电脑是双4G的一定会很卡的。忍了,只要大家能从中学到东西。这样就是值得的。

file
file

一、安装redis集群主从复制:

直接上操作步骤:

1、打开三台虚拟主机(不会安装Centos7的请移步“安装centos7及连接” 文章),并且用xsheel连接上root用户

第一台ip:192.168.241.138

file
file

第二台ip:192.168.241.139

file
file

第三台ip:192.168.241.140

file
file

2、连接成功

file
file

3、三台主机安装dokcer并启动docker(详细安装步骤请移步"Docker安装以及HelloWorld"文章)

4、三台主机拉取redis镜像

代码语言:javascript
复制
拉取命令:docker pull redis
file
file

4.1检测三台主机是否拉去成功:

第一台ip:192.168.241.138

file
file

第二台ip:192.168.241.139

file
file

第三台ip:192.168.241.140

file
file
代码语言:javascript
复制
查询所有命令:docker images

查询redis镜像:docker images |grep redis

5、三台主机创建存放redis.conf文件目录并拉去redis.conf配置文件:

file
file
代码语言:javascript
复制
创建目录:略 可以存放在任何目录 小优放在了/DATA/yuanmayouchuang/docker/redis/目录下

拉去redis.conf文件命令:wget -c http://download.redis.io/redis-stable/redis.conf

6、启动三台redis:

file
file
代码语言:javascript
复制
启动命令:docker run --name redis -v /DATA/yuanmayouchuang/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf -d -p 6379:6379 -p 26379:26379 redis

参数详解:
 docker:死记硬背。
 run:启动容器固定写法
 --name:自定义启动容器名称
 -v 主机redis.conf 和redis容器做映射
 -d 后台启动
 -p 端口映射 6379是redis端口 26379是哨兵端口
 redis:镜像名称

查看启动结果:

192.168.241.138 主机redis以启动

file
file

192.168.241.139 主机redis以启动

file
file

192.168.241.140 主机redis以启动

file
file

7、进入三台主机redis容器内部。

file
file
代码语言:javascript
复制
  进入容器内部命令:docker exec -it 容器id/容器名称 /bin/bash(固定写法记住就好了)

进入内部可以对单个redis主机进行set值或get值

file
file
代码语言:javascript
复制
  1、进入redis容器 docker exec -it 容器id/容器名称 /bin/bash
  2、输入redis-cli(进入redis客户端)
  3、set name xiaoyouyou(set存值)
  4、get name (get取值)

8、查询三台主机的信息

file
file
代码语言:javascript
复制
  1、进入redis容器 docker exec -it 容器id/容器名称 /bin/bash
  2、输入redis-cli(进入redis客户端)
  3、输入info

我们发现三台都是主节点。

9、然后我们人工给他们挑选一个老大 那就192.168.241.138为老大 192.168.241.139和192.168.241.140为小弟吧。

file
file
代码语言:javascript
复制
   1、进入139和140容器 命令 docker exec -it 容器id/容器名称 /bin/bash
   2、输入redis-cli(进入redis客户端)
   3、绑定主redis信息:SLAVEOF  主ip    主端口

绑定完成我们看一下三个redis服务器的关系:

140 容器 info查询一下 我们已经发现已经变成了从节点。并且主节点为:138主机

file
file

139容器info查询一下 我们也发现变成了从节点。并且主节点为:138主机

file
file

我们看一下138主机的信息。

file
file

至此redis主从已经搭建完毕

10、测试主从复制

主:192.168.241.138

从:192.168.241.139

从:192.168.241.140

主节点存取数据:

file
file

从节点同步数据:

file
file

从节点同步数据:

file
file

我们发现从节点是没有写入权限的,只有读的权限,这就是读写分离。两读一写

file
file

主可以读写,从只能读。这也是redis集群的特点:读写分离。

我们用客户端连接一下:建议用主节点连接就可以了,因为可以读写。用从节点只能读取数据。

file
file

可以用客户端进行set或get对缓存数据进行crud

file
file

至此我们redis主从复制就搭建完毕了。

二、在redis主从复制基础上搭建redis哨兵模式

1、三台主机 更新redis容器依赖以及安装vim命令

file
file
代码语言:javascript
复制
进入三台redis容器:docker exec -it 容器id/容器名称 /bin/bash(固定写法记住就好了)
更新依赖命令:apt-get
安装vim命令:apt-get install -y vim

2、三台主机创建哨兵配置文件:sentinel.conf(建议在容器根目录,好记)

file
file
代码语言:javascript
复制
1、进入三台redis容器:
2、进入容器根目录
3、创建哨兵配置文件:vim sentinel.conf(三台容器哨兵配置一模一样)
4.输入:
port:26379 #哨兵端口号 一定要和启动命令映射第二个端口号一致
daemonize yes  #后台启动
sentinel monitor mymaster 主节点ip 主节点端口 2

192.168.241.138:最后配置内容为:

file
file

192.168.241.139:最后配置内容为:

file
file

192.168.241.140:最后配置内容为:

file
file

3、启动redis哨兵

三台redis哨兵配置文件,配置完毕后,保存退出。

file
file
代码语言:javascript
复制
依次三台在sentinel.conf 配置文件同一级目录执行:redis-sentinel sentinel.conf

4、查看是否启动哨兵

file
file
代码语言:javascript
复制
三台容器依次安装ps命令:apt-get install procps
依次查看三台容器的是否启动哨兵。

5、测试哨兵模式:

我们把主节点192.168.241.138 redis给关闭

file
file

我们看到139和140主节点都已经是down状态了,redis会在30秒之后重新选举。如果30秒原来主节点活过来。则不进行选举。

file
file

大概30秒已经过去了,我们在看一下从服务器的状态:

file
file

我们发现139现在已经变成了主节点,我们看一下140的状态:

file
file

redis自己选举的139主节点,我们发现也是可以正常写入数据的。

file
file

redis 140容器也是可以正常同步到数据的。

file
file

我们把关闭的那台138 redis给启动。

file
file

我们查询一下新主节点139的信息看是否有两个从节点:

file
file

我们刚刚只启动了redis 并没有启动138 容器redis的哨兵,如果现在现在139主机down掉了就不会重新选举了, 我们需要手动把138主机的哨兵开启,大家也可以写一个自启动脚本。

file
file

至此我们redis集群 主从复制和哨兵模式已经搭建完毕。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档