Docker 搭建 Redis Cluster集羣 每一步都帶有操做圖、命令!!!

這是我參與8月更文挑戰的第5天,活動詳情查看:8月更文挑戰node

以前不管學什麼東西,總感受只要會寫小Demo就完事了。但隨着學習的深刻,(內卷)接觸的愈來愈多,集羣、JVM、數據結構、算法、底層、Liunx 系統,任重而道遠啊。web

分享一句很喜歡的話:「八小時謀生活,八小時外謀發展」。redis

若是你也喜歡,那一塊兒共勉😁😁算法

1、環境

  • 阿里雲服務器 CentOS 8
  • docker版本爲20.10.7
  • redis 鏡像 (拉取爲默認最新鏡像)

在這裏插入圖片描述

在這裏插入圖片描述

大體步驟:😜docker

  1. 下載Redis鏡像
  2. 編寫Redis配置文件
  3. 啓動Redis 容器
  4. 建立Redis Cluster 集羣。
  5. 進行實際測試

2、前期準備

2.一、搜索、拉取redis鏡像

docker search redis
docker pull redis
複製代碼

在這裏插入圖片描述

在這裏插入圖片描述

2.二、Docker 容器網絡

  1. 建立虛擬網卡😄shell

    建立虛擬網卡,主要是用於redis-cluster能於外界進行網絡通訊,通常經常使用橋接模式。編程

    docker network create myredis 
    複製代碼
  2. 查看Docker 網卡信息windows

    docker network ls
    複製代碼

    在這裏插入圖片描述

三、查看dockerr網絡詳細信息安全

docker network inspect myredis
複製代碼

在這裏插入圖片描述

四、補充(刪除網卡信息、幫助命令)bash

docker network rm myredis #刪除網卡命令 多箇中間 空格隔開
docker network --help #顯示可帶參數等
複製代碼

2.三、編寫配置文件

此處用到了一點 shlle 編程中 的一些命令,讓咱們操做更加便利。😃

for port in $(seq 6379 6384); 
do 
mkdir -p /home/redis/node-${port}/conf
touch /home/redis/node-${port}/conf/redis.conf
cat  << EOF > /home/redis/node-${port}/conf/redis.conf port ${port} requirepass 1234 bind 0.0.0.0 protected-mode no daemonize no appendonly yes cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 cluster-announce-ip 47.113.227.254 cluster-announce-port ${port} cluster-announce-bus-port 1${port} EOF
done
複製代碼

命令解釋:😊

  • port:節點端口;
  • requirepass:設置密碼,訪問時須要驗證
  • protected-mode:保護模式,默認值 yes,即開啓。開啓保護模式之後,需配置 bind ip 或者設置訪問密碼;關閉保護模式,外部網絡能夠直接訪問;
  • daemonize:是否以守護線程的方式啓動(後臺啓動),默認 no;
  • appendonly:是否開啓 AOF 持久化模式,默認 no;
  • cluster-enabled:是否開啓集羣模式,默認 no;
  • cluster-config-file:集羣節點信息文件;
  • cluster-node-timeout:集羣節點鏈接超時時間;
  • cluster-announce-ip:集羣節點 IP
    • 注意: 若是你想要你的redis集羣能夠供外網訪問,這裏直接填 服務器的IP 地址便可
    • 如若爲了安全,只是在服務器內部進行訪問,這裏還須要作一些修改。
  • cluster-announce-port:集羣節點映射端口;
  • cluster-announce-bus-port:集羣節點總線端口。

redis 在官網上有說明爲何須要映射兩個端口redis官網

在這裏插入圖片描述


執行命令完:

在這裏插入圖片描述

咱們經過tree 命令查看目錄結構:(若是沒有 tree 命令先安裝 yum install -y tree

在這裏插入圖片描述


接下來就是啓動容器拉

3、啓動容器

3.一、啓動redis容器

由於要啓動六個容器,一個一個去啓動,確定是麻煩丫。就再次藉助shell編程的力量。

for port in $(seq 6379 6384); \
do \
   docker run -it -d -p ${port}:${port} -p 1${port}:1${port} \
  --privileged=true -v /home/redis/node-${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
  --privileged=true -v /home/redis/node-${port}/data:/data \
  --restart always --name redis-${port} --net myredis \
  --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf
done
複製代碼

解釋:🤑

  • -it:交互

  • -d:後臺運行,容器啓動完成後打印容器

  • --privileged:是否讓docker 應用容器 獲取宿主機root權限(特殊權限-)

  • -p :端口映射

  • -v:文件掛載

  • --sysctl參數來設置系統參數,經過這些參數來調整系統性能

  • --restart always:在容器退出時老是重啓容器

  • --name :給容器取名

  • --net myredis :使用咱們建立的虛擬網卡 (想詳細瞭解,能夠去看看Docker 網絡方面知識)

執行完成:

在這裏插入圖片描述

亦可以使用docker ps -a 查看運行中容器。

在這裏插入圖片描述

能夠看到已所有啓動成功。

👨‍🔧

3.二、建立Redis Cluster集羣

可隨意選擇一個節點進入,建立Redis集羣。

一、進入redis-6379 容器

docker exec -it redis-6379 /bin/bash
複製代碼

在這裏插入圖片描述

二、建立集羣

redis-cli  -a 以前設置的密碼 --cluster create 配置文件中的IP地址:6379 IP地址:6380 IP地址:6381 IP地址:6382 IP地址:6383 IP地址:6384   --cluster-replicas 1
複製代碼

在這裏插入圖片描述

在這裏插入圖片描述

顯示這樣的畫面就表示已經成功拉。

三、查看節點相關信息

進入容器後,經過redis-cli -c -a 1234,進入redis。👼

在這裏插入圖片描述

輸入cluster info 查看集羣信息

在這裏插入圖片描述

也可輸入cluster nodes 查看全部節點相關信息

在這裏插入圖片描述


👨‍💻下一步就是進入測試階段拉。😀

4、測試

4.一、本機測試

在這裏插入圖片描述

在這裏插入圖片描述

咱們在 6381中 set 進去,同時在 6379 中可以取出來,這表明咱們已經成功拉😁

4.二、外網測試

進入windows中 你redis下載的目錄中,進入cmd。

在這裏插入圖片描述

測試說明 咱們已經能夠鏈接拉。

那麼咱們就開啓兩個cmd 窗口,用不同的端口進入。

在這裏插入圖片描述

在這裏插入圖片描述

到此,能夠證實咱們的集羣是已經搭建成功拉。

4.三、出錯可能會用到的命令

批量中止容器

 for port in $(seq 6379 6384); 
 do 
 docker stop redis-${port}
 done
複製代碼

批量刪除容器

 for port in $(seq 6379 6384); 
 do 
 docker rm redis-${port}
 done
複製代碼

4.四、可能會出的錯

一直卡在Waiting for the cluster to join ......

: 若是是阿里雲或者騰訊雲上的服務器 ,要記得打開安全組規則, 6379~6384和16379 ~16384都要打開。

若是是虛擬機上,可能牽扯到防火牆,這個得注意一下。

5、博主自言

👩‍💻

如若存在錯誤,歡迎你們不嗇賜教!!!

如若存在疑惑或執行錯誤,請你們評論或私信,定會第一時間回覆。

一塊兒繼續努力,或者啊,我們一塊兒🛌 ☺。

相關文章
相關標籤/搜索