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}
protected-mode no 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端口


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM