zoukankan      html  css  js  c++  java
  • docker创建Redis集群

      开始工作:

    yum install wegt  ##安装下载工具
    yum install net-tools  ##安装网络工具
    yum install tree  ##安装tree命令(方便查看集群配置文件结构)
    yum -y update ##跟新系统

    安装ruby镜像
    docker pull ruby
    安装Redis镜像
    首先查询Redis镜像  : docker search Redis
    下载最新的Redis : docker pull redis:laster
    创建虚拟网卡
    首先查询虚拟网卡:docker search network

      最后下载虚拟网卡:   docker create networkboot/dhcpd redis-net

      下载成功进行查询 docker network ls

      查看redis-net的虚拟网卡网关IP   

     docker network inspect  redis-net  | grep "Gateway" |  grep --color=auto -P '(d{1,3}.){3}d{1,3}' -o

      创建配置文件模板

    1. mkdir /home/redis-cluster ##在home 目录下创建 集群配置文件加
    2. cd /home/redis-cluster ##在创建目录
    3. vim redis-cluster.tmpl ##编辑模版文件  

            备注:编辑如下  esc+:wq退出
             port ${PORT} ##节点端口
             cluster-enabled yes ##cluster集群模式
             cluster-config-file nodes.conf ##集群配置名
             cluster-node-timeout 5000 ##超时时间
             cluster-announce-ip 172.18.0.1 ##实际为各节点网卡分配ip 先用上网关ip代替
             cluster-announce-port ${PORT} ##节点映射端口
        cluster-announce-bus-port 1${PORT} ##节点总线端
        appendonly yes ##持久化模式

      备注:此模版文件为集群节点通用文件  其中${PORT} 将读取命令行变量  ip则根据网卡分配ip进行替换  以保证节点配置文件除端口以及ip 全部一致。

      创建节点配置文件

          for port in `seq 7010 7015`; do
          mkdir -p ./${port}/conf
          && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf
          && mkdir -p ./${port}/data;
          done

         备注:命令译为 循环7010 - 7015 在当前目录下创建 701*/conf 目录结构     (mkdir -p 递归创建目录)
              设置701*为PORT变量 将当前目录下 模版文件 复制到 701*/conf/redis.conf 文件中
              在当前目录下创建 701*/data 目录结构 


        使用tree查看是否生成

      修改里面的IP, 172.18.0.2 - 172.18.0.7

    使用  cat 701*/conf/redis.conf  查看文件

    
    

      关键一步来了,启动Redis节点容器。

    for port in `seq 7010 7015`; do
    docker run -d -ti -p ${port}:${port} -p 1${port}:1${port}
    --privileged=true -v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf
    --privileged=true -v /home/redis-cluster/${port}/data:/data
    --restart always --name redis-${port} --net redis-net
    --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf;
    done

    备注:命令译为  循环7010 - 7015  运行redis 容器
    docker  run            运行
    -d                          守护进程模式
    --restart always     保持容器启动
    --name redis-710* 容器起名
    --net redis-net    容器使用虚拟网卡
    -p                        指定宿主机器与容器端口映射 701*:701*
    -P                        指定宿主机与容器redis总线端口映射 1701*:1701*
     --privileged=true -v /home/redis-cluster/701*/conf/redis.conf:/usr/local/etc/redis/redis.conf
        付权将宿主701*节点文件挂载到容器/usr/local/etc/redis/redis.conf 文件中
    --privileged=true -v /home/redis-cluster/${port}/data:/data
       付权将宿主701*/data目录挂载到容器/data目录中
    --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf;
       容器根据挂载的配置文件启动 redis服务端

    查看容器:

      查看容器IP分配:docker network inspect redis-net

     

      启动集群:

    echo yes | docker run -i --rm --net redis-net ruby sh -c '
    gem install redis
    && wget http://download.redis.io/redis-stable/src/redis-trib.rb
    && ruby redis-trib.rb create --replicas 1
    '"$(for port in `seq 7010 7015`; do
    echo -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port} ' ' ;
    done)"



     
  • 相关阅读:
    BestCoder Round #67 (div.2) N bulbs(hdu 5600)
    蓝桥杯 基础练习 特殊回文数
    蓝桥杯 基础练习 十进制转十六进制
    蓝桥杯 基础练习 十六进制转十进制
    蓝桥杯 基础练习 十六进制转八进制
    蓝桥杯 入门训练 Fibonacci数列
    Codeforces 600B Queries about less or equal elements(二分查找)
    Codeforces Round #332 (Div. 二) B. Spongebob and Joke
    Codeforces Wilbur and Array
    UVA 10129-Play on Words(欧拉通路)
  • 原文地址:https://www.cnblogs.com/zuokun/p/10579922.html
Copyright © 2011-2022 走看看