騰訊雲輕量服務器通過Docker搭建外網可訪問連接的redis5.x集群


總結記錄/朱季謙

最近買了一台4核16的騰訊雲輕量應用服務器,花了我快四百的大洋,打算搭建一堆docker組件集群,最先開始是通過docker搭建redis集群,計划使用三個端口,分別是7001,7002,7003。

騰訊雲服務器有防火牆限制,故而需要在控制面板的防火牆開放這六個端口——

image
注意,為什么開放了7001,7002,7003,還需要開放它們對應的總線端口17001,17002,17003呢?因為這是它們集群心跳連接的端口,若不開放,將在對各啟動容器節點創建集群時,會創建集群分配槽時失敗。

完成這一步后,就可以開始通過docker拉取redis的鏡像了,這里拉取的是redis:5.0.5版本——

docker pull redis:5.0.5

創建redis-template.conf模板,將根據該模板自動生成各節點對應的redis.conf文件——

mkdir /app/redis && cd /app/redis && mkdir redis-cluster && cd ./redis-cluster && touch redis-template.conf

接着,修改redis-template.conf模板文件內容,直接使用vi redis-template.conf指令——

image
輸入以下內容即可——

#節點端口
port ${PORT}
#設置為集群節點
cluster-enabled yes
#外網連接必須設置為 no
protected-mode no
#集群節點文件
cluster-config-file nodes.conf
cluster-node-timeout 5000
#改成你的外網ip,假設,我的騰訊雲服務器外網ip是14.253.73.xx
cluster-announce-ip 14.253.73.xx
#外網端口
cluster-announce-port ${PORT}
#總線端口
cluster-announce-bus-port 1${PORT}

appendonly yes

docker中創建一個redis集群專用的網絡redis-net供集群使用

docker network create redis-net

進入到存放redis-template.conf模板文件的目錄下——

cd /app/redis/redis-cluster/

直接在命令行中復制以下指令,然后回車執行——

for port in `seq 7001 7003`; do 
  mkdir -p ./${port}/conf && PORT=${port} envsubst < ./redis-template.conf > ./${port}/conf/redis.conf && mkdir -p ./${port}/data;
done

執行完后,通過指令ll查看,發現自動生成了7001~7003的目錄——
image
接着,直接復制以下指令——

for port in `seq 7001 7003`; do 
  docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} -v /app/redis/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /app/redis/redis-cluster/${port}/data:/data  --restart always --name redis-${port} --net redis-net --sysctl net.core.somaxconn=1024 redis:5.0.5 redis-server /usr/local/etc/redis/redis.conf; 
done

回車后,即可自動啟動docker容器實例——
image
正常啟動成功話,通過docker ps -a指令查看,顯示以下信息——

image
這時候,我們只需要進入到其中一個docker容器的redis中,將各節點組成集群,這里進入到redis-7001容器中——

docker exec -it redis-7001 /bin/bash

接着執行以下指令即可——

redis-cli --cluster create 外網ip:7001 外網ip:7002 外網ip:7003  --cluster-replicas 0

注意:后續若改成三主三從時,這里的集群指令為——

redis-cli --cluster create 外網ip:7001 外網ip:7002 外網ip:7003 外網ip:7004 外網ip:7005 外網ip:7006 --cluster-replicas 1

當出現以下請求時,直接填寫 yes 即可——

Can I set the above configuration? (type 'yes' to accept): yes

最后啟動成功后,會出現以下信息——

image
這時,我們可以測試一下,通過指令 redis-cli -c -h 外網IP -p 7001連接到集群節點上,正常連接上去后,再通過指令cluster info查看集群狀態,顯示ok說明集群正常,這時還可以通過cluster nodes查看各節點具體槽分配信息——
image
到這一步,通過springboot+redis即可連接到騰訊雲服務器上docker部署的redis集群了,我測試驗證可行——
image

參考文章:https://blog.csdn.net/weixin_44015043/article/details/105868513


免責聲明!

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



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