• Consul的使用三之service查询


    DNS Interface

    DNS接口是Consul中主要的查询接口之一,另一个是HTTP接口, HTTP接口查询请查阅https://www.consul.io/api/catalog.html#list-services。Consul默认在8600端口监听DNS查询。

    要使用DNS接口, 有几种方法可以实现:

    一是使用指定的DNS解析库, 然后指向Consul;

    二是把Consul设置为节点的DNS服务器, 并且提供recursors配置项, 这样非Consul的查询也能被解析;

    最后一种方法是从已有的DNS服务器上把所有consul.为域名的请求转发到consul agent上。

    查询的示例方法:

    dig @127.0.0.1 -p 8600 redis.service.dc1.consul. ANY

    查询redis服务器地址

     

    通常情况下, 有两种类型的查询: node lookupsservice lookupsnode lookups指定的查询一个节点的ip地址, 而service lookups则是查询一个服务的ip地址。

     

    节点查询

    查询一个节点的命令格式为:

    <node>.node[.datacenter].<domain>

    [datacenter]可选, 默认为当前agent所在的data center。

    对于一个node lookups, consul返回值包含A记录, AAAA记录以及TXT记录。

    A记录返回ipv4地址, AAAA记录返回ipv6地址, TXT记录会匹配节点的元数据信息node_meta, 如果节点的元数据key以rfc1035-开头, 则只会返回节点的元数据信息。

     

    服务查询

    service lookups用来查询服务的提供者, consul提供两种方法, 一种是标准查询, 一种是严格遵循RFC 2782规范的查询。

    默认情况下, SRV权重为1, 但是可以通过service definition中的Weights属性配置。

     

    Standard Lookup

    格式:

    [tag.]<service>.service[.datacenter].<domain>

    tag是可选的, 过滤节点, datacenter可选, 默认是agent所处的数据中心。

    标准服务查询支持A记录和SRV记录, SRV记录也会返回服务注册的端口地址。SRV记录默认不返回, 除非是命令中指定, 如:

    dig @127.0.0.1 -p 8600 consul.service.consul SRV

    ; <<>> DiG 9.8.3-P1 <<>> @127.0.0.1 -p 8600 consul.service.consul ANY
    ; (1 server found)
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50483
    ;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 1, ADDITIONAL: 1
    ;; WARNING: recursion requested but not available

    ;; QUESTION SECTION:
    ;consul.service.consul.     IN SRV

    ;; ANSWER SECTION:
    consul.service.consul. 0   IN SRV 1 1 8300 foobar.node.dc1.consul.

    ;; ADDITIONAL SECTION:
    foobar.node.dc1.consul. 0   IN A   10.1.10.12

     

    RFC 2782 Lookup

    格式为:

    _<service>._<protocol>[.service][.datacenter][.domain]

    RFC 2782格式要求service和protocol以_为前缀,防止DNS记录冲突。protocol可以为service中的任何tag, 如果没有tag, 则应该使用tpc, tag的作用和上面的一样, 用来过滤service节点, 如果是tcp, 则不过滤。

     

    Prepared Query Lookups
    <query or name>.query[.datacenter].<domain>

    执行一个已保存的查询语句

     

    Connect-Capable Service Lookups
    <service>.connect.<domain>

    查看支持connect的service, connect可以用来加密连接, 以及授权。

  • 相关阅读:
    vue 学习
    vue如何新建一个项目
    Java入门之流程控制语句
    Java 入门之数据类型转换、运算符、方法
    Java 入门 常量,变量
    Java 开发工具IntelliJ IDEA
    Java 前言&开发环境搭建
    Java 学习
    装饰器模式
    springcloud 的学习(五) 路由网关
  • 原文地址:https://www.cnblogs.com/helloz/p/12115790.html
Copyright © 2020-2023  润新知