美文网首页redisMysqldb
Redis集群部署-docker集群

Redis集群部署-docker集群

作者: _str_ | 来源:发表于2019-11-27 19:58 被阅读0次

    集群

    1.Redis 集群的优势

    自动分割数据到不同的节点上。
    整个集群的部分节点失败或者不可达的情况下能够继续处理命令。

    特点

    主从复制

    实现了高可用

    数据分片存储

    集群节点的 meet 过程

    image image

    指派槽

    image

    客户端和槽

    image

    3. Redis 集群的安装

    原生命令安装

    步骤

    1. 配置开启集群节点

    2. 配置 meet

    3. 指派槽

    4. 配置主从

    实例操作

    六个容器
    三个主
    三个从
    务必保证一个主有一个从

    架构图
    image

    实验步骤

    安装官方工具

    • 首先使用docker镜像起一个centos镜像 里面已经装有 redis 并且进入

    1. 下载、编译、安装 Ruby

    点我到下载页面

    [root@s1 ~]# wget https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.1.tar.gz
    
    

    安装依赖包

    yum  install  zlib-devel readline openssl-devel gcc  gcc-c++ make
    
    

    点我查看具体安装方法

    $ ./configure
    $ make
    $ sudo make install
    
    

    2. 安装 rubygem redis

    一个 ruby 语言实现的访问 Redis 集群的客户端

    点我到官网下载地址

    cd ..
     wget https://rubygems.org/rubygems/rubygems-3.0.2.tgz
     tar -xf rubygems-3.0.2.tgz
    cd rubygems-3.0.2/
    ruby setup.rb
    
    
    gem install redis
    
    

    3. 安装 redis-trib.rb

    这里的redis是源码安装
    redis-trib 位于 Redis 源码的 src 文件夹中, 它是一个 Ruby 程序, 这个程序通过向实例发送特殊命令来完成创建新集群, 检查集群, 或者对集群进行重新分片(reshared)等工作。

    cp   ~/redis-4.0.10/src/redis-trib.rb   /usr/local/bin/
    
    如果是使用yum安装的redis的话 下面可能帮到你

    点击到github下载redis-trib.rb

    image.png image.png

    放到和之前源码一样的位置即可

    编辑集群配置文件

    vi /etc/redis-cluster.conf
    
    bind 0.0.0.0
    port 7001  ---容器的话就不需要修改端口
    daemonize yes    --- 后台启动
    
    # 允许任何地址不使用密码访问我
    protected-mode yes
    dir "/redis/data/"
    logfile  "cluster-7001.log"
    dbfilename "cluster-dump-7001.log"
    cluster-enabled yes
    cluster-config-file redis-cluster.conf
    
    # 不需要集群的全部节点完好才提供服务
    cluster-require-full-coverage no
    

    然后就可以启动服务了

    redis-server /etc/redis-cluster.conf
    
    image.png

    最后把这个部署好的容器进行commit成本地镜像

    docker commit 容器名/容器id  redis-cluster
    

    接下来我们就可使用docker-compose来进行集群启动

    version: "3.2"
    services: 
       redis-clu-m1:
          image: redis-ruby:latest
          container_name: redis-clu-m1
          expose:
            - "6379"
          networks:
            - cmdb_jumpserver-test
          tty: true
       redis-clu-m2:
          image: redis-ruby:latest
          container_name: redis-clu-m2
          expose:
            - "6379"
          networks:
            - cmdb_jumpserver-test
          tty: true
       redis-clu-m3:
          image: redis-ruby:latest
          container_name: redis-clu-m3
          expose:
            - "6379"
          networks:
            - cmdb_jumpserver-test
          tty: true
       redis-clu-s1:
          image: redis-ruby:latest
          container_name: redis-clu-s1
          expose:
            - "6379"
          networks:
            - cmdb_jumpserver-test
          tty: true
       redis-clu-s2:
          image: redis-ruby:latest
          container_name: redis-clu-s2
          expose:
            - "6379"
          networks:
            - cmdb_jumpserver-test
          tty: true
       redis-clu-s3:
          image: redis-ruby:latest
          container_name: redis-clu-s3
          expose:
            - "6379"
          networks:
            - cmdb_jumpserver-test
          tty: true
    networks:
       cmdb_jumpserver-test:
         external:
           name: cmdb_jumpserver-test
    
    

    注意:这里使用同一个网络便于容器之间通信,镜像不加标签默认是latest,最后的网络external代表着使用额外的网络名 tty:true让这个几个容器在启动后将这个终端给占住,不然会异常退出

    这样在启动完docker-compose后我们就可以进入到容器中让每个redis-server启动

    docker-compose exec  redis-clu-m2 redis-server /etc/redis-cluster.conf
    依次执行 只需要换个服务名即可
    

    选择一个服务器容器来进行集群部署 这里我们选择的是redis-clu-m1来部署

    redis-trib.rb  create  --replicas  1  主节点1的IP:端口    主节点2的IP:端口    主节点3的IP:端口   从节点1的IP:端口    从节点2的IP:端口    从节点3的IP:端口  
    依次将主从写到后面 待会会一一对应
    注意这儿不能使用容器名 不解析  需要提前将各个容器的ip地址给找出来
    

    在redis-clu-m1中执行的命令

    [root@3604a0ecd95c /]# redis-trib.rb create --replicas 1 172.29.0.6:6379 172.29.0.7:6379 172.29.0.4:6379 172.29.0.5:6379 172.29.0.3:6379 172.29.0.2:6379
    -因为docker-compose是随机启动的 所以这里面的ip地址不会按顺序
    

    下面是执行的结果展示

    集群配置 成功后的标志 检查节点信息
    在那个服务器上都可以查到,在任意服务器上能查任意的节点

    相关文章

      网友评论

        本文标题:Redis集群部署-docker集群

        本文链接:https://www.haomeiwen.com/subject/gheywctx.html