📜  领事-引导和DNS

📅  最后修改于: 2020-11-01 03:06:41             🧑  作者: Mango


在本章中,我们将讨论Consul中如何使用以下组件。

  • 自动引导
  • 手动引导
  • 使用DNS转发
  • DNS缓存

现在让我们详细讨论每个。

自动引导

引导是Consul的核心功能之一。首次安装consul时,它将自动配置为检测,识别和加入它所遇到的节点。在群集形成过程中,自动引导是Consul的内置功能。要获得有关领事的更多信息,最好的方法是使用下面的命令-

$ sudo consul info

输出将如以下屏幕快照所示。

自动引导

此命令将显示领事在实际工作场景中的实际工作。它将显示在Consul中工作的筏算法。可以使用以下命令显示自动引导命令-

$ consul agent -server -data-dir = ”/tmp/consul” -bootstrap-expect 3

在-dev模式下无法完成自动引导。

此选项通知Consul服务器节点的预期数量,并在服务器可用时自动引导。

手动引导

手动引导是Consul的一项古老而有用的功能。实际上,在Consul的早期版本中,首次安装和使用consul时必须手动进行引导。后来,人们意识到不可能在不同的时间执行此命令行操作。因此,引入了自动引导。您始终可以通过以下命令手动使用引导程序。

在这种情况下,我们将假定要构建一个3节点的领事群集。

有两种方法可以进行手动引导

  • 在2个节点上运行命令:在节点B和节点C上,您可以执行以下操作-

$ consul join 
  • 在1个节点上运行命令-

$ consul join  

使用DNS转发

DNS从端口53提供。可以使用BIND,dnsmasqiptables完成DNS转发。默认情况下,Consul代理运行一个侦听端口8600的DNS服务器。通过将DNS请求提交到Consul代理的DNS服务器,您可以获得运行您感兴趣的服务的节点的IP地址。

Consul DNS接口通过SRV记录使服务的端口信息可用。如果不在代码中手动添加逻辑,则通常只限于查询的服务的IP地址信息(即记录)。

最好的选择是让多个BIND服务器在本地运行Consul代理。 BIND服务器收到的任何查询都将转发到其本地Consul Agent DNS服务器。

使用绑定

我们可以使用Bind函数使用DNS转发。可以通过使用以下命令来完成。

$ sudo apt-get install bind9 bind9utils bind9-doc

输出将如以下屏幕快照所示。

绑定功能

让我们使用以下命令编辑/etc/bind/named.conf文件。

$ sudo vim /etc/bind/named.conf

在文件中,请将以下行添加到代码的最后一行下方。

options {
   directory "/var/cache/bind";
   recursion yes;
   allow-query { localhost; };
   
   forwarders {
      8.8.8.8;
      8.8.4.4;
   };
   dnssec-enable no;
   dnssec-validation no;
   auth-nxdomain no; # conform to RFC1035
   listen-on-v6 { any; };
};
include "/etc/bind/consul.conf";

输出将如以下屏幕快照所示。

绑定命令

您可以使用以下Bind命令配置Consul。

$ sudo vim /etc/bind/consul.conf

创建文件时添加以下行-

zone "consul" IN {
   type forward;
   forward only;
   forwarders { 127.0.0.1 port 8600; };
};

现在,您可以使用以下命令开始运行领事代理。 (请记住也要重新启动bind9服务。)

$ sudo service bind9 restart
$ consul agent -server -bootstrap-expect 1 -data-dir = /tmp/consul -configdir = [Path]

需要将系统配置为将查询发送到本地Consul代理的DNS服务器。这是通过将系统上的resolv.conf文件更新为127.0.0.1来完成的。在大多数情况下,将需要将Consul配置为在端口53上运行。

您可以将以下信息添加到/etc/resolv.conf中:

nameserver 127.0.0.1

DNS缓存

领事为所有DNS结果提供“ 0 TTL”(生存时间)值。这样可以防止任何缓存。但是,由于TTL值,可以将其设置为允许DNS结果与Consul的下游一起缓存。较高的TTL值会减少Consul服务器上的查找次数,并为客户端加快查找速度,但结果会越来越陈旧。

为此,我们将使用以下方法使用DNS缓存-

$ sudo apt-get install dnsmasq

输出将如以下屏幕快照所示。

dnsmasq

现在,我们可以做一个非常简单的配置-

$ echo "server = /consul/127.0.0.1#8600" > /etc/dnsmasq.d/10-consul

我们在此所做的全部工作是指定对领事服务的DNS请求,这些请求将由DNS服务器在端口8600上127.0.0.1的DNS服务器处理。除非您更改领事的默认设置,否则这应该起作用。

通常情况下,应使用以下命令。

$ dig @127.0.0.1 -p 8600 web.service.consul

对于Dnsmasq ,您应该使用以下命令。

$ dig web.service.consul

输出将如以下屏幕快照所示。

网络服务