自建IDC后面简称own、阿里云机房ali、腾讯云机房tx
own机房:内网10.10.10.0/24,边界节点,10.10.10.100/101.xxx.80.xxx
ali机房:内网10.10.10.0/24,边界节点,10.10.10.100/xxx.43.xxx.50
tx机房:内网10.10.10.0/24,边界节点,10.10.10.100/xxx.159.xxx.35
1、server、client节点部署
所有节点的consul服务均由supervisord守护管理。
idc机房配置3个server模式的节点,其它的均是client模式的节点,server和client配置各举例一个
server模式:(边界server节点的配置稍有不同,后面详细介绍):

1
2
3
4
5
6
7
8
9
10
11
12
[program:consul_server]
command=/usr/local/consul/bin/consul agent -server -bootstrap-expect 3 -data-dir /usr/local/consul/data/ -config-dir /usr/local/consul/config/ -node=own-server02 -bind=10.10.10.105 -dc=xxx-own
process_name=%(process_num)s
numprocs=1
directory=/usr/local/consul/bin/
autostart=true
autorestart=true
startsecs=1
redirect_stderr=true
stdout_logfile=/opt/log/consul/consul_server.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=5

client模式:

1
2
3
4
5
6
7
8
9
10
11
12
[program:consul_client]
command=/usr/local/consul/bin/consul agent -data-dir /usr/local/consul/data/ -node=own-client04 -bind=10.10.10.214 -config-dir=/usr/local/consul/config/ -dc=xxx-own
process_name=%(process_num)s
numprocs=1
directory=/usr/local/consul/bin/
autostart=true
autorestart=true
startsecs=1
redirect_stderr=true
stdout_logfile=/opt/log/consul/consul_client.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=5

ali、tx机房的server、client节点配置类似,有区别的参数就是-dc、-bind、-node即所属的数据中心、用于集群通信的监听ip、节点名称。
每次添加一个新的节点后,consul join加入到本地集群已有的任意一个节点即可加入这个集群(这个动作可以做到批量装机里面)。

2、集群之间的通信设置
每个集群选取一个处于server模式的节点作为边界节点,配置与集群内的其它server模式的节点稍有差异:

1
2
3
4
5
6
7
8
9
10
11
12
[program:consul_server]
command=/usr/local/consul/bin/consul agent -server -bootstrap-expect 3 -advertise-wan=101.xxx.80.xxx -data-dir /usr/local/consul/data/ -config-dir /usr/local/consul/config/ -node=own-server03 -dc=xxxx-own
process_name=%(process_num)s
numprocs=1
directory=/usr/local/consul/bin/
autostart=true
autorestart=true
startsecs=1
redirect_stderr=true
stdout_logfile=/opt/log/consul/consul_server.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=5

相比于其它server模式节点,需要指定-advertise-wan参数。如果不指定该参数,consul join -wan加入一个集群的时候,默认使用的是内外ip(节点环境是有内外网两个以上ip),造成集群之间通信失败(如果集群之间的内网没有互通)。
每个边界节点将-advertise-wan设置成公网ip,用于集群之间的通信。
如果边界节点开启了防火墙,需要将对方的ip地址加入白名单,或者将TCP/UDP的8302端口加入彼此的白名单。
最后任意一个边界节均可以查看到各个边界节点状态信息:

1
2
3
4
5
6
$ consul members -wan
Node Address Status Type Build Protocol DC
own-server02.xxxx-own 101.xxx.80.xxx:8302 alive server 0.x.x 2 xxxx-own
ali-server03.xxxx-ali xxx.43.xxx.50:8302 alive server 0.x.x 2 xxxx-ali
tx-server02.xxxx-tx xxx.159.xxx.35:8302 alive server 0.x.x 2 xxxx-tx
$

3、集群UI管理界面设置
将官方提供的ui界面文件部署在任意一个边界节点上,可以访问到任何一个集群的节点状态。客户端(http、dns、rpc)默认监听地址是127.0.0.1,访问ui的端口是http的8500端口,如果不设置客户端监听ip,需要一个代理(nginx)将本地的8500端口转发到外网,也可以直接指定client的监听ip:

