使用Docker搭建redis集群,亲测可用。2018-06

转载:https://www.cnblogs.com/lianggp/articles/8136222.html
前言

 redis集群对于很多人来说非常熟悉,在前些日子,我也有一位大兄弟也发布过一篇关于在阿里云(centOS7)上搭建redis 集群的文章,虽然集群搭建的文章在网上很多,我比较喜欢这篇文章的地方是他在搭建过程中,指出一些我们会遇到而别人没有指出的问题。

  在这里,我同样带给大家一遍关于阿里云(centOS7)redis集群搭建的文章,但是这次搭建有所不同的是,它是在docker上搭建的redis集群。

准备工具

  一、安装docker(来自官网)

   1、安装所需的软件包

$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
   2、使用以下命令来设置稳定的存储库。

$ sudo yum-config-manager \
–add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
   3、安装docker ce(docker社区版)

$ sudo yum install docker-ce
   4、启动docker

$ sudo systemctl start docker

  二、在docker库获取redis镜像(截至2017-12-28,最新版为4.0.6)

$ docker pull redis

  三、在docker库获取ruby镜像

$ docker pull ruby
至此,docker上redis cluster所有工具准备完毕,我们在命令行上输入docker images,就可以查看到已经安装的镜像(注:mysql和nginx是无关本教程的)

搭建

 一、创建redis容器

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

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

复制代码
port PORTprotectedmodenoclusterenabledyesclusterconfigfilenodes.confclusternodetimeout5000clusterannounceip39.10X.XX.XX//IPclusterannounceport P O R T p r o t e c t e d − m o d e n o c l u s t e r − e n a b l e d y e s c l u s t e r − c o n f i g − f i l e n o d e s . c o n f c l u s t e r − n o d e − t i m e o u t 5000 c l u s t e r − a n n o u n c e − i p 39.10 X . X X . X X / / 自 己 服 务 器 I P c l u s t e r − a n n o u n c e − p o r t {PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
复制代码
  通过命令,可查看

$ cat /home/redis-cluster/redis-cluster.tmpl

  2、创建自定义network

$ docker network create redis-net
  3、在/home/redis-cluster下生成conf和data目标,并生成配置信息

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

 共生成6个文件夹,从7000到7005,每个文件夹下包含data和conf文件夹,同时conf里面有redis.conf配置文件

  4、创建6个redis容器

复制代码
$ for port in seq 7000 7005; do \
docker run -d -ti -p port: p o r t : {port} -p 1 port:1 p o r t : 1 {port} \
-v /home/redis-cluster/ port/conf/redis.conf:/usr/local/etc/redis/redis.conf v/home/rediscluster/ p o r t / c o n f / r e d i s . c o n f : / u s r / l o c a l / e t c / r e d i s / r e d i s . c o n f   − v / h o m e / r e d i s − c l u s t e r / {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
复制代码
 至此,通过命令docker ps可查看刚刚生成的6个容器信息

 二、集群

  通过启动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 “ (dockerinspectformat(index.NetworkSettings.Networks"redisnet").IPAddress"redis ( d o c k e r i n s p e c t − − f o r m a t ′ ( i n d e x . N e t w o r k S e t t i n g s . N e t w o r k s " r e d i s − n e t " ) . I P A d d r e s s ′ " r e d i s − {port}”)”:${port} ’ ’ ; \
done)”
复制代码
输入命令后,可以得到下面的信息说明集群成功了

注意点

  1、注意redis配置信息的路径

   2、以上的代码都是centOS命令行上输入的

   3、阿里云上要添加安全组,除了7000-7005端口,还要开放17000-17005端口

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值