這是我參與8月更文挑戰的第5天,活動詳情查看:8月更文挑戰node
以前不管學什麼東西,總感受只要會寫小Demo就完事了。但隨着學習的深刻,(內卷)接觸的愈來愈多,集羣、JVM、數據結構、算法、底層、Liunx 系統,任重而道遠啊。web
分享一句很喜歡的話:「八小時謀生活,八小時外謀發展」。redis
若是你也喜歡,那一塊兒
共勉
😁😁算法
大體步驟:😜docker
docker search redis
docker pull redis
複製代碼
建立虛擬網卡😄shell
建立虛擬網卡,主要是用於redis-cluster能於外界進行網絡通訊,通常經常使用橋接模式。編程
docker network create myredis
複製代碼
查看Docker 網卡信息windows
docker network ls
複製代碼
三、查看dockerr網絡詳細信息安全
docker network inspect myredis
複製代碼
四、補充(刪除網卡信息、幫助命令)bash
docker network rm myredis #刪除網卡命令 多箇中間 空格隔開
docker network --help #顯示可帶參數等
複製代碼
此處用到了一點 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
)
接下來就是啓動容器拉
由於要啓動六個容器,一個一個去啓動,確定是麻煩丫。就再次藉助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
查看運行中容器。
能夠看到已所有啓動成功。
👨🔧
可隨意選擇一個節點進入,建立Redis集羣。
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
查看全部節點相關信息
👨💻下一步就是進入測試階段拉。😀
咱們在 6381中 set 進去,同時在 6379 中可以取出來,這表明咱們已經成功拉😁
進入windows中 你redis下載的目錄中,進入cmd。
測試說明 咱們已經能夠鏈接拉。
那麼咱們就開啓兩個cmd 窗口,用不同的端口進入。
到此,能夠證實咱們的集羣是已經搭建成功拉。
批量中止容器
for port in $(seq 6379 6384);
do
docker stop redis-${port}
done
複製代碼
批量刪除容器
for port in $(seq 6379 6384);
do
docker rm redis-${port}
done
複製代碼
一直卡在Waiting for the cluster to join ......
注
: 若是是阿里雲或者騰訊雲上的服務器 ,要記得打開安全組規則, 6379~6384和16379 ~16384都要打開。
若是是虛擬機上,可能牽扯到防火牆,這個得注意一下。
👩💻
如若存在錯誤,歡迎你們不嗇賜教!!!
如若存在疑惑或執行錯誤,請你們評論或私信,定會第一時間回覆。
一塊兒繼續努力,或者啊,我們一塊兒🛌 ☺。