使用docker-compose快速构建集群示例(一)
一、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"
这里注意以下几点:
- network_mode设置为host,否则在创建集群时,会一直等待而不会创建成功
- 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快速构建集群示例(一)的更多相关文章
- 使用 Docker Compose 快速构建 TiDB 集群
本文档介绍如何在单机上通过 Docker Compose 快速一键部署一套 TiDB 测试集群.Docker Compose 可以通过一个 YAML 文件定义多个容器的应用服务,然后一键启动或停止. ...
- [phvia/dkc] Docker Compose 快速构建(LNMP+Node)运行环境
快速构建(LNMP+Node)运行环境. dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose 准备 安装 docker 选择1) 从 ...
- Docker 0x13: Docker 构建集群/服务/Compose/分布式服务栈
目录 Docker 构建集群/服务/Compose/分布式服务栈 集群 初始化集群服务 安装docker-machine 管理节点和工作节点 docker集群构建完成 集群中部署应用 集群服务访问特性 ...
- 利用Docker Compose快速搭建本地测试环境
前言 Compose是一个定义和运行多个Docker应用的工具,用一个YAML(dockder-compose.yml)文件就能配置我们的应用.然后用一个简单命令就能启动所有的服务.Compose编排 ...
- Docker 部署 RocketMQ Dledger 集群模式( 版本v4.7.0)
文章转载自:http://www.mydlq.club/article/97/ 系统环境: 系统版本:CentOS 7.8 RocketMQ 版本:4.7.0 Docker 版本:19.03.13 一 ...
- Docker 搭建 Redis Cluster 集群环境
使用 Docker 搭建 Redis Cluster,最重要的环节就是容器通信的问题,这一块我们在之前的文章中已经给大家解决了<Docker 网络模式详解及容器间网络通信>,本篇文章主要练 ...
- 轻松搭建docker应用的mesos集群
7条命令在docker中部署Mesos集群 所有使用的Docker容器构建文件是有也.您可以在本地构建每个容器或只使用位于Docker Hub预构建的容器.下面的命令会自动下载所需的预建的容器为您服务 ...
- 【ELK】【docker】6.Elasticsearch 集群启动多节点 + 解决ES节点集群状态为yellow
本章其实是ELK第二章的插入章节. 本章ES集群的多节点是docker启动在同一个虚拟机上 ====================================================== ...
- 使用docker搭建hadoop分布式集群
使用docker搭建部署hadoop分布式集群 在网上找了非常长时间都没有找到使用docker搭建hadoop分布式集群的文档,没办法,仅仅能自己写一个了. 一:环境准备: 1:首先要有一个Cento ...
随机推荐
- 【c++】内存检查工具Valgrind介绍,安装及使用以及内存泄漏的常见原因
转自:https://www.cnblogs.com/LyndonYoung/articles/5320277.html Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,它包 ...
- 46-web页面登入前和登入后控制
可以将user存入session中,然后在前端根据能否取到user,来判断是否登入 <c:if test="${user == null }"> <li clas ...
- 如何在3GPP下载协议
以下载AT Commands协议为例. 1. 打开3GPP网址:http://www.3gpp.org/ 2. 打开Specification-Specification Numbering,如图.去 ...
- 解决:AttributeError: module 'requests' has no attribute 'post'”
今天学习Requests库,当用pip install requests安装后,写了一段代码报错:AttributeError: module ‘requests‘ has no attribute ...
- 七、eclipse添加离线约束,使不联网也能有一些代码的提示,例如dubbo
eclipse添加离线约束,使不联网也能有一些代码的提示,例如dubbo 1.将dubbo.xsd文件放到一个无中文目录下 2.eclipse->windows->preferences- ...
- 二、putty的下载安装和基本使用方法教程
转载自:https://baijiahao.baidu.com/s?id=1597811787635071952&wfr=spider&for=pc PuTTY是一款开源(Open S ...
- leveldb 学习记录(四)Log文件
前文记录 leveldb 学习记录(一) skiplistleveldb 学习记录(二) Sliceleveldb 学习记录(三) MemTable 与 Immutable Memtablelevel ...
- java多线程系列11 juc包下的队列
队列分为两类 阻塞队列 BlockingQueue提供如下两个支持阻塞的方法: (1)put(E e): 尝试把e元素放如BlockingQueue中,如果该队列的元素已满,则阻塞该线程. ...
- win7启动时怎么自动进入桌面
1.按Win+R组合键,打开“运行”对话框.(Win是键盘下方左右两边的两个印有微软标志的键) 2.Windows XP/2003/2008/2008R2输入"control userpas ...
- nginx图解
1.Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理. 这里我给来2张图,对正向代理与反响代理做个诠释,具体细节,大家可以翻阅下资料. Nginx在做反向代理时,提供性能稳定, ...