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

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

 

file

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

直接上操作步骤:

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

第一台ip:192.168.241.138

file

第二台ip:192.168.241.139

file

第三台ip:192.168.241.140

file

2、连接成功

file

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

4、三台主机拉取redis镜像

拉取命令:docker pull redis

file

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

第一台ip:192.168.241.138

file

第二台ip:192.168.241.139

file

第三台ip:192.168.241.140

file

查询所有命令:docker images

查询redis镜像:docker images |grep redis

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

file

创建目录:略 可以存放在任何目录 小优放在了/DATA/yuanmayouchuang/docker/redis/目录下

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

6、启动三台redis:

file

启动命令: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

192.168.241.139 主机redis以启动

file

192.168.241.140 主机redis以启动

file

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

file

  进入容器内部命令:docker exec -it 容器id/容器名称 /bin/bash(固定写法记住就好了)

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

file

  1、进入redis容器 docker exec -it 容器id/容器名称 /bin/bash
  2、输入redis-cli(进入redis客户端)
  3、set name xiaoyouyou(set存值)
  4、get name (get取值)

8、查询三台主机的信息

file

  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

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

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

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

file

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

file

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

file

至此redis主从已经搭建完毕

10、测试主从复制

主:192.168.241.138

从:192.168.241.139

从:192.168.241.140

主节点存取数据:

file

从节点同步数据:

file

从节点同步数据:

file

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

file

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

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

file

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

file

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

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

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

file

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

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

file

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

192.168.241.138:最后配置内容为:

file

192.168.241.139:最后配置内容为:

file

192.168.241.140:最后配置内容为:

file

3、启动redis哨兵

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

file

依次三台在sentinel.conf 配置文件同一级目录执行:redis-sentinel sentinel.conf

4、查看是否启动哨兵

file

三台容器依次安装ps命令:apt-get install procps
依次查看三台容器的是否启动哨兵。

5、测试哨兵模式:

我们把主节点192.168.241.138 redis给关闭

file

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

file

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

file

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

file

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

file

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

file

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

file

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

file

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

file

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

终、、


以上就是docker搭建redis集群-主从复制以及哨兵模式 感觉是不是超简单! 有什么问题可以联系我哈。

鼓励作者写出更好的技术文档,就请我喝一瓶哇哈哈哈哈哈哈哈。。你们的赞助决定我更新的速度哦!

微信:

支付宝:


感谢一路支持我的人。。。。。

Love me and hold me
QQ:69673804(16年老号)
EMAIL:itw@tom.com
友链交换
如果有兴趣和本博客交换友链的话,请按照下面的格式在评论区进行评论,我会尽快添加上你的链接。

网站名称:猿码优创
网站地址:http://blog.cnbuilder.cn
网站描述:年少是你未醒的梦话,风华是燃烬的彼岸花。
网站Logo/头像: [头像地址](https://blog.cnbuilder.cn/upload/2018/7/avatar20180720144536200.jpg)

欢迎关注猿码优创(联系小优优进内部群哦,新鲜技术优先更新):

file

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