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 多数据中心模拟的更多相关文章

  1. 基于 Docker 搭建 Consul 多数据中心集群

    本文介绍了在 Windows 10 上基于 Docker 搭建 Consul 多数据中心集群的步骤,包括 Consul 镜像的拉取和容器的创建,每个数据中心对应服务端节点和客户节点的创建,节点之间相互 ...

  2. Consul 多数据中心下的服务注册发现与配置共享

    1. Consul简介   Consul是HashiCorp公司推出的开源软件,它提供了一套分布式高可用可横向扩展的解决方案,能为微服务提供服务治理.健康检查.配置共享等能力.   Eurake2.x ...

  3. consul多数据中心搭建 【h】

    自建IDC后面简称own.阿里云机房ali.腾讯云机房txown机房:内网10.10.10.0/24,边界节点,10.10.10.100/101.xxx.80.xxxali机房:内网10.10.10. ...

  4. 【Consul】多数据中心

    Consul的一个关键特性是支持多数据中心.consul架构中提到是构建低耦合的多个数据中心,一个数据中心的网络连接问题或故障不在其他数据中心的可用性.每个数据中心都是独立运行,并且拥有私有的LAN ...

  5. SDN实验---Mininet实验(模拟多数据中心带宽实验)

    补充:NameError: name 'buffer' is not defined >>> import sys >>> ,): ... buffer = mem ...

  6. consul异地多数据中心以及集群部署方案

    consul异地多数据中心以及集群部署方案目的实现consul 异地多数据中心环境部署,使得一个数据中心的服务可以从另一个数据中心的consul获取已注册的服务地址 环境准备两台 linux服务器,外 ...

  7. Spring Cloud 微服务一:Consul注册中心

    Consul介绍 Consul is a service mesh solution providing a full featured control plane with service disc ...

  8. Ubuntu & Docker & Consul & Fabio & ASP.NET Core 2.0 微服务跨平台实践

    相关博文: Ubuntu 简单安装 Docker Mac OS.Ubuntu 安装及使用 Consul Consul 服务注册与服务发现 Fabio 安装和简单使用 阅读目录: Docker 运行 C ...

  9. Docker & Consul & Fabio & ASP.NET Core 2.0 微服务跨平台实践

    相关博文: Ubuntu 简单安装 Docker Mac OS.Ubuntu 安装及使用 Consul Consul 服务注册与服务发现 Fabio 安装和简单使用 阅读目录: Docker 运行 C ...

随机推荐

  1. ALV界面将可编辑字段值保存到内表中

    具体代码如下: data: lr_grid type ref to cl_gui_alv_grid.      data: l_valid type c.      read table gt_exc ...

  2. 浅析Java内存模型

    概述 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节.此处的变量是线程共享的,存在竞争问题的. Java内存模型规定了所有的变量 ...

  3. unity3d 游戏插件 溶解特效插件 - Dissolve Shader

    unity3d 游戏插件 溶解特效插件 - Dissolve Shader   链接: https://pan.baidu.com/s/1hr7w39U 密码: 3ed2

  4. 关于 webapi ajax进度条信息设置

    1.Web.config 设置跨域 <httpProtocol> <customHeaders> <add name="Access-Control-Allow ...

  5. 使用事件等待句柄EventWaitHandler 实现生产者、消费者队列

    using System; using System.Threading; using System.Collections.Generic; class ProducerConsumerQueue ...

  6. 委托 在其他类中修改form中的控件属性

    通常情况下,我们需要在其他业务类中将提示信息时时显示到主界面上,可以通过以下方式 Form1.cs using System; ; i < ; i++) {                 cb ...

  7. 《HTML5秘籍》学习总结--2016年7月24日

    前段时间因为工作中看到同事使用了一个type为date的<input>元素,直接就形成了一个日期选择的表单控件,当时觉得很神奇,以为是什么插件,就问了同事是怎么做出来的,同事告诉我这是HT ...

  8. 【OpenGL】VS2010环境配置 [转]

    基于OpenGL标准开发的应用程序运行时需有动态链接库OpenGL32.DLL.Glu32.DLL,这两个文件在安装Windows NT时已自动装载到C:\WINDOWS\SYSTEM32目录下(这里 ...

  9. C复数的四则运算

    #include<stdio.h> void judge(int True,int Fake) {     if (True == 0)     {         if (Fake == ...

  10. 数独求解 DFS && DLX

    题目:Sudoku 题意:求解数独.从样例和结果来看应该是简单难度的数独 思路:DFS 设置3个数组,row[i][j] 判断第i行是否放了j数字,col[i][j] 判断第i列是否放了j数字.squ ...