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)"

 



 


免責聲明!

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



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