Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >consul分布式集群搭建

consul分布式集群搭建

作者头像
1850810
修改于 2021-06-07 06:23:32
修改于 2021-06-07 06:23:32
1.1K0
举报

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

  • Agent——agent是一直运行在Consul集群中每个成员上的守护进程。通过运行 consul agent 来启动。agent可以运行在client或者server模式。指定节点作为client或者server是非常简单的,除非有其他agent实例。所有的agent都能运行DNS或者HTTP接口,并负责运行时检查和保持服务同步。
  • Client——一个Client是一个转发所有RPC到server的代理。这个client是相对无状态的。client唯一执行的后台活动是加入LAN gossip池。这有一个最低的资源开销并且仅消耗少量的网络带宽。
  • Server——一个server是一个有一组扩展功能的代理,这些功能包括参与Raft选举,维护集群状态,响应RPC查询,与其他数据中心交互WAN gossip和转发查询给leader或者远程数据中心。
  • DataCenter——虽然数据中心的定义是显而易见的,但是有一些细微的细节必须考虑。例如,在EC2中,多个可用区域被认为组成一个数据中心?我们定义数据中心为一个私有的,低延迟和高带宽的一个网络环境。这不包括访问公共网络,但是对于我们而言,同一个EC2中的多个可用区域可以被认为是一个数据中心的一部分。
  • Consensus——在我们的文档中,我们使用Consensus来表明就leader选举和事务的顺序达成一致。由于这些事务都被应用到有限状态机上,Consensus暗示复制状态机的一致性。
  • Gossip——Consul建立在Serf的基础之上,它提供了一个用于多播目的的完整的gossip协议。Serf提供成员关系,故障检测和事件广播。更多的信息在gossip文档中描述。这足以知道gossip使用基于UDP的随机的点到点通信。
  • LAN Gossip——它包含所有位于同一个局域网或者数据中心的所有节点。
  • WAN Gossip——它只包含Server。这些server主要分布在不同的数据中心并且通常通过因特网或者广域网通信。
  • RPC——远程过程调用。这是一个允许client请求server的请求/响应机制。

在每个数据中心,client和server是混合的。一般建议有3-5台server。这是基于有故障情况下的可用性和性能之间的权衡结果,因为越多的机器加入达成共识越慢。然而,并不限制client的数量,它们可以很容易的扩展到数千或者数万台。

  同一个数据中心的所有节点都必须加入gossip协议。这意味着gossip协议包含一个给定数据中心的所有节点。这服务于几个目的:第一,不需要在client上配置server地址。发现都是自动完成的。第二,检测节点故障的工作不是放在server上,而是分布式的。这是的故障检测相比心跳机制有更高的可扩展性。第三:它用来作为一个消息层来通知事件,比如leader选举发生时。

  每个数据中心的server都是Raft节点集合的一部分。这意味着它们一起工作并选出一个leader,一个有额外工作的server。leader负责处理所有的查询和事务。作为一致性协议的一部分,事务也必须被复制到所有其他的节点。因为这一要求,当一个非leader得server收到一个RPC请求时,它将请求转发给集群leader。

  server节点也作为WAN gossip Pool的一部分。这个Pool不同于LAN Pool,因为它是为了优化互联网更高的延迟,并且它只包含其他Consul server节点。这个Pool的目的是为了允许数据中心能够以low-touch的方式发现彼此。这使得一个新的数据中心可以很容易的加入现存的WAN gossip。因为server都运行在这个pool中,它也支持跨数据中心请求。当一个server收到来自另一个数据中心的请求时,它随即转发给正确数据中想一个server。该server再转发给本地leader。

  这使得数据中心之间只有一个很低的耦合,但是由于故障检测,连接缓存和复用,跨数据中心的请求都是相对快速和可靠的。

使用Consul也非常简单,基本可以做到开箱即用

这篇文章《使用C# 和Consul进行分布式系统协调 》是在单机上做的, 我们现在要大家一个3节点的集群,本文就是介绍如何搭建一个3节点的Consul集群:

