Docker Redis5.0 集群搭建

〇、目标

  1.在一台Centos7虚拟机中,以Docker搭建Redis集群(redis版本为5.0.x)。

  2.六个节点,三主三从。

〇、准备

  1.新建文件夹以放置各个节点的配置文件

    

  2.编写各节点的配置文件

    (1)从官网下载配置文件模板:

    使用命令: wget http://download.redis.io/redis-stable/redis.conf -O <文件名> 

    例如  wget http://download.redis.io/redis-stable/redis.conf -O ./7001/redis7001.conf 

扫描二维码关注公众号,回复: 9383443 查看本文章

     (2)修改如下:

#bind 127.0.0.1              #注释掉
port 700*              #6份配置文件,从7001到7006
appendonly yes               #允许持久化
cluster-enable yes             #开启集群
cluster-config-file nodes-7001.conf  #存放各节点信息,会自动生成该文件
cluster-node-timeout 15000        #节点失效检测响应的超时时间

#各节点之间通信所用ip、端口与总线端口
cluster-announce-ip 192.168.22.130   #宿主机ip
cluster-announce-port 700*       #6份配置文件,cong7001到7006
cluster-announce-bus-port 1700*     #6份配置文件,从17001到17006

一、创建Redis镜像

  1.使用外部配置文件在docker中创建redis镜像

  (其他几个节点镜像以同样方式创建,注意修改名称与路径):

# 参数说明:
# --restart always            (docker启动时,本镜像也自动启动)
# --name <容器名>
# --net <模式>               (镜像的网络配置,host表示使用本地主机的网络)
# --privileged <true|false>      (权限,true表示拥有root权限)
# -v <本地配置文件映射容器配置文件> -v <本地文件夹挂载到容器文件夹>
# -d (表示以守护进程方式启动容器)
# redis redis-server <文件名>     (启动redis服务并制定配置文件)
# 注意:使用host模式的-p参数没用,不必指定
docker run --restart always --name redis-cluster-7001 --net host --privileged=true -v /usr/local/docker/redis-cluster/7001/redis7001.conf:/usr/local/docker/redis-cluster/7001/redis7001.conf -v /usr/local/docker/redis-cluster/7001/data:/usr/local/docker/redis-cluster/7001/data -d redis redis-server /usr/local/docker/redis-cluster/7001/redis7001.conf

  2.查看镜像

三、创建集群

  1.进入其中一个镜像:

  

  2.创建集群

#因为网络配置是host模式,则 <宿主机ip>:<port>  (6个节点)

redis-cli --cluster create 192.168.22.130:7001 192.168.22.130:7002 192.168.22.130:7003 192.168.22.130:7004 192.168.22.130:7005 192.168.22.130:7006 --cluster-replicas 1

  3.测试

#进入其中一个节点
redis-cli -c -p 7001
#查看集群信息
cluster nodes

四、注意

  1.ruby

    在Redis5.0.x已经不使用ruby和redis-trib.rb创建集群了

  2.创建集群过程中中断

    再次创建时,会显示[ERR] Node <ip>:<port> is not empty .......

    解决方法是删除镜像,重新创建镜像:

#停止镜像
docker stop <镜像名或镜像id>

#删除镜像
#docker rm <镜像名或镜像id>

#重新创建

  

  3.创建集群时一直waiting......

    原因可能是节点的网络配置(ip、端口等)出了问题。注意创建镜像时要使用--net参数,配置文件内的ip、端口要指定好,以及检查一下防火墙。

  4.redis镜像的状态(status)一直显示restart

    使用 docker logs <镜像名或镜像id> 命令查看出了什么问题

猜你喜欢

转载自www.cnblogs.com/Drajun/p/12359277.html