consul: 集群搭建和数据中心通信

【译】Consul 1.4:多数据中心服务网络 NOV 14 2018 THE CONSUL TEAM我们很高兴地宣布将将可广泛使用。Consul 是一个分布式服务网格, 可用于在任何运行平台以及公共或私有云之间的连接、安全和配置服务。此版本引入了一个完全重新设计的 ACL系统和第一个具有多数据中心支持的企业级Consul Connect 功能。 阅读详情

基于 docker-compose.yml 搭建


1 )docker-compose.yml 的配置

version: '3'
services:
  server1:
    image: consul:latest
    command: "agent -server -config-file=/consul/config/consul.json -node=consul-server1 -bootstrap-expect=5"
    volumes:
      - ./data/server1:/consul/data
      - ./config:/consul/config
    networks:
      - light_network
  server2:
    image: consul:latest
    command: "agent -server -config-file=/consul/config/consul.json -node=consul-server2 -join=server1"
    volumes:
      - ./data/server2:/consul/data
      - ./config:/consul/config
    depends_on:
      - server1
    networks:
      - light_network
  server3:
    image: consul:latest
    command: "agent -server -config-file=/consul/config/consul.json -node=consul-server3 -join=server1"
    volumes:
      - ./data/server3:/consul/data
      - ./config:/consul/config
    depends_on:
      - server1
    networks:
      - light_network
  server4:
    image: consul:latest
    command: "agent -server -config-file=/consul/config/consul.json -node=consul-server4 -join=server1"
    volumes:
      - ./data/server4:/consul/data
      - ./config:/consul/config
    depends_on:
      - server1
    networks:
      - light_network
  server5:
    image: consul:latest
    command: "agent -server -config-file=/consul/config/consul.json -node=consul-server5 -join=server1"
    volumes:
      - ./data/server5:/consul/data
      - ./config:/consul/config
    depends_on:
      - server1
    networks:
      - light_network
  client1:
      image: consul:latest
      command: "agent -config-file=/consul/config/consul.json -node=consul-client1 -join=server1"
      volumes:
       - ./data/client1:/consul/data
       - ./config:/consul/config
      depends_on:
        - server1
        - server2
        - server3
        - server4
        - server5
      networks:
        - light_network
  client2:
      image: consul:latest
      command: "agent -config-file=/consul/config/consul.json -node=consul-client2 -join=server1"
      volumes:
        - ./data/client2:/consul/data
        - ./config:/consul/config
      depends_on:
        - server1
        - server2
        - server3
        - server4
        - server5
      networks:
        - light_network

networks:
  light_network:
    external: true
  • 这里是简洁版的,最快搭建方式,这里创建了5台服务器,2台客户端
  • 这里挂载了consul 的数据,暂且忽略日志的配置,给consul 配置意义不是很大
  • 相关data目录的创建,可以再 server1 下使用命令来创建,这里省略了配置
  • 之后,2台客户端可以在nginx上配置一个负载均衡来提供一个统一的地址
  • 这里不暴露接口,是因为假设有一个nginx集群也在网络之内,基于nginx来暴露
  • 这里共用配置文件,但数据文件,每个都独立
  • 网络也是,基于 light_network,也是提前创建的,这里不再赘述

2 )consul.json

{  
  "datacenter": "x-project-dc1",
  "data_dir": "/consul/data",
  "log_level": "INFO",
  "client_addr": "0.0.0.0",
  "bind_addr": "0.0.0.0",
  "ui": true
}
  • 这里定义了 datacenter, 定义了服务端和客户端通用的配置
  • 不同的配置,都写在 command 配置中
  • 注意,服务端和客户端使用同一个 datacenter,否则将会出现错误

3 )运行起来并查看

  • $ docker compose up -d
  • $ docker compose ps -a
  • 如果 之前在同一个网络,或已打通的网络中已经配置了 两个客户端的nginx代理负载,假设暴露的是 8500
  • 那么访问 localhost:8500 即可访问
  • 这时候,单个的数据中心已经搭建完毕
  • 其他配置方案,不再举例,最终达成目的即可

