Consul教程

Consul 引导和 DNS

在本章中,我们将讨论如何在 Consul 中使用以下组件。
自动引导 手动引导 使用 DNS 转发 DNS 缓存
现在让我们详细讨论每一个。

自动引导

自举是 Consul 的核心功能之一。当您第一次安装 consul 时,它会自动配置为检测、识别和加入遇到的节点。在集群形成期间,自动引导是 Consul 的内置功能。要获得有关 consul 的更多信息,最好的方法是使用以下命令-
$ sudo consul info
输出将如以下屏幕截图所示。
自动引导
此命令将显示 consul 在 实际工作场景中的实际工作情况。它将显示在 Consul 中工作的 Raft 算法。可以使用以下命令显示自动引导命令-
$ consul agent-server-data-dir = ”/tmp/consul”-bootstrap-expect 3
无法在-dev 模式下进行自动引导。
此选项通知 Consul 预期的服务器节点数量,并在服务器可用时自动引导。

手动引导

手动引导是 Consul 的一个古老而有用的功能。实际上,在Consul的早期版本中,首次安装和使用consul时必须手动进行引导。后来才意识到,不能在不同的时间执行这个命令行操作。因此,引入了自动引导。您始终可以使用以下命令手动使用引导程序。
在这种情况下,我们将假设要构建一个 3 节点的 consul 集群。
手动引导有两种选择
在 2 个节点上运行命令:在节点 B 和节点 C 上,您可以执行以下操作-
$ consul join <Node A Address>
在 1 个节点上运行命令-
$ consul join <Node B Address> <Node C Address>

使用 DNS 转发

DNS 从 端口 53 提供。 DNS 转发可以使用 BIND、dnsmasqiptables 来完成。默认情况下,Consul 代理运行一个 DNS 服务器,监听 8600 端口。通过向 Consul 代理的 DNS 服务器提交 DNS 请求,您可以获得运行您感兴趣的服务的节点的 IP 地址。
Consul DNS 接口通过 SRV 记录提供服务的端口信息。无需在代码中手动添加逻辑,您通常只能使用所查询服务的 IP 地址信息(即记录)。
最好的选择是拥有多个 BIND 服务器,每个服务器都在本地运行 Consul 代理。 BIND 服务器收到的任何查询都将转发到其本地 Consul 代理 DNS 服务器。

使用绑定

我们可以使用绑定功能使用 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; };
};
现在您可以使用以下命令开始运行您的 consul 代理。 (记得重启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 缓存

Consul 以"0 TTL"(生存时间)值提供所有 DNS 结果。这可以防止任何缓存。但是,由于 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
我们在这里所做的只是指定对 consul 服务的 DNS 请求,这些请求将由端口 8600 上 127.0.0.1 的 DNS 服务器处理。除非您更改 consul 默认值,否则这应该可以工作。
在正常情况下,应该使用以下命令。
$ dig @127.0.0.1-p 8600 web.service.consul
使用 Dnsmasq,您应该使用以下命令。
$ dig web.service.consul
输出将如以下屏幕截图所示。
web.service
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4