📅  最后修改于: 2020-11-01 03:06:41             🧑  作者: Mango
在本章中,我们将讨论Consul中如何使用以下组件。
现在让我们详细讨论每个。
引导是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从端口53提供。可以使用BIND,dnsmasq和iptables完成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结果提供“ 0 TTL”(生存时间)值。这样可以防止任何缓存。但是,由于TTL值,可以将其设置为允许DNS结果与Consul的下游一起缓存。较高的TTL值会减少Consul服务器上的查找次数,并为客户端加快查找速度,但结果会越来越陈旧。
为此,我们将使用以下方法使用DNS缓存-
$ sudo apt-get install 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
输出将如以下屏幕快照所示。