`

Consul框架介绍

阅读更多

Consul(https://www.consul.io/downloads.html)是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置共享。与其他分布式服务注册与发现的方案,Consul的方案更"一站式",内置了服务注册与发现框 架、分布一致性协议实现(Raft算法)、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。

 

Consul用Golang实现,因此具有天然可移植性(支持Linux、windows和Mac OS X);安装包仅包含一个可执行文件,方便部署,与Docker等轻量级容器可无缝配合。

 

Consul的角色:

Agent - 运行在consul集群的每个node上的daemon,agent可以run在server或者是client上,每个agent都可以提供DNS或者是HTTP的接口,负责health check和service发现等。用consul agent命令可以启动,具体可run "consul agent --help"查看参数。

 

Client - client把所有的RPCs转发到server端,是相对无状态的。唯一在后台运行的时client端执行了LAN gossip pool,只消耗极少的资源和网络带宽。

 

server: 负责维护cluster state, RPC quiries, 和其他数据中心交换WAN gossip,转发queries给leader或者其他数据中心。 每个数据中心的 server 数量推荐为 3 个或是 5 个.

 

Datacenter:指的是网络环境是私有,低延迟,高带宽的,排除和公网的通信。

 

Serf:consul是基于Serf上实现的,Serf是一个服务发现,编配(应用集群管理等)工具,它去中心化,高可用并且能故障恢复(容忍), Serf使用Gossip协议,采用Go语言编写。Serf提供成员关系,纠错检查,广播的功能。gossip包含的任意node-to-node间的通信,主要是基于UDP。

 

WAN Gossip:指 WAN gossip pool 包含哪些都在同一局域网或者是datacenter的node。

 

RPC:Remote Procedure Call. 客户端和服务器端的请求/应答机制。

 

consul命令格式:

consul [--version] [--help] <command> [<args>]

Available commands are:

agent          Runs a Consul agent

force-leave    Forces a member of the cluster to enter the "left" state

info           Provides debugging information for operators

join           Tell Consul agent to join cluster

keygen         Generates a new encryption key

leave          Gracefully leaves the Consul cluster and shuts down

members        Lists the members of a Consul cluster

monitor        Stream logs from a Consul agent

reload         Triggers the agent to reload configuration files

version        Prints the Consul version

 

命令行参数:

-advertise:通知展现地址用来改变我们给集群中的其他节点展现的地址,一般情况下-bind地址就是展现地址

-bootstrap:用来控制一个server是否在bootstrap模式,在一个datacenter中只能有一个server处于bootstrap模式,当一个server处于bootstrap模式时,可以自己选举为raft leader。

-bootstrap-expect:在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap公用

-bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0

-client:consul绑定在哪个client地址上,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1

-config-file:明确的指定要加载哪个配置文件

-config-dir:配置文件目录,里面所有以.json结尾的文件都会被加载

-data-dir:提供一个目录用来存放agent的状态,所有的agent允许都需要该目录,该目录必须是稳定的,系统重启后都继续存在

-dc:该标记控制agent允许的datacenter的名称,默认是dc1

-encrypt:指定secret key,使consul在通讯时进行加密,key可以通过consul keygen生成,同一个集群中的节点必须使用相同的key

-join:加入一个已经启动的agent的ip地址,可以多次指定多个agent的地址。如果consul不能加入任何指定的地址中,则agent会启动失败,默认agent启动时不会加入任何节点。

-retry-join:和join类似,但是允许你在第一次失败后进行尝试。

-retry-interval:两次join之间的时间间隔,默认是30s

-retry-max:尝试重复join的次数,默认是0,也就是无限次尝试

-log-level:consul agent启动后显示的日志信息级别。默认是info,可选:trace、debug、info、warn、err。

-node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名

-protocol:consul使用的协议版本

-rejoin:使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。

-server:定义agent运行在server模式,每个集群至少有一个server,建议每个集群的server不要超过5个

-syslog:开启系统日志功能,只在linux/osx上生效

-ui-dir:提供存放web ui资源的路径,该目录必须是可读的

-pid-file:提供一个路径来存放pid文件,可以使用该文件进行SIGINT/SIGHUP(关闭/更新)agent

 

配置文件参数:

acl_datacenter:只用于server,指定的datacenter的权威ACL信息,所有的servers和datacenter必须同意ACL datacenter

acl_default_policy:默认是allow

acl_down_policy:

acl_master_token:

acl_token:agent会使用这个token和consul server进行请求

acl_ttl:控制TTL的cache,默认是30s

addresses:一个嵌套对象,可以设置以下key:dns、http、rpc

advertise_addr:等同于-advertise

bootstrap:等同于-bootstrap

bootstrap_expect:等同于-bootstrap-expect

bind_addr:等同于-bind

ca_file:提供CA文件路径,用来检查客户端或者服务端的链接

cert_file:必须和key_file一起

check_update_interval:

client_addr:等同于-client

datacenter:等同于-dc

data_dir:等同于-data-dir

disable_anonymous_signature:在进行更新检查时禁止匿名签名

disable_remote_exec:禁止支持远程执行,设置为true,agent会忽视所有进入的远程执行请求

disable_update_check:禁止自动检查安全公告和新版本信息

dns_config:是一个嵌套对象,可以设置以下参数:allow_stale、max_stale、node_ttl 、service_ttl、enable_truncate

domain:默认情况下consul在进行DNS查询时,查询的是consul域,可以通过该参数进行修改

enable_debug:开启debug模式

enable_syslog:等同于-syslog

encrypt:等同于-encrypt

key_file:提供私钥的路径

leave_on_terminate:默认是false,如果为true,当agent收到一个TERM信号的时候,它会发送leave信息到集群中的其他节点上。

log_level:等同于-log-level

node_name:等同于-node

ports:这是一个嵌套对象,可以设置以下key:dns(dns地址:8600)、http(http api地址:8500)、rpc(rpc:8400)、serf_lan(lan port:8301)、serf_wan(wan port:8302)、server(server rpc:8300)

protocol:等同于-protocol

recursor:

rejoin_after_leave:等同于-rejoin

retry_join:等同于-retry-join

retry_interval:等同于-retry-interval 

server:等同于-server

server_name:会覆盖TLS CA的node_name,可以用来确认CA name和hostname相匹配

skip_leave_on_interrupt:和leave_on_terminate比较类似,不过只影响当前句柄

start_join:一个字符数组提供的节点地址会在启动时被加入

statsd_addr:

statsite_addr:

syslog_facility:当enable_syslog被提供后,该参数控制哪个级别的信息被发送,默认Local0

ui_dir:等同于-ui-dir

verify_incoming:默认false,如果为true,则所有进入链接都需要使用TLS,需要客户端使用ca_file提供ca文件,只用于consul server端,因为client从来没有进入的链接

verify_outgoing:默认false,如果为true,则所有出去链接都需要使用TLS,需要服务端使用ca_file提供ca文件,consul server和client都需要使用,因为两者都有出去的链接

watches:watch一个详细名单

分享到:
评论

相关推荐

    springcloud整合nacos和consul

    SpringCloud作为一个流行的微服务框架,提供了多种服务发现组件,如Nacos和Consul。本篇文章将深入探讨如何在SpringCloud项目中整合这两种服务发现工具。 **Nacos** Nacos是阿里巴巴开源的一款服务发现和配置管理...

    Consul 1.9.0 Windows版

    这使得在 Windows 上使用 Consul 更加便捷,能够与其他开发工具和框架无缝配合。 为了充分利用 Consul 1.9.0 Windows 版本,你需要阅读官方文档,了解新特性、升级指南以及可能的迁移步骤。同时,实践操作是掌握 ...

    spring-cloud-consul.zip

    本文将详细介绍Spring Cloud Consul的使用,以及如何结合OpenFeign进行微服务间的调用。 首先,Consul是由HashiCorp公司开发的一款强大的服务发现和配置管理工具,支持多数据中心,并提供健康检查、KV存储、服务...

    consul1.6.1-win64.zip

    Consul的强大之处在于其易于集成,可以与各种微服务框架(如Spring Cloud、Netflix OSS等)无缝配合,为复杂分布式系统的管理和监控提供了强大的工具。在实际应用中,确保阅读官方文档以获取最佳实践和更深入的配置...

    最新的Consul版本

    8. **社区支持与生态**:随着 Consul 社区的不断壮大,新的版本可能会增加对更多第三方工具和框架的兼容性,如服务网格 Istio 或 Kubernetes。同时,官方文档和教程也会得到更新和完善,为开发者提供更好的学习资源...

    Springboot consul 服务提供端和服务发现端

    Spring Boot是由Pivotal团队提供的全新框架,其目标是简化Spring应用的初始搭建以及开发过程。通过内嵌Tomcat、Jetty等Web服务器,Spring Boot可以快速地创建独立运行的、生产级别的基于Spring的应用。 Consul是由...

    Go-GOMicro搭建Consul服务发现集群实例

    Go Micro 是一个用于构建微服务的 Go 语言框架,它支持多种服务发现机制,其中包括 Consul。Consul 是一个功能强大的服务网格工具,提供服务发现、健康检查和KV存储等功能。本篇文章将详细讲解如何使用 Go Micro ...

    .NetCore+Consul+Ocelot实现服务网关和服务注册与发现.rar

    首先,`.NetCore`是微软推出的一种跨平台的开发框架,用于构建高效、现代化的应用程序,支持Windows、Linux和macOS等操作系统。`.NetCore`具有高性能、模块化和可移植性等优点,使得它成为构建微服务的理想选择。 `...

    springcloud-consul DEMO

    标题"springcloud-consul DEMO"表明我们将关注的是Spring Cloud框架与Consul服务发现和配置管理工具的结合。描述中提到,这是一个包含生产者和消费者两端的实例代码,它利用了Feign和Hystrix这两个关键组件,同时...

    consul_1.8.5_linux_amd64.zip

    Consul 是一款由 ...通过其丰富的 API 和客户端库,Consul 可以轻松地与各种编程语言和框架集成,进一步提升开发效率和系统的可靠性。在实际使用中,确保正确配置和维护 Consul,将有助于构建出健壮的分布式系统。

    GO Micro 搭建 Consul服务发现集群实例

    本教程将详细介绍如何使用 `Go Micro` 和 `Consul` 创建一个服务发现集群实例。 首先,让我们了解 `Consul`。Consul 是由 HashiCorp 公司开发的一个用于实现分布式系统服务发现与配置的工具。它提供了一个完整的一...

    go-micro使用Consul做服务发现的方法和原理.doc

    Go-micro 是一个 Go 语言编写的轻量级服务框架,它提供了多种服务发现机制,包括默认的 mdns 和其他的第三方服务发现工具,如 Consul。本文主要探讨如何使用 Consul 作为服务发现的中间件,并解释其工作原理。 ...

    Springboot consul 服务端

    在IT行业中,Spring Boot是一个非常流行的Java框架,用于简化Spring应用程序的开发。它提供了一种快速构建可生产级独立应用的方式,而Consul则是一个全面的服务发现与配置工具,具有健康检查、KV存储、多数据中心的...

    consul_1.7.1_linux_amd64.zip

    Spring Cloud 是一个用于构建微服务的框架,它通过集成各种工具来简化开发和管理过程。其中,Consul 可以作为服务注册和发现的组件,使得服务实例能够自动注册自身,并允许其他服务发现和调用它们。同时,Consul 还...

    SpringBoot、SpringCloud的各种集成例子大全

    SpringBoot集成Atomikos框架-实现分布式数据库XA事务;...SpringCloud集成Consul框架-实现配置中心; SpringCloud集成Consul框架-实现注册中心; SpringCloud集成Consul+Ribbon框架-实现注册中心和负载均衡; 等等

    consul_1.6.1_windows_amd64.zip

    6. **安全性**:Consul提供了一套完整的安全框架,包括基于TLS的加密通信、ACL(访问控制列表)来控制对服务和数据的访问,以及身份验证机制,确保在分布式环境中数据和服务的安全。 7. **Web UI**:Consul还提供了...

    Consul+Ocelot+.NetCore Api+IdentityServer 4

    .NET Core API是微软的高性能、跨平台的Web API框架,用于构建RESTful服务。它基于ASP.NET Core,提供了轻量级、模块化和跨平台的能力,支持快速开发、高可测试性和优秀的性能。 IdentityServer 4则是一个符合...

    .NET Core + Consul 服务注册与发现.rar

    完美实现了.net core + consul的功能,直接可以运行。...它内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如 ZooKeeper 等),使用起来也较为简单

    dotnet-NETCoreOcelotIdentityServer4Consul基础架构实现

    标题中的"dotnet-NETCoreOcelotIdentityServer4Consul基础架构实现"指的是一个基于.NET Core技术栈的微服务架构实现,其中包含了Ocelot作为API网关、IdentityServer4用于身份验证与授权,以及Consul作为服务发现和...

    consul_1.7.2_windows_amd64.zip 和 consul_1.7.2_linux_amd64.zip

    与其它分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value 存储(配置中心)、多数据中心方案,不再需要依赖其它工具(比如 ZooKeeper 等...

Global site tag (gtag.js) - Google Analytics