使用Docker搭建Redis集群的脚本

使用Docker搭建Redis集群的脚本


###仅用于学习使用,脚本内使用的是docker,但是都在一台机器上,所以说严格意义上讲不算集群(原谅我没有服务器。。。),但是很容易的也是因为docker,有多台服务器时,只需要将相应的节点镜像迁移至其他服务即可(这也正是docker带来的方便之处)。话不多说,直接上脚本

执行命令:bash create-redis.sh 192.X.X.X

#!/bin/bash
set -x

IPHOST=$1

mkdir redis-cluster

cd redis-cluster

sudo docker pull redis

sudo docker pull ruby

touch redis-cluster.tmpl

echo 'port ${PORT}
	  cluster-enabled yes
	  cluster-config-file nodes.conf
	  cluster-node-timeout 5000
	  cluster-announce-ip #_IPHOST_# 
	  cluster-announce-port ${PORT}
	  cluster-announce-bus-port 1${PORT}
	  appendonly yes'  >> redis-cluster.tmpl

sed -i 's@#_IPHOST_#@'${IPHOST}'@g' redis-cluster.tmpl

sudo docker network create redis-net

#check container
ids=`sudo docker ps -a | grep redis- | awk -F ' ' '{print $1}'`
for id in ${ids};
do
	sudo docker rm -f ${id};
done


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

for port in `seq 7000 7005`; 
do 
	sudo docker run -d -ti \
	-p ${port}:${port} -p 1${port}:1${port} \
	-v ~/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
	-v ~/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

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









  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值