4 )查看具体成员信息

  • docker exec -it consul-client1-1 consul members

    Node            Address          Status  Type    Build   Protocol  DC             Partition  Segment
    consul-server1  172.28.0.2:8301  alive   server  1.11.1  2         x-project-dc1  default    <all>
    consul-server2  172.28.0.3:8301  alive   server  1.11.1  2         x-project-dc1  default    <all>
    consul-server3  172.28.0.5:8301  alive   server  1.11.1  2         x-project-dc1  default    <all>
    consul-server4  172.28.0.4:8301  alive   server  1.11.1  2         x-project-dc1  default    <all>
    consul-server5  172.28.0.6:8301  alive   server  1.11.1  2         x-project-dc1  default    <all>
    consul-client1  172.28.0.7:8301  alive   client  1.11.1  2         x-project-dc1  default    <default>
    consul-client2  172.28.0.8:8301  alive   client  1.11.1  2         x-project-dc1  default    <default>
    
  • 这时候,可以看到 5台 server, 2台 client

5 )源码地址

多数据中心配置


1 ) 概述

  • 为了实现跨数据中心的通信和复制,您需要配置Consul的WAN Gossip层

  • 这通常涉及到设置gossip_wan相关的配置项

  • 然而,在单机部署的场景下,通常不需要显式配置WAN Gossip层

  • 因为每个数据中心内部只有一个Consul服务器节点

  • 但如果您计划将来扩展集群或连接多个数据中心,则需要配置WAN Gossip层

  • 对于当前的两台机器和单机部署的场景,每台机器上的Consul实例已经是其数据中心内的唯一服务器节点,因此它们不会通过WAN Gossip层进行通信

  • 但如果未来您想要连接这两个数据中心,您需要在每个Consul的配置文件中添加WAN Gossip相关的配置

  • 例如指定WAN Gossip的地址列表(gossip_wan)和WAN Gossip的端口(默认为8302)

  • 如果您将来想要连接dc1和dc2,您可能需要 dc1 的 server.json 中添加类似以下的配置

    "gossip_wan": {  
      "address": "机器A的WAN IP地址",  
      "port": 8302  
    },  
    "retry_join_wan": ["机器B的WAN IP地址"]
    
  • 同样的,并在 dc2 的 server.json 中添加指向dc1的配置,这里不再赘述

  • 注意,上述配置中的“WAN IP地址”指的是机器在广域网中可访问的IP地址

  • 在实际环境中,您需要根据网络架构和安全性要求来配置这些地址

2 )关于 server.json 与 client.json 中的多数据中心配置

  • 在多数据中心的Consul配置中,client和server的配置会有所不同,具体取决于它们在架构中的角色和功能。

  • 对于server节点,配置gossip_wan和retry_join_wan通常是必要的。

    • gossip_wan用于配置WAN(广域网)Gossip池,这是跨数据中心之间通信的关键部分
    • 它确保数据中心之间的Consul服务器能够相互发现和通信。retry_join_wan则用于指定在WAN环境中尝试加入的Consul服务器地址列表,以及在首次尝试失败时进行重试
  • 然而,对于client节点,情况可能有所不同

    • Client节点通常不需要跨数据中心通信,它们主要与本地数据中心的server节点通信
    • 因此,在大多数情况下,client节点不需要配置gossip_wan和retry_join_wan
    • 它们主要关注与本地server节点的连接和注册服务
  • 注意,具体的配置取决于你的网络架构和需求

    • 在某些特殊情况下,你可能需要在client节点上启用某些跨数据中心的通信功能
    • 这时,你可能需要相应地配置gossip_wan和retry_join_wan
  • 总之,是否需要在client和server上配置gossip_wan和retry_join_wan取决于你的具体需求和架构

  • 在大多数情况下,server节点需要这些配置来确保跨数据中心的通信,而client节点则主要关注与本地server节点的通信

3 ) 具体配置示例

