Docker快速构建Redis集群(cluster)

Docker快速构建Redis集群(cluster)

以所有redis实例运行在同一台宿主机上为例子

搭建步骤

redis集群目录清单

.
├── Dockerfile
├── make_master_slave.sh
├── run_master_slave.sh
├── compose_master_slave.sh
├── redis-trib.rb
├── master
│?? ├── 7000
│?? │?? ├── data
│?? │?? │?? ├── appendonly.aof
│?? │?? │?? ├── dump.rdb
│?? │?? │?? └── nodes.conf
│?? │?? └── redis.conf
│?? ├── 7001
│?? │?? ├── data
│?? │?? │?? ├── appendonly.aof
│?? │?? │?? ├── dump.rdb
│?? │?? │?? └── nodes.conf
│?? │?? └── redis.conf
│?? └── 7002
│??     ├── data
│??     │?? ├── appendonly.aof
│??     │?? ├── dump.rdb
│??     │?? └── nodes.conf
│??     └── redis.conf
├── redis-cluster.tmpl
└── slave
    ├── 7003
    │?? ├── data
    │?? │?? ├── appendonly.aof
    │?? │?? ├── dump.rdb
    │?? │?? └── nodes.conf
    │?? └── redis.conf
    ├── 7004
    │?? ├── data
    │?? │?? ├── appendonly.aof
    │?? │?? ├── dump.rdb
    │?? │?? └── nodes.conf
    │?? └── redis.conf
    └── 7005
        ├── data
        │?? ├── appendonly.aof
        │?? ├── dump.rdb
        │?? └── nodes.conf
        └── redis.conf

1.redis.conf

找到一份原始的redis.conf文件,将其重命名为:redis-cluster.tmpl
redis-cluster.tmpl

# bind 127.0.0.1
protected-mode no
port ${PORT}
daemonize no
dir /data/redis
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000

2.构建redis-trib镜像

redis-trib.rbredis官方推出的管理redis集群的工具,集成在redis的源码src目录下,因为搭建redis-cluster的时候需要用到redis-trib工具。

构建redis-trib镜像
Dockerfile

FROM ruby:2.5.5-slim
MAINTAINER xinchen<[email protected]>
RUN gem install redis
RUN mkdir /redis
WORKDIR /redis
# redis-trib.rb 可在https://github.com/antirez/redis中找到
# 此处已经 wget https://raw.githubusercontent.com/antirez/redis/4.0/src/redis-trib.rb
ADD ./redis-trib.rb /redis/redis-trib.rb

构建镜像

docker build -t redis-trib .

3.创建docker内部网络

# docker network ls 可查看
docker network create redis-cluster-net

4.创建 master 和 slave 文件夹并生成配置文件

make_master_slave.sh

# 创建 master 和 slave 文件夹
for port in `seq 7000 7005`; do
    ms="master"
    if [ $port -ge 7003 ]; then
        ms="slave"
    fi
    mkdir -p ./$ms/$port/ && mkdir -p ./$ms/$port/data     && PORT=$port envsubst < ./redis-cluster.tmpl > ./$ms/$port/redis.conf;
done

5.运行docker redis 的 master 和 slave 实例

run_master_slave.sh

# 运行docker redis 的 master 和 slave 实例
for port in `seq 7000 7005`; do
    ms="master"
    if [ $port -ge 7003 ]; then
        ms="slave"
    fi
    docker run -d -p $port:$port -p 1$port:1$port     -v $PWD/$ms/$port/redis.conf:/data/redis.conf     -v $PWD/$ms/$port/data:/data/redis     --restart always --name redis-$ms-$port --net redis-cluster-net     redis redis-server /data/redis.conf;
done

6.组装masters : slaves 节点参数

组装masters : slaves 节点参数

# 组装masters : slaves 节点参数
matches=""
for port in `seq 7000 7005`; do
    ms="master"
    if [ $port -ge 7003 ]; then
        ms="slave"
    fi
    matches=$matches$(docker inspect --format '{{(index .NetworkSettings.Networks "redis-cluster-net").IPAddress}}' "redis-$ms-${port}"):${port}" ";
done

echo $matches
# 172.20.0.2:7000 172.20.0.3:7001 172.20.0.4:7002 172.20.0.5:7003 172.20.0.6:7004 172.20.0.7:7005