1.   准备工作

  a)      启动三台虚拟机

    s1:10.0.0.5

    s2:10..0.0.6

    s3:10..0.0.7

  b)      每台机器上在 /usr/local 新建文件夹    

mkdir –p /usr/local/consul/data

  c)      下载consul,并将其考入到/usr/local/consul中

    下载地址:https://www.consul.io/downloads.html

sudo wget https://releases.hashicorp.com/consul/0.7.2/consul_0.7.2_linux_amd64.zip

unzip consul_0.7.2_linux_amd64.zip

2.   启动server agent

   a)      进入consul目录中

       b)      执行命令:

sudo ./consul agent -server -bootstrap-expect 2 -data-dir=data -node=n1 -bind=10.0.0.5 -client=0.0.0.0 &

注: i.  server: 以server身份启动。 ii.  bootstrap-expect:集群要求的最少server数量,当低于这个数量,集群即失效。 iii.  data-dir:data存放的目录,更多信息请参阅consul数据同步机制 iv.  node:节点id,在同一集群不能重复。 v.   bind:监听的ip地址。 vi.  client 客户端的ip地址 vii.  &  :在后台运行,此为linux脚本语法 vii.  更多参数及配置说明见consul官方说明文档https://www.consul.io/docs/agent/options.html

      c)      修改node和bind信息,分别在另外两台机器中执行 上面命令。

sudo ./consul agent -server -bootstrap-expect 2 -data-dir=data -node=n2 -bind=10.0.0.6 -client=0.0.0.0 &

sudo ./consul agent -server -bootstrap-expect 2 -data-dir=data -node=n3 -bind=10.0.0.5 -client=0.0.0.0 &

  d)      在s2、s3中分别执行:

./consul join 10.0.0.7

到这里整个consul server 集群就算完成了,可以利用consul members查看集群中包含的node信息。使用consul info命令可以查看当前节点状态,包括是否在集群中,是否为leader(主)。

3.   搭建管理工具

consul自带的WEB UI,Web ui是consul提供的可视化的服务web界面,可以对key/value和服务、节点进行操作

  a)      下载consul web ui(包含一个html和一个static文件件),和本机中的consul放到同级目录。

  b)     在本机启动consul,需要设置-ui-dir ./webui