{
  "datacenter": "my-datacenter",
  "data_dir": "/consul/data",
  "log_level": "INFO",
  "node_meta": {
    "role": "production"
  },
  "server": true
  "ui": true,
  "telemetry": {  
    "prometheus_retention_time": "30d",  
    "disable_hostname": true  
  },  
  "gossip_config": {  
    "name": "wan",  
    "bind": "0.0.0.0",  
    "port": 8302,  
    "probe_interval": "10s",  
    "probe_timeout": "5s",  
    "suspicion_mult": 7,  
    "gossip_interval": "1s",  
    "udp_flood_interval": "100ms",  
    "encrypt": "", // 这里可以放置gossip的加密密钥,如果启用了加密的话  
    "tls": {  
      "enabled": false,  
      "ca_file": "",  
      "ca_path": "",  
      "cert_file": "",  
      "key_file": "",  
      "verify_incoming": false,  
      "verify_outgoing": false  
    }  
  },  
  "retry_join_wan": [  
    "provider=aws tag_key=ConsulCluster tag_value=production",  
    "192.168.1.10",  
    "192.168.1.11",  
    "192.168.1.12"  
  ],  
  "retry_interval_wan": "30s",  
  "retry_max_wan": 3  
}
  • 上述示例仅供参考,随着 consul 架构升级,可能一些配置会失效
  • 如果需要区分客户端和服务端的配置,可以使用环境变量配置,具体不再赘述
consul异地多数据中心以及集群部署方案 consul异地多数据中心以及集群部署方案 目的 实现consul 异地多数据中心环境部署,使得一个数据中心的服务可以从另一个数据中心的consul获取已注册的服务地址 环境准备 两台 linux服务器,外网可以互相连通,都需要开放服务器的8500,8300,8301(可选择开放或者不开放),8302端口 为了简化流程,我们每台服务器上只部署一个consul server ,不部署集群 端... 阅读详情

相关推荐

consul集群搭建教程 - 多机集群

搭建consul集群

papaya的博客 2889

Consul 集群部署

Consul架构说明 上图是官网提供的一个事例系统图,图中的Server是consul服务端高可用集群,Client是consul客户端。consul客户端不保存数据,客户端将接收到的请求转发给响应的Server端。Server之间通过局域网或广域网通信实现数据一致性。每个Server或Client都是一个consul agent。 Consul集群间使用了GOSSIP协议通...

a624575745856085的博客 862

微服务之 Consul 单机版到集群搭建详细步骤

一、简介 了解微服务的朋友应该不陌生这个组件,Consul 是一种服务网络解决方案,提供服务注册、服务发现、健康检查等微服务架构系统中必不可少的功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建完整的服务网格。并且它还提供 web ui 界面,让使用者可以实时的了解系统中各服务的健康状态 二、单机版 consul 部署使用 首先需要下载 consul 的程序文件,有条件的小伙伴建议直接前往官网下载:https://www.consul.io/downloads.html ,无法下载官网的可

benarchen 的博客 2563

Consul多数据中心及数据同步

多数据中心1、搭建多数据中心在上一篇文章中,我们讲解了单数据中心的搭建流程,这边文章将在其基础之上构建多数据中心。我们另选一个region的两个节点,按照单数据中心的方式搭建好,然后执行...

m0_47495420的博客 4715

consul集群搭建教程 - 单机器集群

consul集群搭建流程

papaya的博客 1898

Docker-----compose搭建consul集群解析

文章目录前言一、Docker Compose简介二、Docker compose配置信息2.1、Docker compose 配置常用字段2.2、Dokcer compose 常用命令2.3、Docker compose 命令参数详解三、Dokcer 编排实验3.1、下载compose3.2、建Nginx 前言 一个大型的Docker组成的微服务应用中,容器的数量是非常庞大的,如果依赖传统的人工配置方式进行维护,对于开发和运维来说简直就是噩梦。Compose的出现正是为了解决这个问题。 一、Docker C

m0_50854537的博客 5691

consul配置参数大全、详解、总结

以下选项全部在命令行中指定。 -advertise- 通告地址用于更改我们通告给集群中其他节点的地址。默认情况下,-bind地址是通告的。但是,在某些情况下,可能存在无法绑定的可路由地址。这个标志使闲聊不同的地址来支持这一点。如果此地址不可路由,则节点将处于持续振荡状态,因为其他节点会将非可路由性视为故障。在Consul 1.0和更高版本中,这可以设置为go-sockaddr模板。 -advertise-wan- 广告WAN地址用于更改我们向通过WAN加入的服务器节点发布的地址。这也...