# 创建docker-cluster,这里就用到了上面的redis-trib镜像
docker run -it --rm --net redis-cluster-net redis-trib ruby redis-trib.rb create --replicas 1 $matches

# 最后需要在接下来的console中输入“yes”,即可完成docker-cluster的搭建

参考

docker redis 集群(cluster)搭建

redis官网

redis中文文档

原文地址:https://www.cnblogs.com/xcmelody/p/10891636.html

时间: 2024-10-12 09:50:54

Docker快速构建Redis集群(cluster)的相关文章

Redis 集群cluster

在网上查找 redis集群的相关文档,很多都是以主从或者主从故障转移而说是集群,前几天玩了下集群,今天终于写出来一部分内容,可以分享出来了. 一.       Redis集群基础介绍 1.Redis集群简介:Redis集群是一个可以在多个 Redis 节点之间进行数据共享的设施.Redis 集群通过分区来提供一定程度的可用性:即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求.Redis 集群提供了以下两个好处:(1.)将数据自动切分(split)到多个节点的能力.(2.)

手动构建redis集群

1.准备节点 -- 主节点 --- redis-7000.conf redis-7100.conf redis-7200.conf -- 从节点 --- redis-7001.conf redis-7101.conf redis-7201.conf Redis集群一般有多个节点组成,节点数量至少为6个才能保证组成完整的高可用集群: 2.修改配置 $ vim redis-7000.conf daemonize yes   ## 开启守护进程  port 7000   # 节点端口 logfile 

docker 快速部署ES集群 spark集群 (2)

https://cloud.tencent.com/developer/article/1098820 前面贴子是直接在主机ip设置.我不想搞多个虚拟机,如果那样还要docker干嘛呢. 首先需要设置docker容器IP 首先验证一下 先从私库中拉下镜像 docker pull 192.168.1.153:31809/zookeeper.new.es docker run -itd --net docker-ice --ip 192.168.10.11 192.168.1.153:31809/z

docker下安装redis集群

docker-compose.yml master: image: redis:4 container_name: redis-cluster_master command: redis-server --port 6379 ports: - "6379" net: "host" slave_1: image: redis:4 container_name: redis-cluster_slave_1 command: redis-server --port 638

使用Docker快速部署Ceph集群

一 应用场景描述 二 操作步骤 三 Ceph常用操作

redis集群构建过程 linux windows

redis集群的构建过程 本人初次构建redis集群时,通过查阅资料整理的文档 目录 Linux Redis cluster集群方案... 1 Windows redis集群方案... 5 Linux Redis cluster集群方案 1 安装: 下载地址:http://download.redis.io/releases/ 下载版本:redis3.0.7.tar.gz [[email protected] soft]$ tar -zxzf redis-3.0.7.tar.gz [[email

redis单点、主从、集群cluster配置搭建与使用

目录 redis单点.主从.集群cluster配置搭建与使用 1 .redis 安装及配置 1.1 redis 单点 1.1.2 在命令窗口操作redis 1.1.3 使用jedis客户端操作redis 1.1.4 使用spring-redis操作 1.2 redis 主从 1.3 哨兵sentinel 1.3.2 哨兵sentinel配置 1.3.3 启动哨兵,使用jedis连接哨兵操作redis 1.3.4 编写程序&运行 1.3.5模拟主节点宕机情况 1.4 redis cluster 1

Redis的安装和使用之四------Redis集群

一.Redis集群介绍 Redis 集群是一个提供在多个Redis间节点间共享数据的程序集. Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误. Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令. Redis 集群的优势: 自动分割数据到不同的节点上: 整个集群的部分节点失败或者不可达的情况下能够继续处理命令. Redis集群的数据分片

Windows下搭建Redis集群

Redis集群:运行多个Redis实例,然后通过特定的工具,将这些实例以某种关系连接起来,形成一个Redis网络. 详细的内容可以阅读:Redis 集群教程 里面会详细介绍Redis集群的设计思想和内部结构,以及如何搭建Redis集群等. 本文主要讲述如何在Windows系统下快速搭建Redis集群: 1.下载Redis 其GitHub连接如下:https://github.com/MSOpenTech/redis/releases/ Redis提供msi和zip格式的下载文件,这里下载zip格