一、zookeeper集群

docker-compose文件:

    version: '3.1'
services:
zoo1:
image: zookeeper
hostname: zoo1
container_name: zoo1
ports:
- 2181:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=0.0.0.0:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zoo2:
image: zookeeper
restart: always
hostname: zoo2
container_name: zoo2
ports:
- 2182:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=0.0.0.0:2888:3888 server.3=zoo3:2888:3888
zoo3:
image: zookeeper
restart: always
hostname: zoo3
container_name: zoo3
ports:
- 2183:2181
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=0.0.0.0:2888:3888
  • 在这里ZOO_MY_ID必须唯一
  • ZOO_SERVERS用来配置服务的broker

二、redis cluster

1、创建redis文件夹

在对应的文件夹下分别创建7001-7006的文件夹与docker-compose.yml,这里名字文件夹代表当前redis节点的端口号,如图所示:

2、创建redis.conf文件

具体redis-cluster示例大家可以参考官网,那么分别配置redis.conf文件

    port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

port与文件夹名对应

3、docker-compose.yml文件


version: '3.1'
services:
redis-node1:
image: redis
hostname: redis-node1
network_mode: host
container_name: redis-node1
entrypoint: redis-server /usr/local/etc/redis/redis.conf
ports:
- 7001:7001
env_file:
- .env
volumes:
- "${PROJECT_HOME}/7001/redis.conf:/usr/local/etc/redis/redis.conf"
redis-node2:
image: redis
hostname: redis-node2
network_mode: host
container_name: redis-node2
entrypoint: redis-server /usr/local/etc/redis/redis.conf
ports:
- 7002:7002
env_file:
- .env
volumes:
- "${PROJECT_HOME}/7002/redis.conf:/usr/local/etc/redis/redis.conf"
redis-node3:
image: redis
hostname: redis-node3
network_mode: host
container_name: redis-node3
entrypoint: redis-server /usr/local/etc/redis/redis.conf
ports:
- 7003:7003
env_file:
- .env
volumes:
- "${PROJECT_HOME}/7003/redis.conf:/usr/local/etc/redis/redis.conf"
redis-node4:
image: redis
hostname: redis-node4
network_mode: host
container_name: redis-node4
entrypoint: redis-server /usr/local/etc/redis/redis.conf
ports:
- 7004:7004
env_file:
- .env
volumes:
- "${PROJECT_HOME}/7004/redis.conf:/usr/local/etc/redis/redis.conf"
redis-node5:
image: redis
hostname: redis-node5
network_mode: host
container_name: redis-node5
entrypoint: redis-server /usr/local/etc/redis/redis.conf
ports:
- 7005:7005
env_file:
- .env
volumes:
- "${PROJECT_HOME}/7005/redis.conf:/usr/local/etc/redis/redis.conf"
redis-node6:
image: redis
hostname: redis-node6
network_mode: host
container_name: redis-node6
entrypoint: redis-server /usr/local/etc/redis/redis.conf
ports:
- 7006:7006
env_file:
- .env
volumes:
- "${PROJECT_HOME}/7006/redis.conf:/usr/local/etc/redis/redis.conf"

这里注意以下几点:

  1. network_mode设置为host,否则在创建集群时,会一直等待而不会创建成功
  2. volumes挂载点必须覆盖容器内部配置,大家也可以考虑挂载redis持久化的数据文件夹

配置好后分别运行:

    $ docker-compose create
$ docker-compose start

4、启动集群

在这里部署在阿里云服务器上

运行命令如下:


$ docker run -it inem0o/redis-trib create --replicas 1 公网IP:7001 公网IP:7002 公网IP:7003 公网IP:7004 公网IP:7005 公网IP:7006

运行后如图所示:



即可说明成功,然后你就访问主节点试试数据是否同步吧!

