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 ...
随机推荐
- 重置mysql数据库密码相关方法
方法一: 在my.ini的[mysqld]字段加入:skip-grant-tables重启mysql服务,这时的mysql不需要密码即可登录数据库 然后进入mysqlmysql>use mysq ...
- UVALive 5010 Go Deeper 2sat
二分答案,2sat判定. //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio& ...
- throw er; Unhandled 'error' event Error: listen EADDRINUSE的解决方法
先把错误贴出来,如下: 出现此问题的原因是端口被占用,解决方法如下: 查看程序执行用到的端口的运行情况,本例是端口号3000; 占用该端口3000的进程是node,pid为244156,用kill命令 ...
- 【Java学习笔记】HashMap子接口---LinkedHashMap
特点: 存入元素的顺序 与 取出元素的顺序相同(与LinkedHashSet类似) import java.util.HashMap; import java.util.Iterator; i ...
- Tomcat部署方式
tomcat中三种部署项目的方法 第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加: <Context path="/he ...
- hdu 4107
Gangster Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- HTTP 头部
通用头域(即通用头) 通用头域包含请求和响应消息都支持的头域,通用头域包含Cache-Control. Connection.Date.Pragma.Transfer-Encoding.Upgra ...
- (转) Active Record
ActiveRecord是什么:1. 每一个数据库表对应创建一个类.类的每一个对象实例对应于数据库中表的一行记录; 通常表的每个字段在类中都有相应的Field;2. ActiveRecord同时负责把 ...
- PYTHON第二天
PYTHON之路 4.注释 Python开发规范:每一行不能超过80个字符 # : 代表注释当行 ‘’’ 上下两行 , 三个英文字符的引号,代表注释某一段代码 ‘’’ 知识点用户输入: PYth ...
- 解决hibernate中的懒加载(延迟加载)问题
解决hibernate中的懒加载(延迟加载)问题 我们在开发的时候经常会遇到延迟加载问题,在实体映射时,多对一和多对多中,多的一样的属性默认是lazy="true"(即,默认是 ...