Docker Redis5.0 集群搭建


〇、目標

  1.在一台Centos7虛擬機中,以Docker搭建Redis集群(redis版本為5.0.x)。

  2.六個節點,三主三從。

 

〇、准備

  1.新建文件夾以放置各個節點的配置文件

    

 

 

  2.編寫各節點的配置文件

    (1)從官網下載配置文件模板:

    使用命令: wget http://download.redis.io/redis-stable/redis.conf -O <文件名> 

    例如  wget http://download.redis.io/redis-stable/redis.conf -O ./7001/redis7001.conf 

 

 

 

     (2)修改如下:

#bind 127.0.0.1              #注釋掉
port 700*              #6份配置文件,從7001到7006
appendonly yes               #允許持久化
cluster-enable yes             #開啟集群
cluster-config-file nodes-7001.conf  #存放各節點信息,會自動生成該文件
cluster-node-timeout 15000        #節點失效檢測響應的超時時間

#各節點之間通信所用ip、端口與總線端口
cluster-announce-ip 192.168.22.130   #宿主機ip
cluster-announce-port 700*       #6份配置文件,cong7001到7006
cluster-announce-bus-port 1700*     #6份配置文件,從17001到17006

 

一、創建Redis鏡像

  1.使用外部配置文件在docker中創建redis鏡像

  (其他幾個節點鏡像以同樣方式創建,注意修改名稱與路徑):

# 參數說明:
# --restart always            (docker啟動時,本鏡像也自動啟動)
# --name <容器名>
# --net <模式>               (鏡像的網絡配置,host表示使用本地主機的網絡)
# --privileged <true|false>      (權限,true表示擁有root權限)
# -v <本地配置文件映射容器配置文件> -v <本地文件夾掛載到容器文件夾>
# -d (表示以守護進程方式啟動容器)
# redis redis-server <文件名>     (啟動redis服務並制定配置文件)
# 注意:使用host模式的-p參數沒用,不必指定
docker run --restart always --name redis-cluster-7001 --net host --privileged=true -v /usr/local/docker/redis-cluster/7001/redis7001.conf:/usr/local/docker/redis-cluster/7001/redis7001.conf -v /usr/local/docker/redis-cluster/7001/data:/usr/local/docker/redis-cluster/7001/data -d redis redis-server /usr/local/docker/redis-cluster/7001/redis7001.conf

 

  2.查看鏡像

 

 

三、創建集群

  1.進入其中一個鏡像:

  

 

 

  2.創建集群

#因為網絡配置是host模式,則 <宿主機ip>:<port>  (6個節點)

redis-cli --cluster create 192.168.22.130:7001 192.168.22.130:7002 192.168.22.130:7003 192.168.22.130:7004 192.168.22.130:7005 192.168.22.130:7006 --cluster-replicas 1

 

 

  3.測試

#進入其中一個節點
redis-cli -c -p 7001
#查看集群信息
cluster nodes

 

 

四、注意

  1.ruby

    在Redis5.0.x已經不使用ruby和redis-trib.rb創建集群了

 

  2.創建集群過程中中斷

    再次創建時,會顯示[ERR] Node <ip>:<port> is not empty .......

 

 

    解決方法是刪除鏡像,重新創建鏡像:

#停止鏡像
docker stop <鏡像名或鏡像id>

#刪除鏡像
#docker rm <鏡像名或鏡像id>

#重新創建

  

  3.創建集群時一直waiting......

    原因可能是節點的網絡配置(ip、端口等)出了問題。注意創建鏡像時要使用--net參數,配置文件內的ip、端口要指定好,以及檢查一下防火牆。

 

 

  4.redis鏡像的狀態(status)一直顯示restart

    使用 docker logs <鏡像名或鏡像id> 命令查看出了什么問題

 


免責聲明!

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



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