使用docker-compose快速构建集群示例(一)的更多相关文章

  1. 使用 Docker Compose 快速构建 TiDB 集群

    本文档介绍如何在单机上通过 Docker Compose 快速一键部署一套 TiDB 测试集群.Docker Compose 可以通过一个 YAML 文件定义多个容器的应用服务,然后一键启动或停止. ...

  2. [phvia/dkc] Docker Compose 快速构建(LNMP+Node)运行环境

    快速构建(LNMP+Node)运行环境. dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose 准备 安装 docker 选择1) 从 ...

  3. Docker 0x13: Docker 构建集群/服务/Compose/分布式服务栈

    目录 Docker 构建集群/服务/Compose/分布式服务栈 集群 初始化集群服务 安装docker-machine 管理节点和工作节点 docker集群构建完成 集群中部署应用 集群服务访问特性 ...

  4. 利用Docker Compose快速搭建本地测试环境

    前言 Compose是一个定义和运行多个Docker应用的工具,用一个YAML(dockder-compose.yml)文件就能配置我们的应用.然后用一个简单命令就能启动所有的服务.Compose编排 ...

  5. Docker 部署 RocketMQ Dledger 集群模式( 版本v4.7.0)

    文章转载自:http://www.mydlq.club/article/97/ 系统环境: 系统版本:CentOS 7.8 RocketMQ 版本:4.7.0 Docker 版本:19.03.13 一 ...

  6. Docker 搭建 Redis Cluster 集群环境

    使用 Docker 搭建 Redis Cluster,最重要的环节就是容器通信的问题,这一块我们在之前的文章中已经给大家解决了<Docker 网络模式详解及容器间网络通信>,本篇文章主要练 ...

  7. 轻松搭建docker应用的mesos集群

    7条命令在docker中部署Mesos集群 所有使用的Docker容器构建文件是有也.您可以在本地构建每个容器或只使用位于Docker Hub预构建的容器.下面的命令会自动下载所需的预建的容器为您服务 ...

  8. 【ELK】【docker】6.Elasticsearch 集群启动多节点 + 解决ES节点集群状态为yellow

    本章其实是ELK第二章的插入章节. 本章ES集群的多节点是docker启动在同一个虚拟机上 ====================================================== ...

  9. 使用docker搭建hadoop分布式集群

    使用docker搭建部署hadoop分布式集群 在网上找了非常长时间都没有找到使用docker搭建hadoop分布式集群的文档,没办法,仅仅能自己写一个了. 一:环境准备: 1:首先要有一个Cento ...

随机推荐

  1. Python学习之MacBook Pro中PyCharm安装pip以及itchat

    前言:Mac中自带的python没有用,自己安装了一个PyCharm,网上很多人说安装Itchat后会安装到自带的Python中去.本文记录怎么安装到自己安装的Python3.7中去.主要技术来源于h ...

  2. 3R - 单词数

    lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个问题. Input 有多组数据,每组一行,每组就 ...

  3. The best way to use Xtool X100 PAD2 for FEM programming

    Look here: XTOOL X100 PAD2 is new FEM programming. Possible to use Xtool X100 PAD2 for FEM programmi ...

  4. GUI学习之一——PyQt5初识

    我们在第〇篇里先演示了GUI的功能,其实Python有多个库是支持GUI编程的,python官网列出了大量的说明,其中包括了原生的tkinter 还有许多第三方库 Pyqt PySide wxPyth ...

  5. VS“新建网站”与“新建Asp.Net Web 应用程序”的区别

    WebApplication(新建Asp.Net Web 应用程序)编程模型的优点:针对大型网站 1.编译速度网站编译速度快,使用了增量编译模式,仅仅只有文件被修改后,这部分才会被增量编译进去. 2. ...

  6. Linux下配置yum

    [一]用本地文件创建本地yum源 1. 创建iso存放目录和挂载目录 mkdir /mnt/iso mkdir /mnt/cdrom 2. 将iso镜像文件上传到/mnt/iso文件夹下 3. 将/m ...

  7. JAVA 8 主要新特性 ----------------(二)JDK1.8优点概括

    一.JDK1.8优点概括 1.速度更快 由于底层结构和JVM的改变,使得JDK1.8的速度提高. 2.代码更少(增加了新的语法 Lambda 表达式)          增加新特性Lambda表达式的 ...

  8. Error:(18, 51) java: -source 1.5 中不支持 diamond 运算符 (请使用 -source 7 或更高版本以启用 diamond 运算符)

    问题:主要是因为jdk版本不一样 解决: 方法一:List<String> list=new ArrayList<Stirng>(); 方法二:重新安装jdk8的版本(安装和配 ...

  9. js 基本

    JavaScrip组成:1.ECMAScrip --核心2.DOM 文档对象模型3.BOOM 浏览器对象模型 JavaScrip写法分类:1.内联式写在标签内以属性为表现:2.内嵌式以script标签 ...

  10. Ocelot使用

    1.在网关项目中通过nuget引入Ocelot 2.Startup.cs文件代码调整 using System; using System.Collections.Generic; using Sys ...