zoukankan      html  css  js  c++  java
  • docker之构建redis-cluster集群

    下载和编译redis安装包

    参考:https://www.cnblogs.com/cwp-bg/p/8094914.html

    # 从官方网站下载安装包,注意,当前在哪个目录下执行命令,下载的包将在哪个目录下
    $ wget http://download.redis.io/releases/redis-4.0.6.tar.gz
    # 将下载包解压
    $ tar -zxvf redis-4.0.6.tar.gz
    # 进入解压后的文件夹
    $ cd redis-4.0.6
    # 对文件进行编译,得到可执行的文件和配置文件
    $ sudo make
    

    修改redis.conf

    # 创建一个目录
    mkdir /data
    # 复制一份redis.conf到data目录
    cp redis.conf /data/6380.conf
    vi /data/6380.conf
    
    bind 0.0.0.0 # 绑定ip
    port 6380    # 修改端口
    daemonize no # 前台运行,暴露给docker管理,否则启动容器会失败
    dbfilename dump.rdb # 设置持久化文件
    
    # 设置集群参数
    cluster-enabled yes
    cluster-config-file nodes-6379.conf
    cluster-node-timeout 15000
    

    docker安装redis

    # 查询
    docker search redis
    #拉取镜像,可指定redis的版本,不指定默认最新
    docker pull redis:4.0.6
    # 查看
    docker images
    

    启动容器

    docker run -p 6380:6380  # 指定端口映射
    --net host # 使用host网络模式(一定要这个参数)
    -v /data/6380.conf:/etc/redis/redis.conf  # 挂载配置文件
    --name myredis1 
    -d redis:4.0.6 redis-server /etc/redis/redis.conf # 使用配置文件启动
    
    
    • 同理启动六个
    docker run --net host -v /data/6380.conf:/etc/redis/redis.conf --name myredis1 -d redis:4.0.6 redis-server /etc/redis/redis.conf
    docker run --net host -v /data/6381.conf:/etc/redis/redis.conf --name myredis2 -d redis:4.0.6 redis-server /etc/redis/redis.conf
    docker run --net host -v /data/6382.conf:/etc/redis/redis.conf --name myredis3 -d redis:4.0.6 redis-server /etc/redis/redis.conf
    docker run --net host -v /data/6383.conf:/etc/redis/redis.conf --name myredis4 -d redis:4.0.6 redis-server /etc/redis/redis.conf
    docker run --net host -v /data/6384.conf:/etc/redis/redis.conf --name myredis5 -d redis:4.0.6 redis-server /etc/redis/redis.conf
    docker run --net host -v /data/6385.conf:/etc/redis/redis.conf --name myredis6 -d redis:4.0.6 redis-server /etc/redis/redis.conf
    
    • 查看
    docker exec -i -t myredis1 bash
    redis-cli -p 6380
    
    # 外部访问
    redis-cli -p 6380
    
    • 注意:启动集群模式后,所有的数据只能使用db0,其他的数据库是不可用的。

    创建集群

    • 制作一个集群管理工具镜像
    # vi Dockerfile
    
    FROM ubuntu:16.04
    MAINTAINER cwp "13926902570"
    
    ADD sources.list /etc/apt/sources.list # 更换apt源
    RUN apt-get update
    RUN apt -y install ruby # 安装ruby
    RUN gem install redis
    ADD ./redis-4.0.6.tar.gz /usr/local/ # 将本地下载编译的redis文件添加到容器中,会自动解压缩
    RUN cd /usr/local/
    
    • 创建镜像
    docker build -t redis_trib:v1 /usr/local/
    
    • 注意:保证需要添加的文件和Dockerfile在同一个目录下。

    • 创建一个交互模式的容器

    docker run -it redis_trib:v1 --name myredis_trib /bin/bash
    
    • 获取目前所有的redis容器的ip和端口,由于是host模式启动,主机ip和容器ip一样
    docker inspect myredis1 myredis2 myredis3 myredis4 myredis5 myredis6 | grep IPAdress
    
    • 进入容器创建集群
    cd redis-4.0.6/src/
    redis-trib.rb create ip:port ... ipN:portN
    
    # 查看所有的集群节点
    ./redis-trib.rb info ip:port
    或登录任意节点
    cluster info
    cluster nodes # 最前面就是节点的ID
    
    • 自此我们创建的是3个主节点的集群

    redis-cluster主从模型

    • 注意:在redis-cluster集群环境中,启用了cluster配置的情况下slaveof是不可用的。

    • 为当前的主节点添加从节点

    方法一:

    redis-trib.rb add-node --slave --master-id 主节点id 新节点ip和port 旧的任意主节点 
    

    方法二:

    redis-cli -p 6383
    redis-trib add-node 新节点ip和port 旧的任意主节点
    cluster replicate 主节点ID # 指定当前节点为哪个主节点的从节点
    
    • 自此3主3从的redis集群在docker上创建完毕。
  • 相关阅读:
    javascript中的throttle和debounce
    移动端Click300毫秒点击延迟的来龙去脉(转)
    HTTP Keep-Alive详解[转]
    深入浅出requireJS-1
    判断网站是微信打开的
    2015腾讯和阿里前端实习生面试经
    解决ant design 中 select的option 随页面滚动条滚动的bug
    解决window.close()方法兼容各个浏览器(ie关闭会进行弹框提示是否关闭)
    多维数组遍历添加新属性,以及获取所有key
    Vue 路由解耦与快捷新增
  • 原文地址:https://www.cnblogs.com/cwp-bg/p/9373641.html
Copyright © 2011-2022 走看看