xwnxwn的专栏 3178

Camera tuning flow相机调试流程

相机调试流程分为三大模块:ProcessRaw处理原始数据(黑电平校正、阴影校正),3A实现自动控制(曝光/对焦/白平衡),ISP进行图像精加工(伽马校正、锐化降噪、色彩处理)。三个阶段环环相扣,前阶段为后阶段提供基础,最终输出画质优良且风格化的图像。

weixin_64706696的博客 1230

Consul 集群搭建

consul 集群搭建和遇到的问题解决

weixin_43917593的博客 1792

【正点原子STM32连载】第六十章 串口IAP实战:从Bootloader到APP的无缝升级

本文以正点原子STM32F103开发板为例,详细讲解了串口IAP(在应用编程)技术的实现原理与实战步骤。内容涵盖Bootloader与APP的分工、FLASH空间规划、核心代码解析以及Ymodem协议的应用,旨在帮助开发者掌握通过串口为嵌入式设备实现远程固件升级的关键技术,提升产品维护与迭代效率。

weixin_29161719的博客 448

《Kubernetes部署篇:基于x86_64+aarch64架构CPU+containerd一键离线部署容器版K8S1.33.3高可用集群》

《Kubernetes部署篇:基于x86_64+aarch64架构CPU+containerd一键离线部署容器版K8S1.33.3高可用集群》

东城绝神 1369

Consul学习(一)—— 集群搭建

Consul 下载地址:Downloads | Consul by HashiCorp 参数说明:Configuration | Consul by HashiCorp 一、介绍 Consul是HashiCorp公司推出的开源软件,通过 GO 语言编写,提供服务注册和发现、配置、多数据中心的高可用方案等能力,分布式一致方面采用 raft 算法 实现,并且很容易和 Spring Cloud 等微服务框架集成,使用起来非常的简单,具有简单、易用、可插排等特点。简而言之,Consul 提供...

qq_30341855的博客 5615

阿里云CDN HTTPS 证书配置流程

可以使用HTTPS方式访问资源,如果浏览器中URL旁边出现锁的HTTPS标识,表示HTTPS安全加速已生效。: 证书配置完成后,需要留意证书过期时间并在证书过期前手动配置新的证书。注意 ⚠️ 一定是需要复制 以下标识之间的内容。如果已在阿里云数字证书管理服务中购买了证书,请选择。,该证书将在阿里云数字证书管理服务中保存。如果使用第三方服务商签发的证书,请选择。第四步,在指定域名的左侧导航栏,单击。第二步,在左侧导航栏,单击。开关,并配置证书相关参数。页面,找到目标域名,单击。中选择已购买的证书。

w风雨无阻w的专栏 2211

Consul集群搭建看这篇就够了(consul cluster configuration )

Consul 是一种用于服务发现、配置和分布式一致性的开源工具和平台。它由 HashiCorp 公司开发和维护,旨在简化构建和维护分布式系统的任务。:Consul允许服务注册和发现。当服务启动时,它可以向Consul注册自己的位置和元数据。其他服务可以通过Consul查询来发现特定服务的位置,从而轻松实现服务之间的通信。:Consul可以周期性地对服务进行健康检查,以确保它们正常工作。如果服务不再健康,则Consul可以自动将其标记为不可用,并将流量路由到其他健康的实例。

别忘了微笑 4041

Transformer模型详解

​本文主要介绍Transformer系列,从基础到理论,对注意力机制进行总结并解释《Attention is all you need》,提出解决sequence to sequence问题的transformer模型,用全attention的结构代替了lstm,抛弃了之前传统的encoder-decoder模型必须结合cnn或者rnn的固有模式,只用attention。文章的主要目的是在减少计算量和提高并行效率的同时不损害最终的实验结果。

专注大数据与人工智能技术分享,欢迎私信加群互相学习! 5314

Playwright MCP:开启浏览器自动化的新篇章

在当今数字化时代,浏览器自动化技术在众多领域发挥着至关重要的作用,从简单的网页爬取到复杂的自动化测试,再到智能代理与网页的交互等场景,都离不开高效、可靠的浏览器自动化工具。而微软推出的项目,正是在这一领域的一次创新性探索,它为开发者带来了全新的视角和强大的功能支持。本文将深入探讨的概念、架构、代码示例、应用场景、注意事项以及未来发展方向,帮助读者全面了解这一前沿技术。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 5266

