• docker redis4.0 集群(cluster)搭建


    前言

     redis集群对于很多人来说非常熟悉,在前些日子,我也有一位大兄弟也发布过一篇关于在阿里云(centOS7)上搭建redis 集群的文章,虽然集群搭建的文章在网上很多,我比较喜欢这篇文章的地方是他在搭建过程中,指出一些我们会遇到而别人没有指出的问题。

       在这里,我同样带给大家一遍关于阿里云(centOS7)redis集群搭建的文章,但是这次搭建有所不同的是,它是在docker上搭建的redis集群。

    准备工具

       一、安装docker(来自官网

       1、安装所需的软件包

    $ sudo yum install -y yum-utils 
      device-mapper-persistent-data 
      lvm2

       2、使用以下命令来设置稳定的存储库。

    $ sudo yum-config-manager 
        --add-repo 
        https://download.docker.com/linux/centos/docker-ce.repo

       3、安装docker ce(docker社区版)

    $ sudo yum install docker-ce

       4、启动docker

    $ sudo systemctl start docker

       二、在docker库获取redis镜像(截至2017-12-28,最新版为4.0.6)

    $ docker pull redis

       三、在docker库获取ruby镜像

    $ docker pull ruby

    至此,docker上redis cluster所有工具准备完毕,我们在命令行上输入docker images,就可以查看到已经安装的镜像(注:mysql和nginx是无关本教程的)

    搭建

     一、创建redis容器

      1、创建redis配置文件(redis-cluster.tmpl)

      我在路径/home下创建一个文件夹redis-cluster,在路径/home/redis-cluster下创建一个文件redis-cluster.tmpl,并把以下内容复制过去。(注:路径可自定义,我用的是/home/redis-cluster)

    复制代码
    port ${PORT}
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 5000
    cluster-announce-ip 39.10X.XX.XX //自己服务器IP
    cluster-announce-port ${PORT}
    cluster-announce-bus-port 1${PORT}
    appendonly yes
    复制代码

      通过命令,可查看

    $ cat /home/redis-cluster/redis-cluster.tmpl

      2、创建自定义network

    $ docker network create redis-net

      3、在/home/redis-cluster下生成conf和data目标,并生成配置信息

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

     共生成6个文件夹,从7000到7005,每个文件夹下包含data和conf文件夹,同时conf里面有redis.conf配置文件

      4、创建6个redis容器

    复制代码
    $ for port in `seq 7000 7005`; do 
      docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} 
      -v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf 
      -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
    复制代码

     至此,通过命令docker ps可查看刚刚生成的6个容器信息

     二、集群

      通过启动ruby来实现集群

    复制代码
    $ 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 7000 7005`; do 
        echo -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port} ' ' ; 
      done)"
    复制代码

    输入命令后,可以得到下面的信息说明集群成功了

    注意点

      1、注意redis配置信息的路径

       2、以上的代码都是centOS命令行上输入的

       3、阿里云上要添加安全组,除了7000-7005端口,还要开放17000-17005端口

  • 相关阅读:
    洛谷P1330 封锁阳光大学
    洛谷P1341 无序字母对
    Bzoj1059 [ZJOI2007]矩阵游戏
    POJ2337 Catenyms
    Bzoj2342 [Shoi2011]双倍回文
    Bzoj1009 [HNOI2008]GT考试
    Bzoj3670 [Noi2014]动物园
    POJ2406 Power Strings
    POJ 2752 Seek the Name, Seek the Fame
    POJ3522 Slim Span
  • 原文地址:https://www.cnblogs.com/stupidMartian/p/9238129.html
Copyright © 2020-2023  润新知