史上最详细Docker搭建Redis Cluster集群环境 值得收藏 每步都有图,不用担心学不会
之前無(wú)論學(xué)什么東西,總感覺只要會(huì)寫小Demo就完事了。但隨著學(xué)習(xí)的深入,(內(nèi)卷)接觸的越來(lái)越多,集群、JVM、數(shù)據(jù)結(jié)構(gòu)、算法、底層、Liunx 系統(tǒng),任重而道遠(yuǎn)啊。
分享一句很喜歡的話:“八小時(shí)謀生活,八小時(shí)外謀發(fā)展”。
如果你也喜歡,那一起共勉😁😁
SpringBoot整合Redis實(shí)現(xiàn)發(fā)布/訂閱-集群配置
Docker 搭建 Redis Cluster 集群環(huán)境
- 一、環(huán)境
- 二、前期準(zhǔn)備
- 2.1、搜索、拉取redis鏡像
- 2.2、Docker 容器網(wǎng)絡(luò)
- 2.3、編寫配置文件
- 三、啟動(dòng)容器
- 3.1、啟動(dòng)redis容器
- 3.2、創(chuàng)建Redis Cluster集群
- 1、進(jìn)入redis-6379 容器
- 2、創(chuàng)建集群
- 3、查看節(jié)點(diǎn)相關(guān)信息
- 四、測(cè)試
- 4.1、本機(jī)測(cè)試
- 4.2、外網(wǎng)測(cè)試
- 4.3、出錯(cuò)可能會(huì)用到的命令
- 4.4、可能會(huì)出的錯(cuò)
- 五、博主自言
一、環(huán)境
- 阿里云服務(wù)器 CentOS 8
- docker版本為20.10.7
- redis 鏡像 (拉取為默認(rèn)最新鏡像)
大致步驟:😜
二、前期準(zhǔn)備
2.1、搜索、拉取redis鏡像
docker search redis docker pull redis2.2、Docker 容器網(wǎng)絡(luò)
創(chuàng)建虛擬網(wǎng)卡😄
創(chuàng)建虛擬網(wǎng)卡,主要是用于redis-cluster能于外界進(jìn)行網(wǎng)絡(luò)通信,一般常用橋接模式。
docker network create myredis查看Docker 網(wǎng)卡信息
docker network ls3、查看dockerr網(wǎng)絡(luò)詳細(xì)信息
docker network inspect myredis4、補(bǔ)充(刪除網(wǎng)卡信息、幫助命令)
docker network rm myredis #刪除網(wǎng)卡命令 多個(gè)中間 空格隔開 docker network --help #顯示可帶參數(shù)等2.3、編寫配置文件
此處用到了一點(diǎn) 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 服務(wù)器ip地址 cluster-announce-port ${port} cluster-announce-bus-port 1${port} EOF done命令解釋:😊
- port:節(jié)點(diǎn)端口;
- requirepass:設(shè)置密碼,訪問(wèn)時(shí)需要驗(yàn)證
- protected-mode:保護(hù)模式,默認(rèn)值 yes,即開啟。開啟保護(hù)模式以后,需配置 bind ip 或者設(shè)置訪問(wèn)密碼;關(guān)閉保護(hù)模式,外部網(wǎng)絡(luò)可以直接訪問(wèn);
- daemonize:是否以守護(hù)線程的方式啟動(dòng)(后臺(tái)啟動(dòng)),默認(rèn) no;
- appendonly:是否開啟 AOF 持久化模式,默認(rèn) no;
- cluster-enabled:是否開啟集群模式,默認(rèn) no;
- cluster-config-file:集群節(jié)點(diǎn)信息文件;
- cluster-node-timeout:集群節(jié)點(diǎn)連接超時(shí)時(shí)間;
- cluster-announce-ip:集群節(jié)點(diǎn) IP
- 注意: 如果你想要你的redis集群可以供外網(wǎng)訪問(wèn),這里直接填 服務(wù)器的IP 地址即可
- 如若為了安全,只是在服務(wù)器內(nèi)部進(jìn)行訪問(wèn),這里還需要做一些修改。
- cluster-announce-port:集群節(jié)點(diǎn)映射端口;
- cluster-announce-bus-port:集群節(jié)點(diǎn)總線端口。
redis 在官網(wǎng)上有說(shuō)明為什么需要映射兩個(gè)端口 :redis官網(wǎng)
執(zhí)行命令完:
我們通過(guò)tree 命令查看目錄結(jié)構(gòu):(如果沒有 tree 命令先安裝 yum install -y tree)
接下來(lái)就是啟動(dòng)容器拉
三、啟動(dòng)容器
3.1、啟動(dòng)redis容器
因?yàn)橐獑?dòng)六個(gè)容器,一個(gè)一個(gè)去啟動(dòng),肯定是麻煩丫。就再次借助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:后臺(tái)運(yùn)行,容器啟動(dòng)完成后打印容器
-
–privileged:是否讓docker 應(yīng)用容器 獲取宿主機(jī)root權(quán)限(特殊權(quán)限-)
-
-p :端口映射
-
-v:文件掛載
-
–sysctl參數(shù)來(lái)設(shè)置系統(tǒng)參數(shù),通過(guò)這些參數(shù)來(lái)調(diào)整系統(tǒng)性能
-
–restart always:在容器退出時(shí)總是重啟容器
-
–name :給容器取名
-
–net myredis :使用我們創(chuàng)建的虛擬網(wǎng)卡 (想詳細(xì)了解,可以去看看Docker 網(wǎng)絡(luò)方面知識(shí))
執(zhí)行完成:
亦可使用docker ps -a 查看運(yùn)行中容器。
可以看到已全部啟動(dòng)成功。
👨?🔧
3.2、創(chuàng)建Redis Cluster集群
可隨意選擇一個(gè)節(jié)點(diǎn)進(jìn)入,創(chuàng)建Redis集群。
1、進(jìn)入redis-6379 容器
docker exec -it redis-6379 /bin/bash2、創(chuàng)建集群
redis-cli -a 之前設(shè)置的密碼 --cluster create 配置文件中的IP地址:6379 IP地址:6380 IP地址:6381 IP地址:6382 IP地址:6383 IP地址:6384 --cluster-replicas 1顯示這樣的畫面就表示已經(jīng)成功拉。
3、查看節(jié)點(diǎn)相關(guān)信息
進(jìn)入容器后,通過(guò)redis-cli -c -a 1234,進(jìn)入redis。👼
輸入cluster info 查看集群信息
也可輸入cluster nodes 查看所有節(jié)點(diǎn)相關(guān)信息
👨?💻下一步就是進(jìn)入測(cè)試階段拉。😀
四、測(cè)試
4.1、本機(jī)測(cè)試
我們?cè)?6381中 set 進(jìn)去,同時(shí)在 6379 中能夠取出來(lái),這代表我們已經(jīng)成功拉😁
4.2、外網(wǎng)測(cè)試
進(jìn)入windows中 你redis下載的目錄中,進(jìn)入cmd。
測(cè)試說(shuō)明 我們已經(jīng)可以連接拉。
那么我們就開啟兩個(gè)cmd 窗口,用不一樣的端口進(jìn)入。
到此,可以證明我們的集群是已經(jīng)搭建成功拉。
4.3、出錯(cuò)可能會(huì)用到的命令
批量停止容器
for port in $(seq 6379 6384); do docker stop redis-${port} done批量刪除容器
for port in $(seq 6379 6384); do docker rm redis-${port} done4.4、可能會(huì)出的錯(cuò)
注: 如果是阿里云或者騰訊云上的服務(wù)器 ,要記得打開安全組規(guī)則, 6379~6384和16379 ~16384都要打開。
如果是虛擬機(jī)上,可能牽扯到防火墻,這個(gè)得注意一下。
五、博主自言
👩?💻
如若存在錯(cuò)誤,歡迎大家不嗇賜教!!!
如若存在疑惑或執(zhí)行錯(cuò)誤,請(qǐng)大家評(píng)論或私信,定會(huì)第一時(shí)間回復(fù)。
一起繼續(xù)努力,或者啊,咱們一起🛌 ?。
總結(jié)
以上是生活随笔為你收集整理的史上最详细Docker搭建Redis Cluster集群环境 值得收藏 每步都有图,不用担心学不会的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SpringBoot整合Security
- 下一篇: SpringBoot 整合 Redis