Docker + Consul 多数据中心模拟
Docker + Consul 多数据中心模拟
1. dc1搭建
docker run -d --name node1 -h node1 progrium/consul -server -bootstrap-expect 3
JOIN_IP="$(docker inspect -f '{{.NetworkSettings.IPAddress}}' node1)"
docker run -d --name node2 -h node2 progrium/consul -server -join $JOIN_IP
docker run -d --name node3 -h node3 progrium/consul -server -join $JOIN_IP
docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp --name node4 -h node4 progrium/consul -join $JOIN_IP
进入node1容器,执行命令 consul members,命令行展示结果如下:
e31c5329d0f6:/bin # ./consul members
Node Address Status Type Build Protocol DC
dc1-dc2 172.17.0.9:8301 alive server 0.7.1 2 dc1
node1 172.17.0.2:8301 alive server 0.5.2 2 dc1
node2 172.17.0.3:8301 alive server 0.5.2 2 dc1
node3 172.17.0.4:8301 alive server 0.5.2 2 dc1
node4 172.17.0.5:8301 alive client 0.5.2 2 dc1
2. dc2 搭建
采用最新consul搭建(目前最新版为0.7.1)
./consul agent -server -bootstrap-expect 3 -node=dragon-server-root -datacenter=dc2 -data-dir=/data
./consul agent -server -node=dragon-server-two -datacenter=dc2 -data-dir=/data -join=172.17.0.6
./consul agent -server -node=dragon-server-three -datacenter=dc2 -data-dir=/data -join=172.17.0.6
进入node1容器,执行命令 consul members,命令行展示结果如下:
f1aff93c9d44:/bin # ./consul members
Node Address Status Type Build Protocol DC
dragon-server-root 172.17.0.6:8301 alive server 0.7.1 2 dc2
dragon-server-three 172.17.0.8:8301 alive server 0.7.1 2 dc2
dragon-server-two 172.17.0.7:8301 alive server 0.7.1 2 dc2
3. 多数据中心关联
前两节搭建了两个独立的数据中心,两个数据中心是独立的,相互之间并没有任何联系。
选取dragon-server-three 和 node1 为临界容器,进入dragon-server-three,执行命令:./consul join -wan 172.17.0.2。完成后,执行./consul members -wan
Node Address Status Type Build Protocol DC
dc1-dc2.dc1 172.17.0.9:8302 alive server 0.7.1 2 dc1
dragon-server-root.dc2 172.17.0.7:8302 alive server 0.7.1 2 dc2
dragon-server-three.dc2 172.17.0.8:8302 alive server 0.7.1 2 dc2
dragon-server-two.dc2 172.17.0.7:8302 alive server 0.7.1 2 dc2
node1.dc1 172.17.0.2:8302 alive server 0.5.2 2 dc1
至此两个数据中心已经发生联系。访问urlhttp://192.168.1.100:8500/ 可以看到两个数据中心dc1,dc2
4. 附录(shell脚本如下:)
docker run -d --name node1 -h node1 progrium/consul -server -bootstrap-expect 3
JOIN_IP="$(docker inspect -f '{{.NetworkSettings.IPAddress}}' node1)"
echo "node1:" $JOIN_IP
docker run -d --name node2 -h node2 progrium/consul -server -join $JOIN_IP
echo "node2:" $(docker inspect -f '{{.NetworkSettings.IPAddress}}' node2)
docker run -d --name node3 -h node3 progrium/consul -server -join $JOIN_IP
echo "node3:" $(docker inspect -f '{{.NetworkSettings.IPAddress}}' node3)
docker run -d -p 8400:8400 -p 8500:8500 -p 8600:53/udp --name node4 -h node4 progrium/consul -join $JOIN_IP
echo "node4:" $(docker inspect -f '{{.NetworkSettings.IPAddress}}' node4)
docker run --name dc1-dc2 -d --entrypoint /bin/consul opensuse-consul agent -node=dc1-dc2 -data-dir=/data -join=$JOIN_IP
echo "dc1-dc2:" $(docker inspect -f '{{.NetworkSettings.IPAddress}}' dc1-dc2)
docker run --name dragon-server-root -d --entrypoint /bin/consul opensuse-consul agent -server -bootstrap-expect 3 -node=dragon-server-root -datacenter=dc2 -data-dir=/data
JOIN_IP2="$(docker inspect -f '{{.NetworkSettings.IPAddress}}' dragon-server-root)"
echo "dragon-server-root:" $(docker inspect -f '{{.NetworkSettings.IPAddress}}' dragon-server-root)
echo $JOIN_IP2
docker run --name dragon-server-two -d --entrypoint /bin/consul opensuse-consul agent -server -node=dragon-server-two -datacenter=dc2 -data-dir=/data -join=$JOIN_IP2
echo "dragon-server-two:" $(docker inspect -f '{{.NetworkSettings.IPAddress}}' dragon-server-two)
docker run --name dragon-server-three -d --entrypoint /bin/consul opensuse-consul agent -server -node=dragon-server-three -datacenter=dc2 -data-dir=/data -join=$JOIN_IP2
echo "dragon-server-three:" $(docker inspect -f '{{.NetworkSettings.IPAddress}}' dragon-server-three)
docker exec -it dragon-server-root /bin/consul join -wan $JOIN_IP
echo $?
docker exec -it dragon-server-two /bin/consul join -wan $JOIN_IP
echo $?
docker exec -it dragon-server-three /bin/consul join -wan $JOIN_IP
echo $?
Docker + Consul 多数据中心模拟的更多相关文章
- 基于 Docker 搭建 Consul 多数据中心集群
本文介绍了在 Windows 10 上基于 Docker 搭建 Consul 多数据中心集群的步骤,包括 Consul 镜像的拉取和容器的创建,每个数据中心对应服务端节点和客户节点的创建,节点之间相互 ...
- Consul 多数据中心下的服务注册发现与配置共享
1. Consul简介 Consul是HashiCorp公司推出的开源软件,它提供了一套分布式高可用可横向扩展的解决方案,能为微服务提供服务治理.健康检查.配置共享等能力. Eurake2.x ...
- consul多数据中心搭建 【h】
自建IDC后面简称own.阿里云机房ali.腾讯云机房txown机房:内网10.10.10.0/24,边界节点,10.10.10.100/101.xxx.80.xxxali机房:内网10.10.10. ...
- 【Consul】多数据中心
Consul的一个关键特性是支持多数据中心.consul架构中提到是构建低耦合的多个数据中心,一个数据中心的网络连接问题或故障不在其他数据中心的可用性.每个数据中心都是独立运行,并且拥有私有的LAN ...
- SDN实验---Mininet实验(模拟多数据中心带宽实验)
补充:NameError: name 'buffer' is not defined >>> import sys >>> ,): ... buffer = mem ...
- consul异地多数据中心以及集群部署方案
consul异地多数据中心以及集群部署方案目的实现consul 异地多数据中心环境部署,使得一个数据中心的服务可以从另一个数据中心的consul获取已注册的服务地址 环境准备两台 linux服务器,外 ...
- Spring Cloud 微服务一:Consul注册中心
Consul介绍 Consul is a service mesh solution providing a full featured control plane with service disc ...
- Ubuntu & Docker & Consul & Fabio & ASP.NET Core 2.0 微服务跨平台实践
相关博文: Ubuntu 简单安装 Docker Mac OS.Ubuntu 安装及使用 Consul Consul 服务注册与服务发现 Fabio 安装和简单使用 阅读目录: Docker 运行 C ...
- Docker & Consul & Fabio & ASP.NET Core 2.0 微服务跨平台实践
相关博文: Ubuntu 简单安装 Docker Mac OS.Ubuntu 安装及使用 Consul Consul 服务注册与服务发现 Fabio 安装和简单使用 阅读目录: Docker 运行 C ...
随机推荐
- Selenium2+python自动化17-JS处理滚动条
前言 selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了. 常见场景: 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的. 这时候 ...
- sqlserver 分区表
我们知道很多事情都存在一个分治的思想,同样的道理我们也可以用到数据表上,当一个表很大很大的时候,我们就会想到将表拆 分成很多小表,查询的时候就到各个小表去查,最后进行汇总返回给调用方来加速我们的查询速 ...
- linux开机启动
开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程.分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径. 启动第一步--加载BIOS 当你打开计算机电源,计算机 ...
- 在sqlserver存储过程中给in参数传带逗号值的办法,如传'1','2','3'这样的
最近在一项目修改中,要在存储过程中给in参数传值,语句写的也对,但怎么执行都得不出结果,如果把这语句直接赋值.执行,却能得出结果,很是奇怪,如: 直接执行select schoolname from ...
- 亿级Web系统的高容错性实践
亿级Web系统的高容错性实践 背景介绍 大概三年前,我在腾讯负责的活动运营系统,因为业务流量规模的数倍增长,系统出现了各种各样的异常,当时,作为开发的我,7*24小时地没日没夜处理告警,周末和凌晨也经 ...
- Python使用中文注释和输出中文(原创)
刚开始学习python,需要在Python中注释中文和输出中文,现在开始尝试: 仅为初步学习参考,高手请绕行. -------------------------------------------- ...
- tp 中关于大小写的问题
ThinkPHP3.2.3升级的若干问题和注意事项(持续更新) 现把ThinkPHP3.2.2在升级到3.2.3的过程中需要注意和可能的问题整理如下: (无论如何,在升级之前请确认备份) 1.首先3. ...
- Oracle中用一条Sql实现任意的行转列拼接 多行拼接
表结构和数据如下(表名Test): NO VALUE NAME 1 a 测试1 1 b 测试2 1 c 测试3 1 d 测试4 2 e 测试5 4 f 测试6 4 g 测试7 Sql语句: selec ...
- xcode添加音效
xcode添加背景音乐/音效 背景音乐:http://www.cnblogs.com/jiayongqiang/p/5476069.html 音效: 一.介绍: 又称“短音频”,通常在程序中的播放时长 ...
- Android 隐藏软键盘方法
第一种:public static void hideInput(Activity activity) { View curFoc = activity.getCurrentFocus(); if ( ...