Docker構建redis叢集環境

weixin_34129145發表於2018-06-04

1. 安裝docker(來自官網)

參考:Docker開發環境搭建

2. 從docker庫獲取redis映象

docker pull redis

3. 從docker庫獲取ruby映象

docker pull ruby

ps:可以利用docker images命令檢視下載的映象

4. 建立redis容器

 #在/usr/local/src目錄下建立redis-cluster資料夾並在redis-cluster資料夾下建立配置檔案redis-cluster.conf
 cd /usr/local/src && mkdir redis-cluster && touch redis-cluster.conf
 #開啟redis-cluster.conf 並插入配置資訊如下:
 #port ${PORT}
 #cluster-enabled yes
 #cluster-config-file nodes.conf
 #cluster-node-timeout 5000
 #cluster-announce-ip 192.168.65.1
 #cluster-announce-port ${PORT}
 #cluster-announce-bus-port 1${PORT}
 #appendonly yes
 vi redis-cluster.conf

5. 建立自定義network(redis-net)

docker network create redis-net

6. 在/usr/local/src/redis-cluster下生成conf和data目標,並生成配置資訊

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

ps:共生成6個資料夾,從6000到6005,每個資料夾下包含data和conf資料夾,同時conf裡面有redis.conf配置檔案

7. 建立6個redis容器

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

8. 構建Redis叢集(通過ruby指令碼來實現叢集)

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 6000 6005`; do  echo -n "$(docker inspect --format '{{ (index .NetworkSettings.Networks "redis-net").IPAddress }}' "redis-${port}")":${port} ' ' ;  done)"

9. 檢查redis叢集

redis-cli -h ip地址 -p 埠號 -c

相關文章