1
2
3
4
5
6
7
8
9
10
11
12
[program:consul_server]
command=/usr/local/consul/bin/consul agent -server -bootstrap-expect 3 -advertise-wan=101.xxx.80.xxx -data-dir /usr/local/consul/data/ -config-dir /usr/local/consul/config/ -node=own-server03 -ui-dir /usr/local/consul/web/ -bind=10.10.10.100 -client=0.0.0.0 -dc=xxxx-own
process_name=%(process_num)s
numprocs=1
directory=/usr/local/consul/bin/
autostart=true
autorestart=true
startsecs=1
redirect_stderr=true
stdout_logfile=/opt/log/consul/consul_server.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=5

参数-client用来指定client监听ip,处于安全考虑可以监听在内网10.10.10.100,但是consul命令默认访问的是127.0.0.1端口,故监听0.0.0.0。配置成功后可以看到各个集群之间的状态:

----------------本文结束  感谢阅读----------------

consul多数据中心搭建 【h】的更多相关文章

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

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

  2. Docker + Consul 多数据中心模拟

    Docker + Consul 多数据中心模拟 1. dc1搭建 docker run -d --name node1 -h node1 progrium/consul -server -bootst ...

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

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

  4. 【Consul】多数据中心

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

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

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

  6. 8分钟学会Consul集群搭建及微服务概念

    Consul介绍: Consul 是由 HashiCorp 公司推出的开源软件,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与 ...

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

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

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

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

  9. consul集群搭建以及ACL配置

    由于时间匆忙,要是有什么地方没有写对的,请大佬指正,谢谢.文章有点水,大佬勿喷这篇博客不回去深度的讲解consul中的一些知识,主要分享的我在使用的时候的一些操作和遇见的问题以及解决办法.当然有些东西 ...

随机推荐

  1. requireJS的基本使用

    requireJS的基本使用 一.总结 一句话总结: requireJS是js端模块化开发,主要是实现js的异步加载,和管理模块之间的依赖关系,便于代码的编写和维护 1.页面加载的js文件过多的缺点是 ...

  2. Python开发应用之-SQL 建索引的几大原则

       SQL 建索引的几大原则: 最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>.<.between.like)就停止匹配,比如a = 1 and b = ...

  3. SparkSQL-通过JDBC读写mysql数据库

    object JdbcDatasourceTest { def main(args: Array[String]): Unit = { val spark = SparkSession .builde ...

  4. SringBoot启动报日志配置错误-logback检测异常

    最近在启动项目的时候,报错,报错的原因是springBoot日志配置文件不对. 由于自己是刚接触springboot,是同事帮忙解决的,自己非常感谢! 先总结如下: 1.首先,找到logback-sp ...

  5. [Codeforces Educational Round 71]Div. 2

    总结 手速场...像我这种没手速的就直接炸了... 辣鸡 E 题交互,少打了个 ? 调了半个小时... 到最后没时间 G 题题都没看就结束了...结果早上起来被告知是阿狸的打字机...看了看题一毛一样 ...

  6. 优雅关闭web服务的方式

    优雅关闭web服务 DBHelper, err = gorm.Open("mysql", "root:root@(115.159.59.129:3306)/test?ch ...

  7. JS 不声明第三个变量的情况下实现两数变换

    1. var a = 1; var b = 2; a = a + b; b = a - b; a = a - b; console.log(a); console.log(b); 2. var a = ...

  8. 守护进程daemon.c

    它的特点是:•不占用控制终端(后台运行)•独立于控制终端•周期性运行 #include<stdio.h>#include<unistd.h>#include<fcntl. ...

  9. gulp+webpack多页应用开发,webpack仅处理打包js

    项目背景:一个综合网站,开发模式为后端嵌套数据,前端开发静态页面和部分组件. 问题:gulp任务处理自动刷新.sass编译等都是极好的.但是对于js的处理并不是很好,尤其是项目需要开发组件时候,如评论 ...

  10. 微信小程序 movable-view组件应用:可拖动悬浮框_返回首页

    1. movable-view组件具体内容可参考官网:微信官方文档 2. demo参考:https://github.com/ChinaFanny/YFWeappMovableView 运行效果 核心 ...