以下為當初練習的筆記
測試環境:
- CentOS 7
- Docker version 18.03.1-ce, build 9ee9f40
- Redis server v=4.0.9
建立 Redis-Cluster
-
前置套件
- docker
-
建立步驟
-
建立Redis資料夾
mkdir redis
-
第一次先開啟防火牆(開啟7001~7006 & 17001~17006 防火牆)
seq 1 6 | xargs -i -t sudo bash -c "sudo firewall-cmd --add-port=700{}/tcp --permanent && sudo firewall-cmd --add-port=1700{}/tcp --permanent" sudo firewall-cmd --reload
-
進入建立好的目錄
cd redis
-
建立Redis-Cluster資料夾,編寫 redis 設定檔(內容中的
192.168.188.XX
請修改為自己的IP)# 建立資料夾 seq 1 6 | xargs -i sudo mkdir -p $PWD/700{}/data/logs # 編寫 redis 設定檔 seq 1 6 | xargs -i -t sudo bash -c "\ printf \"port 700{}\n\ cluster-enabled yes\n\ cluster-config-file nodes.conf\n\ cluster-node-timeout 5000\n\ cluster-announce-ip 192.168.188.XX\n\ cluster-announce-port 700{}\n\ cluster-announce-bus-port 1700{}\n\ appendonly yes\n\ logfile /data/logs/redis.log\" > $PWD/700{}/redis.conf"
-
建立
redis.sh
vi redis.sh
-
建立redis.sh內容
#!/usr/bin/env bash # 創建自定義網路(redis-net) [ ! "$(docker network ls | grep redis-net)" ] && docker network create redis-net # 啟動 redis docker container seq 1 6 | xargs -i -t sudo bash -c "sudo docker run -d \ -p 700{}:700{} -p 1700{}:1700{} \ -v $PWD/700{}/redis.conf:/usr/local/etc/redis/redis.conf \ -v $PWD/700{}/data:/data \ --restart always \ --net redis-net \ --name redis-700{} \ --sysctl net.core.somaxconn=1024 \ redis:alpine redis-server /usr/local/etc/redis/redis.conf" sleep 2 # 安裝 redis client + 取得 redis cluster script + 建立 redis cluster 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 7001 7006`; do \ echo -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port} ' ' ; \ done)"
-
設定redis.sh執行權限
chmod 744 redis.sh
-
以上為第一次設定,之後可直接執行bash即可建立redis cluster
./redis.sh
-
-
相關指令
-
start a redis instance
docker run -it --rm redis:alpine sh
-
查詢redis 版本(redis sh)
redis-server --version
-
連接redis(redis sh)
redis-cli -c -h 192.168.188.XX -p 7001
-
清空 redis 資料(redis sh)
redis-cli -c -h 192.168.188.XX -p 7001 flushall
-
查看節點分布訊息(redis sh)
cluster nodes
-
查看slots分布訊息(redis sh)
cluster slots
-
What changed in 4.0?
- cluster-announce-ip: The IP address to announce.
- cluster-announce-port: The data port to announce.
- cluster-announce-bus-port: The cluster bus port to announce.
參考連結
如有錯誤或建議,歡迎留言指教,謝謝!!
(相關內容如有侵犯隱私或著作權,請協助通知刪除,感謝)
沒有留言:
張貼留言