使用docker大家redis叢集環境簡直就是神器,隻需要幾句指令就完成了環境的搭建。
首先,需要機器需要安裝docker,本文主要是在自己的一台機器上搭建叢集環境,如果是多台伺服器,需要将ip更換為真實環境。
1,首先建立網卡
#建立redis網卡,後面配置redis叢集的時候可以指定配置IP(不建立網卡系統會自動配置設定IP 不會産生影響)
docker network create redis --subnet 172.12.0.0/16
2,拉取redis鏡像
docker pull redis3,檢視安裝好的images
docker imagesredis latest 8e69fcb59ff4 11 hours ago 130MB
如果發現有錯誤,可以先删除docker rmi redis
4、配置6個redis服務
因為是6個redis服務,單個配起來的話很麻煩,是以我選擇使用shell腳本進行配置,腳本代碼如下:
vi redis-cluster.sh
#!/bin/bash
for port in $(seq 1 6); \
do \
mkdir -p /home/redis/node0${port}/conf
touch /home/redis/node0${port}/conf/redis.conf
cat << EOF >/home/redis/node0${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file node.conf
cluster-node-timeout 5000
cluster-announce-ip 172.12.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done
cluster-enabled yes 開啟叢集功能
cluster-node-timeout 叢集節點的逾時時限
cluster-announce-ip 叢集節點IP
cluster-announce-port 叢集節點映射端口
cluster-announce-bus-port 叢集節點總線端口
建立檔案之後,運作
sh redis-cluster.sh
5, 啟動6個redis服務
同上啟動的話也是使用shell腳本來完成,腳本如下:
vi run-redis-cluster.sh
#!/bin/bash
for port in $(seq 1 6); \
do \
docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} \
-v /home/redis/node0${port}/data:/data \
-v /home/redis/node0${port}/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.12.0.1${port} redis redis-server /etc/redis/redis.conf
done
建立檔案之後,運作
sh run-redis-cluster.sh
6, 檢視剛剛建立的redis容器
docker ps
說明建立成功.
7 ,配置叢集環境
進入redis-1容器
docker exec -it redis-1 bash
啟動叢集指令
redis-cli --cluster create 172.12.0.11:6379 172.12.0.12:6379 172.12.0.13:6379 172.12.0.14:6379 172.12.0.15:6379 172.12.0.16:6379 --cluster-replicas 1
中途手動輸入yes,看到這個就代表叢集啟動成功啦!!!
8,測試叢集服務
進入第一個容器
docker exec -it redis-1 bash
輸入redis-cli -c指令,進入叢集環境
檢視節點
cluster nodes
可以看到三主三從
使用 set name yao測試
發現啟動了第二個redis叢集容器172.12.0.12的那台伺服器
停掉12這台伺服器之後,再次進入redis-1,輸入指令: get name
依然能取到值:yao
到這裡搭建完成了,非常簡單了.