Linux部署Consul单机和集群

Consul是由HashiCorp基于Go语言开发的支持多数据中心的分布式高可用服务发布和注册软件, 采用Raft算法保持服务的一致性, 且支持健康检查,Consul和Eureka的侵入式服务中心不同的是, Consul是以独立的软件形式运行, 对项目侵入性小, 更方便部署。Consul是微服务架构中,解决服务发现、配置中心的分布式中间件。

qq_34360059的博客 2922

ROS从入门到精通0-4:VSCode 搭建 ROS 工程环境

为了提高开发效率,可以先安装集成开发工具和使用方便的工具,本教程用VSCode搭建ROS工程环境

FRIGIDWINTER的博客 1万+

【微服务| Consul】使用docker搭建consul集群

搭建一个三节点的consul集群,一般得有同网段的3个不同的ip地址作为consul集群的内部通信地址,这对于处于尝鲜阶段的同学不太友好(我没有这么多PC、服务器,也没这么多资源搞VM),所以这里通过docker的方式生成3个consul节点搭建consul集群。先附上consul集群的架构图简单罗列consul的几个概念,有助于后面搭建consul集群的理解consul的集群是由N个server节点,加上M个client节点组成,所有的服务都可以注册到这些节点上。leader,节点个数一般3-5台。...

土豆 3128

11、RK3566/3568 Android11切割屏幕 长条屏 显示

在使用 RK3566 平台进行 Android 11 开发时,遇到切割屏(长条屏)显示画面不全。本文将详细介绍如何配置,以及如何修改 HWComposer 来调整显示区域,解决图像缩放问题。我这边屏幕是lvds接口的,分辨率1920 1080实际的屏物理尺寸是1920x463。

qq_39451352的博客 261

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

搭建consul 集群

上图是官网提供的一个事例系统图,图中的Server是consul服务端高可用集群,Client是consul客户端。consul客户端不保存数据,客户端将接收到的请求转发给响应的Server端。Server之间通过局域网或广域网通信实现数据一致性。每个Server或Client都是一个consul agent。Consul集群间使用了GOSSIP协议通信和raft一致性算法。上面这张图涉及到了很多

dotNET跨平台 328

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

consul集群搭建作为注册中心与高可用

Consul是什么 Consul是一个服务网格(微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控)解决方案,它是一个一个分布式的,高度可用的系统,而且开发使用都很简便。它提供了一个功能齐全的控制平面,主要特点是:服务发现、健康检查、键值存储、安全服务通信、多数据中心。 consul 节点模式划分 client: 客户端, 无状态, 将 HTTP 和 DNS 接口请求转发给局域网内的服务端集群 server: 服务端, 保存配置信息, 高可用集群, 在局域网内与本地客户端通讯, 通过广域网与

小JH的博客 1924

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Consul集群部署

Consul介绍 Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。Consul 是分布式的、高可用的、可横向扩展的。 官网:https://www.consul.io,最新版本:1.8.3 概念: Agent:是在 Consul 集群的每个成员上长期运行的守护进程,通过命令 consul agent 启动运行。由于所有节点都必须运行一个 Agent,因此 Agent 可以分为 client 或 Server。 所有的 Agent 都可以运行DN

变成习惯 7239

Consul集群搭建

近几年随着Docker容器技术、微服务等架构的兴起,人们开始意识到服务发现的必要性。微服务架构简单来说,是一种以一些微服务来替代开发单个大而全应用的方法, 每一个小服务运行在自己的进程里,并以轻量级的机制来通信, 通常是 HTTP RESTful API。微服务强调小快灵, 任何一个相对独立的功能服务不再是一个模块, 而是一个独立的服务。那么,当我们需要访问这个服务时,如何确定它的地址呢?这时...

weixin_34194702的博客 110
上一篇: nginx: 集群环境配置搭建
下一篇: 设计模式: 结构型之组合模式(6)
Wang's Blog
博客等级 码龄12年 7433粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值