【开发工具】Consul使用:1、介绍及安装

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_33602978/article/details/86559980

从刚入职接触Zookeeper开始,简单的认为ZK是作为服务注册与订阅使用的微服务架构组件,zookeeper的入门比较简单,主要就是zoo.cfg文件的配置,还有可视化工具zkui可以很感官的看到服务的注册信息,很方便。

后来又使用ZK进行动态参数配置中心,充分利用了watcher监听通知的功能,但是集成的方式需要自己进行代码维护逻辑,使得开发面向了过程,需要对每一个需要监听的节点创建一个watcher,然后再实现add/update/delete等方法,对开发人员的要求较高,使用频率不怎么大。

再后来公司框架集成Springcloud,开始学习使用EUREKA和Consul,下面是从https://blog.csdn.net/u013068377/article/details/78933654摘过来的

Feature Consul zookeeper etcd(没用过) euerka
服务健康检查 服务状态,内存,硬盘等 (弱)长连接,keepalive 连接心跳 可配支持
多数据中心 支持
kv存储服务 支持 支持 支持
一致性 raft paxos raft
cap ca cp cp ap
使用接口(多语言能力) 支持http和dns 客户端 http/grpc http(sidecar)
watch支持 全量/支持long polling 支持 支持 long polling 支持 long polling/大部分增量
自身监控 metrics metrics metrics
安全 acl /https acl https支持(弱)
spring cloud集成 已支持 已支持 已支持 已支持

因为现在主要使用Consul进行服务发现,其他的先略过。

一、Consul的安装

Consul中心和Zk类似是个客户端执行工具,从官网很容易下载:https://www.consul.io/

https://www.consul.io/downloads.html

直接配置环境变量,或者在加压文件上shift+右击弹出命令框,输入consul即可

consul需要服务器的性能要求

类型 中央处理器 内存 磁盘 典型的云实例类型
2核心 8-16 GB RAM 50GB AWS:m5.large,m5.xlarge
        Azure:Standard_A4_v2,Standard_A8_v2
        GCE:n1-standard-8,n1-standard-16
4-8核心 32-64 GB RAM 100GB AWS:m5.2xlarge,m5.4xlarge
        Azure:Standard_D4_v3,Standard_D5_v3
        GCE:n1-standard-32,n1-standard-64

小尺寸适用于大多数初始生产部署或开发/测试环境。大尺寸适用于工作负载持续较高的生产环境。

 

consul集群架构:

参考图

上面这图是官网获得的机构图,他分为了两块数据中心,也就是两个集群中心。每个通常是三到五台服务器。Consul通过WAN链接连接的独立集群支持多数据中心部署。在某些情况下,还可以在同一LAN环境中部署两个或多个Consul集群。

主要了解一下节点之间的网络通讯:

代理以客户端或服务器模式运行,都采用的是Gossip协议规范(Redis集群也是如此规范)。初始探测每秒通过UDP发送。如果节点无法在内部进行确认200ms,则代理将通过TCP进行ping操作。如果TCP探测失败(10秒超时),它会要求可配置数量的随机节点探测同一节点(也称为间接探测)。如果对等体没有关于节点状态的响应,则该代理被标记为关闭。

代理的状态直接影响服务发现结果。如果代理已关闭,则它正在监视的服务也将标记为关闭。

在跨越L2段的较大网络中,流量通常穿过防火墙和/或路由器。必须更新ACL或防火墙规则以允许以下端口:

名称 港口 描述
服务器RPC 8300   服务器用于处理来自其他代理的传入请求。仅限TCP。
Serf LAN 8301   用于处理局域网中的Gossip协议。所有代理都使用TCP和UDP。
Serf WAN 8302 -1 禁用(在Consul 1.0.7中可用) 服务器用于通过LAN和WAN连接到其他服务器。TCP和UDP。
HTTP API 8500 -1 禁用 客户端用于与HTTP API通信。仅限TCP。
DNS接口 8600 -1 禁用  

数据中心设计部分所述,网络区域和网段可用于防止在不同子网之间打开防火墙端口。

默认情况下,代理仅侦听本地接口上的HTTP和DNS流量。

二、Consul的简单介绍

比较详情的https://segmentfault.com/a/1190000005026002

这里主要详细讲解Consul的一些命令操作符

控制台输入:consul 

C:\Users\liuguangyu>consul
Usage: consul [--version] [--help] <command> [<args>]

Available commands are:
    acl            Interact with Consul's ACLs #与控制访问列表相关联
    agent          Runs a Consul agent #启动代理
    catalog        Interact with the catalog #与目录相关
    connect        Interact with Consul Connect #与连接相关
    debug          Records a debugging archive for operators #debug方式
    event          Fire a new event #
    exec           Executes a command on Consul nodes
    force-leave    Forces a member of the cluster to enter the "left" state
    info           Provides debugging information for operators.
    intention      Interact with Connect service intentions
    join           Tell Consul agent to join cluster #手动将节点加入集群
    keygen         Generates a new encryption key
    keyring        Manages gossip layer encryption keys
    kv             Interact with the key-value store
    leave          Gracefully leaves the Consul cluster and shuts down
    lock           Execute a command holding a lock
    maint          Controls node or service maintenance mode
    members        Lists the members of a Consul cluster
    monitor        Stream logs from a Consul agent
    operator       Provides cluster-level tools for Consul operators
    reload         Triggers the agent to reload configuration files
    rtt            Estimates network round trip time between nodes
    services       Interact with services
    snapshot       Saves, restores and inspects snapshots of Consul server state
    validate       Validate config files/directories
    version        Prints the Consul version
    watch          Watch for changes in Consul #类似ZK的watcher

1、关于acl的概念查看https://blog.csdn.net/ningmeng_bumeng/article/details/78614362,主要用于网络流量控制,具体在consul上创建策略的方式可以查看官方文档https://learn.hashicorp.com/consul/advanced/day-1-operations/acl-guide

2、consul的启动一般都是通过代理启动,代理指明了客户端的地址,未完待续。。

猜你喜欢

转载自blog.csdn.net/weixin_33602978/article/details/86559980