sudo ./consul agent -server -bootstrap-expect 2 -data-dir=data -node=n3 -bind=10.0.0.7 -ui-dir=webui -client 0.0.0.0 & 打开浏览器访问8500 端口:

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
暂无评论
推荐阅读
编辑精选文章
换一批
Consul在.Net Core中初体验 简介Consul术语及解释consul安装启动consul搭建集群服务注册
Consul是一个服务管理软件,它其实有很多组件,包括服务发现配置共享键值对存储等
蓝夏
2019/02/15
6970
Consul1.7 多数据中心 新Hashicorp学习指南
在微服务化的趋势下,为了最大限度增加扩容缩容的灵活性,名字服务和服务发现等方式就越来越受到青睐了。目前,主流的服务发现组件有:consul、etcd、zookeeper,其中的区别这里就不展开说明了,可以在官网查看这些服务之间的区别。
公众号: 云原生生态圈
2021/11/15
1.4K0
Consul1.7 多数据中心 新Hashicorp学习指南
Consul 架构(译)
如上图所示,Consul先天支持多数据中心应用:multiple datacenters 。
WindWant
2020/09/11
8050
Consul 架构(译)
服务发现之consul的介绍、部署和使用
微服务的框架体系中,服务发现是不能不提的一个模块。我相信了解或者熟悉微服务的童鞋应该都知道它的重要性。这里我只是简单的提一下,毕竟这不是我们的重点。我们看下面的一幅图片:
sunsky
2020/08/20
1.8K0
Consul 集群1
Consul 的作用类似于 Zookeeper 或 etcd ,和 etcd 一样也是使用 Go 实现的,也是使用的 Raft 算法
franket
2021/12/01
2370
consul配置与实战
上一篇提到,项目用的分布式服务发现与注册组件是consul,这篇文章主要来讲下consul组件在项目中的应用以及相关介绍。本文以官方文档为主要参考consul文档。 1. consul介绍 consul是一个服务管理软件,主要功能如下: 支持多数据中心下,分布式高可用的,服务发现和配置共享。 consul支持健康检查,允许存储键值对。 一致性协议采用 Raft算法,用来保证服务的高可用。 成员管理和消息广播采用 GOSSIP协议,支持ACL访问控制。 1.1 服务注册与发现 服务注册是一个服务将其位置信息在
aoho求索
2018/04/03
2.2K0
consul配置与实战
Consul 学习总结
Consul是一种服务网络解决方案,使团队能够管理服务之间以及跨本地和多云环境和运行时的安全网络连接。Consul提供服务发现、服务网格(service mesh)、流量管理和网络基础设施设备的自动更新。可以在单个Consul部署中单独或一起使用这些功能。
授客
2024/12/14
1170
Consul 学习总结
Consul 启动命令,Web UI
-bootstrap:启动模式,此模式下,节点可以选举自己为leader,一个数据中心只能有一个此模式启动的节点。机群启动后,新启动的节点不建议使用这种模式。
WindWant
2020/09/11
4.5K0
Web基础配置篇(十五): Consul单机、集群的安装使用及作为配置中心使用
Consul是一个服务网格(微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控)解决方案,它是一个一个分布式的,高度可用的系统,而且开发使用都很简便。它提供了一个功能齐全的控制平面,主要特点是:服务发现、健康检查、键值存储、安全服务通信、多数据中心。
品茗IT
2020/05/28
2.3K0
Prometheus 通过 consul 分布式集群实现自动服务发现
本次演示环境,我是在虚拟机上安装 Linux 系统来执行操作,以下是安装的软件及版本:
哎_小羊
2020/04/08
2.2K0
Prometheus 通过 consul 分布式集群实现自动服务发现
5分钟看懂微服务架构下的Consul 特性及搭建
虽然说牛逼的公司都有那么几个牛逼的运维团队,牛逼的运维团队都有着神秘黑科技般敲代码的姿势;本人虽然不是一个运维工程师,但是自己比较爱倒腾这些东西,会那么一点点运维姿势,虽然不算专业,但是还是可以在linux平台下敲一敲代码。去年由于自己业余时间搞了一个app项目,当时自己兼任后端开发,又同时兼任运维,经过多少个夜晚才把后端API网关 搭建起来,当时技术选型主要使用微服务架构,说到微服务架构,也就少不了分布式集群,那就更少不了Consul 。今天搭建Consul 服务也是为了自己后面的学习和分享使用(之前在生产环境搭建过,本来可以直接拿来用,只是后面应用停掉了,服务器也就下掉了),故特意把前几天阿里云活动价买的服务器用起来,准备再次搭建Consul服务,以供后续方便拿来即用。
Jlion
2022/04/07
1.2K0
5分钟看懂微服务架构下的Consul 特性及搭建
.netcore consul实现服务注册与发现-集群部署
   Consul Agent有两种运行模式:Server和Client。这里的Server和Client只是Consul集群层面的区分,与搭建在Cluster之上的应用服务无关, 以Server模式运行的Consul Agent节点用于维护Consul集群的状态,官方建议每个Consul Cluster至少有3个或以上的运行在Server Mode的Agent,Client节点不限。
