本文使用鏡像由慕課網的神思者老師提供
本文使用鏡像是已經配置好了的Redis鏡像,
如果需要自定義可修改配置文件或用官方Redis鏡像進行部署
1. 拉取配置好的Redis鏡像
docker pull yyyyttttwwww/redis
2. 創建集羣使用的網段redis_net
docker network create --subnet=172.19.0.0/16 redis_net
3. 修改鏡像的名稱
將鏡像yyyyttttwwww/redis
的名稱修改爲redis
,方便進行使用
docker tag yyyyttttwwww/redis redis
4. 生成6個Redis容器
docker run -it -d --name r1 -p 5001:6379 --net=redis_net--ip 172.19.0.2 redis bash
docker run -it -d --name r2 -p 5002:6379 --net=redis_net--ip 172.19.0.3 redis bash
docker run -it -d --name r3 -p 5003:6379 --net=redis_net--ip 172.19.0.4 redis bash
docker run -it -d --name r4 -p 5004:6379 --net=redis_net--ip 172.19.0.5 redis bash
docker run -it -d --name r5 -p 5005:6379 --net=redis_net--ip 172.19.0.6 redis bash
docker run -it -d --name r6 -p 5006:6379 --net=redis_net--ip 172.19.0.7 redis bash
- 容器的命名分別爲r1-r6
- 容器映射的宿主機端口對應:5001-5006
- 容器均使用網關redis_net
- 容器分別映射ip對應:172.19.0.2-172.19.0.7
5. 檢驗容器創建是否成功
使用docker ps -a | grep redis
,查看各個節點是否正常運行中
6. 進入每個容器啓動Redis
以r1爲例
- 以交互方式進入容器:
docker exec -it r1 bash
- 覆蓋配置文件:
cp /home/redis/redis.conf /usr/redis/redis.conf
- 進入到啓動目錄:
cd /usr/redis/src
- 啓動Redis:
./redis-server ../redis.conf
重複上述操作將6臺容器都啓動
7. 集羣搭建
鏡像中已經安裝好了ruby的環境並編寫好了集羣啓動的腳本,可以直接進行使用
- 進入任意一個節點,如交互式進入r1,執行
docker exec -it r1 bash
- 在
/usr/redis/
目錄下創建一個空目錄cluster
cd /usr/redis/
mkdir cluster
- 將/usr/redis/src/下的 redis‐trib.rb複製到/usr/redis/cluster/目錄下
cd /usr/redis/src/
cp redis‐trib.rb ../cluster
- 進入/usr/redis/cluster/執行集羣啓動腳本
cd ../cluster
./redis-trib.rb create --replicas 1 172.19.0.2:6379 172.19.0.3:6379 172.19.0.4:6379 172.19.0.5:6379 172.19.0.6:6379 172.19.0.7:6379
執行過程中需要輸入一次yes
,執行完成集羣啓動成功
8. 測試使用Redis Cluster 集羣
- 進入任意一個節點,如交互式進入r1,執行
docker exec -it r1 bash
- 進入到客戶端啓動目錄:
cd /usr/redis/src/
- 以集羣方式啓動客戶端程序:
./redis-cli -c
- 進入客戶端後,進行基礎的set/get操作,如:
set a 10086
,a計算出hash槽爲15495,應該存放在第三個主節點,即172.19.0.4上,跳轉到172.19.0.4上set b 12345
,b計算出hash槽爲3300,應該存放在第一個主節點,即172.19.0.2上,跳轉回172.19.0.2