Docker-Compose构建redis6.x版本集群

1 构建redis镜像 

1.1 编写编译安装redis的脚本

#!/bin/bash

yum install -y gcc gcc-c++ make openssl openssl-devel

cd /home/redis-6.2.1

make && make PREFIX=/usr/local/redis install

mkdir -p /usr/local/redis/conf/

cp /home/redis-6.2.1/redis.conf /usr/local/redis/conf/

mkdir -p /data

mkdir p /usr/local/redis/log

sed -i 's#127.0.0.1#0.0.0.0#' /usr/local/redis/conf/redis.conf 

sed -i 's#protected-mode yes#protected-mode no#' /usr/local/redis/conf/redis.conf

sed -i '1230s#appendonly no#appendonly yes#' /usr/local/redis/conf/redis.conf

sed -i '444s#dir ./#dir ./data#' /usr/local/redis/conf/redis.conf

1.2 编写Dockerle 

FROM centos:7

ADD redis-6.2.1.tar.gz /home #需要自己下载redis的安装包

COPY redis_install.sh /home

RUN sh /home/redis_install.sh

ENTRYPOINT /usr/local/redis/bin/redis-server  /usr/local/redis/conf/redis.conf

1.3 构建镜像:docker build -t  redisclusterimage:v1

bind 0.0.0.0

port 6379

requirepass "1234"

#注意要创建一个该目录/usr/local/redis/log,否则启动容器会失败

logfile "/usr/local/redis/log/redis1.log"

dbfilename "redis1.rdb"

dir "/data"

appendonly yes

appendfilename "appendonly1.aof"

protected-mode no

masterauth "1234"

#是否开启集群

cluster-enabled yes

cluster-config-file nodes-6379.conf

#节点连接超时时间

cluster-node-timeout 20000

#集群节点的ip,当前节点的ip(对外暴露的ip)

cluster-announce-ip 192.xxx.xx.xx

#集群节点映射端⼝(应用程序连接的端口)(该集群节点对外暴露的端口)

cluster-announce-port 6379

#集群节点总线端⼝,节点之间互相通信,常规端⼝+1万该集群节点对外暴露节之间点通信的端口)

cluster-announce-bus-port 16379

2 创建6个redis配置文件作为挂载文件

(redis1.conf…redis6.conf)配置文件如下(不同的redis实例要修改部分配置,如各种端口,一些文件名 ip等)

3构建docker-compose.yml文件

version: '3'

services:

  redis1:

    image: ee98f212cc43

    container_name: Docker_Compose_rediscluster1

    ports:

    - "6379:6379"

    - "16379:16379"

    volumes:

    - /redis_cluster/redis1.conf:/usr/local/redis/conf/redis.conf

    - /redis_cluster/log:/usr/local/redis/log

- /redis_cluster/data:/data

restart: always

  redis2:

    image: ee98f212cc43

    container_name: Docker_Compose_rediscluster2

    ports:

    - "6380:6380"

    - "16380:16380"

    volumes:

    - /redis_cluster/redis2.conf:/usr/local/redis/conf/redis.conf

    - /redis_cluster/log:/usr/local/redis/log

- /redis_cluster/data:/data

restart: always

  redis3:

    image: ee98f212cc43

    container_name: Docker_Compose_rediscluster3

    ports:

    - "6381:6381"

    - "16381:16381"

    volumes:

    - /redis_cluster/redis3.conf:/usr/local/redis/conf/redis.conf

    - /redis_cluster/log:/usr/local/redis/log

- /redis_cluster/data:/data

restart: always

  redis4:

    image: ee98f212cc43

    container_name: Docker_Compose_rediscluster4

    ports:

    - "6382:6382"

    - "16382:16382"

    volumes:

    - /redis_cluster/redis4.conf:/usr/local/redis/conf/redis.conf

    - /redis_cluster/log:/usr/local/redis/log

    - /redis_cluster/data:/data

restart: always

  redis5:

    image: ee98f212cc43

    container_name: Docker_Compose_rediscluster5

    ports:

    - "6383:6383"

    - "16383:16383"

    volumes:

    - /redis_cluster/redis5.conf:/usr/local/redis/conf/redis.conf

    - /redis_cluster/log:/usr/local/redis/log

- /redis_cluster/data:/data

restart: always

  redis6:

    image: ee98f212cc43

    container_name: Docker_Compose_rediscluster6

    ports:

    - "6384:6384"

    - "16384:16384"

    volumes:

    - /redis_cluster/redis6.conf:/usr/local/redis/conf/redis.conf

    - /redis_cluster/log:/usr/local/redis/log

    - /redis_cluster/data:/data

    restart: always

 

4 执行 后台启动容器:docker-compose up –d 

5  输入加入集群的命令

/usr/local/redis6.00/bin/redis-cli -a 1234 --cluster create  192.1xx.xx.xx:6379 192.xx.xx.189:6380 192.1xx.xx.x:6381 192.xx.xx.189:6382 192.1xx.xx:1x:6383 192.xx.xxx.189:6384 --cluster-replicas 1

(其中⼀个节点执⾏即可)(对于一个集群执行一次即可)(除非我们是要重新搭建一个redis集群,不然执行一次该命令即可,重启集群后无需重复执行该命令了)

(执行该命令才开始分配槽位)(如果重启有问题就必须重新创建一个集群,必须删除之前数据文件rdbaof,再重新执行该命令)

6进入客户端中检查集群信息

直 接  /usr/local/redis6.00/bin/redis-cli -c -a 1234

或者   /usr/local/redis6.00/bin/redis-cli -c -p 6386 -a 1234

(这里的-p 指端口,注意该端口的节点必须在该机器上)

进入客户端后可以输入以下查看集群信息和节点信息

# 集群信息

cluster info

#所有集群节点信息 (可以看出所有节点之间的主从关系)

cluster nodes

2检查状态某个节点的信息 (可以看出指定节点的具体信息)

/usr/local/redis6.00/bin/redis-cli -a 1234 --cluster check 192.xxx.xx.xx:6381

使用docker-compose构建redis集群的好处

1 构建速度相比直接用docker一个一个去构建快的多,一次性启动所有集群中所有的初始容器。因为我们的redis镜像和配置文件已经提前写好(就算要扩展节点也只要对配置文件做部分修改)(且对redis镜像进行了加强可以自动生成log目录)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值