hailang2zh
2019/08/29
1.1K0
.netcore consul实现服务注册与发现-集群部署
Spring Cloud 系列之注册中心 Consul
  Consul 是 HashiCorp 公司推出的开源工具,Consul 由 Go 语言开发,部署起来非常容易,只需要极少的可执行程序和配置文件,具有绿色、轻量级的特点。Consul 是分布式的、高可用的、 可横向扩展的用于实现分布式系统的服务发现与配置。这些功能中的每一项都可以根据需要单独使用,也可以一起使用来构建一个完整的服务网格。Consul 分为 Client 和 Server 两种节点(所有的节点也被称为 Agent),Server 节点保存数据,Client 负责健康检查及转发数据请求到 Server。Consul 的主要功能有:  ♞ 服务发现:Consul 的客户端可以注册一个服务,比如 api 或 mysql,其他客户端可以使用 Consul 来发现特定服务的提供者。使用 DNS 或 HTTP,应用程序可以很容易地找到他们所依赖的服务。  ♞ 健康检查:Consul 客户端可以提供任何数量的健康检查,要么与给定的服务相关联(如: “webserver是否返回 200 OK”),要么与本地节点相关联(如: “内存利用率是否低于 90%”)。这些信息可以运维人员用来监控集群的健康状况,并被服务发现组件来路由流量(比如: 仅路由到健康节点)  ♞ KV存储:应用程序可以利用 Consul 的层级 K/V 存储来实现任何目的,包括动态配置、功能标记、协调、领导者选举等。Consul 提供了 HTTP API,使其非常简单以用。  ♞ 安全服务通信: Consul 可以为服务生成和分发 TLS( 传输层安全性协议) 证书,以建立相互的 TLS 连接。可以使用 Intention 来定义哪些服务被允许进行通信。服务隔离可以通过可以实时更改 Intention 策略轻松管理,而不是使用复杂的网络拓扑结构和静态防火墙规则。  ♞ 多数据中心:Consul 支持开箱即用的多数据中心。这意味着 Consul 的用户不必担心建立额外的抽象层来发展到多个区域。
Demo_Null
2020/11/11
1.5K0
Spring Cloud 系列之注册中心 Consul
.netcore consul实现服务注册与发现-单节点部署
    Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,比如 Airbnb的SmartStack等相比,Consul的方案更“一站式”,内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等),使用起来也较 为简单。Consul用Golang实现,因此具有天然可移植性(支持Linux、windows和Mac OS X);安装包仅包含一个可执行文件,方便部署,与Docker等轻量级容器可无缝配合。
hailang2zh
2019/08/29
9130
.netcore consul实现服务注册与发现-单节点部署
安装Consul集群
TIPS •本文基于Consul 1.5.3,理论适用于Consul 1.6及更低版本。•安装单机版Consul详见:《安装单机版Consul》
用户1516716
2019/12/23
1.7K0
Consul初探-从安装到运行
伟大领袖毛主席说过:实践是检验真理的唯一标准!经过上一篇的学习,我基本掌握了 Consul 的基本原理,接下来就是动手实践了;Consul 的部署方式分为两种,分别是二进制包和docker方式,这次就以二进制包的方式进行实验吧。
梁规晓
2019/07/09
7430
Consul初探-从安装到运行
Prometheus监控神器-服务发现篇(三)
上图是官网提供的一个事例系统图,图中的Server是consul服务端高可用集群,Client是consul客户端。consul客户端不保存数据,客户端将接收到的请求转发给响应的Server端。Server之间通过局域网或广域网通信实现数据一致性。每个Server或Client都是一个consul agent。
Kubernetes技术栈
2020/09/07
1.5K0
Spring Cloud(二)Consul 服务治理实现
Spring Cloud Consul 项目是针对Consul的服务治理实现。Consul是一个分布式高可用的系统,具有分布式、高可用、高扩展性。 Consul 简介 Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,Consul的方案更“一站式” ,内置了服务注册与发现框 架、具有以下性质: 分布一致性协议实现、 健康检查、 Key/Value存储、 多数据中心方案, 不再需要依赖其他工具(比如ZooKeeper等)。 使用起来
程序员鹏磊
2018/02/09
1.5K0
Spring Cloud(二)Consul 服务治理实现
搭建Consul集群
Consul的简介和安装过程之前的文章中已经提及了,这次主要了解下consul的集群搭建过程,在搭建Consul集群之前,有必要先了解一下单个节点的consul环境部署。
AsiaYe
2019/11/06
2.3K0
搭建Consul集群
C#使用Consul集群进行服务注册与发现
我个人觉得,中间件的部署与使用是非常难记忆的;也就是说,如果两次使用中间件的时间间隔比较长,那基本上等于要重新学习使用。
Kiba518
2019/12/10
1.1K0
相关推荐
Consul在.Net Core中初体验 简介Consul术语及解释consul安装启动consul搭建集群服务注册
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文