zoukankan      html  css  js  c++  java
  • docker搭建Redis集群-主从复制以及哨兵模式

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

    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

  • 相关阅读:
    博客园美化(三)
    博客园美化(二)
    python异常处理
    博客园美化(一)
    STD二手图书交流平台团队博客-用户画像
    STD二手图书交流平台团队博客-电梯演讲
    学习如何运用GitHub网站+出现的问题+Git基本操作总结
    人月神话阅读笔记(二)
    人月神话阅读笔记(一)
    Android studio Handler消息处理1
  • 原文地址:https://www.cnblogs.com/kingyifan/p/11721422.html
Copyright © 2011-2022 走看看