阿里云esc 使用docker部署redis集群

原文参考的   https://www.cnblogs.com/lianggp/articles/8136222.html

我只是实践了以后把我遇到的问题整理记录下来

一:阿里云如果是centos最好是7以上,可以安装 最新的docker-ce

二:安装最新的docker-ce

sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
sudo systemctl start docker

三:获取最新镜像   

2018年10月19日09:25:36更新,不需要ruby环境了,redis  pull最新的5.0版本,原先的创建方式已经在17号更新弃用了

docker pull redis:5.0-rc
docker pull ruby

四:redis 集群

1:创建redis配置文件(redis-cluster.tmpl)

  我在路径/data下创建一个文件夹redis-cluster,在路径/data/redis-cluster下创建一个文件redis-cluster.tmpl,并把以下内容复制过去。(注:路径可自定义,我用的是/data/redis-cluster)

其中ip如果是本地调用可以用内网ip,如果是外网集群必须使用公网ip然后配置安全组开放端口
port ${PORT}
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip xx.xx.xx.xx
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes

2:创建自定义的network(可以省略,省略的话删除后面脚本里关于指定网络的命令,主要是为了好区分)

docker network create redis-net

cd /data/redis-cluster

3:创建集群机器所有的文件夹,默认创建6个

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

4:创建docker容器,默认创建6个

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

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

 

最新的创建集群方式使用5.0里面带的redis-cli

docker exec -ti  redis-7000 /bin/bash
redis-cli --cluster create 172.18.0.7:7000 172.18.0.8:7001 172.18.0.9:7002 172.18.0.10:7003 172.18.0.11:7004 172.18.0.12:7005 --cluster-replicas 1

出现下图即为成功

Using 3 masters:
172.18.0.2:7000
172.18.0.3:7001
172.18.0.4:7002

这三个是主服务,客户端配置连这三个就行

 

6ae9cf5cc48f765c027e349896b07d4d238.jpg

 运行这个可能出现的错误是redis服务器插槽忙碌

需要登录每一个redis容器重置一下状态

docker run -it --link redis-7000:redis  --net redis-net --rm redis redis-cli -h redis -p 7000
然后输入
flushall
cluster reset
docker run -it --link redis-7001:redis  --net redis-net --rm redis redis-cli -h redis -p 7001
然后输入
flushall
cluster reset
docker run -it --link redis-7002:redis  --net redis-net --rm redis redis-cli -h redis -p 7002
然后输入
flushall
cluster reset
docker run -it --link redis-7003:redis  --net redis-net --rm redis redis-cli -h redis -p 7003
然后输入
flushall
cluster reset
docker run -it --link redis-7004:redis  --net redis-net --rm redis redis-cli -h redis -p 7004
然后输入
flushall
cluster reset
docker run -it --link redis-7005:redis  --net redis-net --rm redis redis-cli -h redis -p 7005
然后输入
flushall
cluster reset

 

使用redis客户端既可以在本地装一个redis然后借用他的客户端

redis-cli -c -p 7000

也可以映射redis容器的客户端

docker run -it --link redis-7000:redis  --net redis-net --rm redis redis-cli -c -h redis -p 7000

登录后使用  cluster info 查看集群状态

注意命令行连接集群需要加-c 的参数,否则会出现(error) MOVED错误

转载于:https://my.oschina.net/liuguangqiang/blog/2245410

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值