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目录)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用docker-compose部署Redis集群的步骤: 1.创建一个目录,例如redis-cluster,并在该目录中创建一个docker-compose.yaml文件。 2.在docker-compose.yaml文件中编写以下内容: ```yaml version: '3' services: redis-1: image: redis:6.0.9 command: redis-server /usr/local/etc/redis/redis.conf volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf ports: - "6379" networks: - redis-cluster redis-2: image: redis:6.0.9 command: redis-server /usr/local/etc/redis/redis.conf volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf ports: - "6380" networks: - redis-cluster redis-3: image: redis:6.0.9 command: redis-server /usr/local/etc/redis/redis.conf volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf ports: - "6381" networks: - redis-cluster networks: redis-cluster: driver: bridge ``` 3.在redis-cluster目录中创建一个redis.conf文件,并将以下内容复制到文件中: ```conf bind 0.0.0.0 port 6379 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes requirepass 1111 masterauth 1111 ``` 4.在终端中导航到redis-cluster目录,并运行以下命令启动Redis集群: ```shell docker-compose up -d ``` 5.使用以下命令进入redis-1容器: ```shell docker exec -it redis-cluster_redis-1_1 /bin/bash ``` 6.在redis-1容器中,使用以下命令创建Redis集群: ```shell redis-cli --cluster create 172.20.0.2:6379 172.20.0.3:6379 172.20.0.4:6379 --cluster-replicas 0 ``` 7.现在,您已经成功地使用docker-compose部署了Redis集群
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值