Konsul - Bootstrapping i DNS

W tym rozdziale omówimy, w jaki sposób poniższe komponenty są używane w Consul.

  • Automatyczne ładowanie początkowe
  • Ręczne uruchamianie
  • Korzystanie z przekazywania DNS
  • Buforowanie DNS

Omówmy teraz szczegółowo każdą z nich.

Automatyczne uruchamianie

Bootstrapping to jedna z podstawowych funkcji Consul. Podczas pierwszej instalacji programu Consul jest on automatycznie konfigurowany do wykrywania, identyfikacji i łączenia napotkanych węzłów. Podczas tworzenia klastra automatyczne ładowanie początkowe jest wbudowaną funkcją programu Consul. Aby uzyskać więcej informacji na temat konsula, najlepiej jest użyć poniższej komendy -

$ sudo consul info

Wynik byłby taki, jak pokazano na poniższym zrzucie ekranu.

To polecenie pokaże faktyczną pracę konsula w real working scenarios. Wyświetli algorytm tratwy działający w Consul. Polecenie automatycznego ładowania początkowego można wyświetlić za pomocą następującego polecenia -

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

Automatic bootstrapping cannot be done in -dev mode.

Ta opcja informuje konsula o spodziewanej liczbie węzłów serwera i automatycznie uruchamia się, gdy serwery są dostępne.

Ręczne uruchamianie

Ręczne uruchamianie to stara i przydatna funkcja Consula. W rzeczywistości, we wcześniejszej wersji Consula, bootstrap musi być wykonywany ręcznie podczas instalacji i korzystania z Consula po raz pierwszy. Później zdano sobie sprawę, że nie jest możliwe wykonanie tej operacji w wierszu poleceń w różnych momentach. W związku z tym wprowadzono automatyczne ładowanie początkowe. Zawsze możesz użyć ładowania początkowego ręcznie, używając następujących poleceń.

In this case, we will assume that a 3-node consul cluster is to be built.

Istnieją dwie opcje ręcznego ładowania początkowego

  • Uruchamianie poleceń na 2 węzłach: W węźle B i węźle C możesz wykonać następujące czynności -

$ consul join <Node A Address>
  • Uruchomienie polecenia na 1 węźle -

$ consul join <Node B Address> <Node C Address>

Korzystanie z przekazywania DNS

DNS jest obsługiwany z port 53. Przekierowanie DNS można wykonać za pomocąBIND, dnsmasq i iptables. Domyślnie agent Consul uruchamia serwer DNS nasłuchujący na porcie 8600. Wysyłając żądania DNS do serwera DNS agenta Consul, można uzyskać adres IP węzła obsługującego interesującą nas usługę.

Interfejs Consul DNS udostępnia informacje o porcie dla usługi za pośrednictwem SRV records. Bez ręcznego dodawania logiki w kodzie, zazwyczaj ogranicza się tylko do informacji o adresie IP (tj. Rekordu) usługi, o którą pytasz.

Najlepszą opcją jest posiadanie wielu serwerów BIND, z których każdy uruchamia lokalnie agenta Consul. Wszelkie zapytania otrzymane przez serwer BIND byłyby przekazywane do lokalnego serwera DNS agenta Consul Agent.

Korzystanie z Bind

Możemy użyć przekazywania DNS za pomocą funkcji Bind. Można to zrobić za pomocą następującego polecenia.

$ sudo apt-get install bind9 bind9utils bind9-doc

Wynik byłby taki, jak pokazano na poniższym zrzucie ekranu.

Zmodyfikujmy plik /etc/bind/named.conf za pomocą następującego polecenia.

$ sudo vim /etc/bind/named.conf

W pliku dodaj następujące wiersze pod ostatnim wierszem kodu.

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";

Wynik byłby taki, jak pokazano na poniższym zrzucie ekranu.

Możesz wykonać następujące polecenie Bind, aby skonfigurować Consula.

$ sudo vim /etc/bind/consul.conf

Podczas tworzenia pliku dodaj następujące wiersze -

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

Teraz możesz rozpocząć uruchamianie agenta konsula za pomocą następującego polecenia. (Pamiętaj, aby również zrestartować usługę bind9.)

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

System musi być skonfigurowany do wysyłania zapytań do serwera DNS lokalnego agenta Consul. Odbywa się to poprzez aktualizacjęresolv.confw systemie, aby wskazywał na 127.0.0.1. W większości przypadków Consul będzie musiał być skonfigurowany do pracy na porcie 53.

Możesz dodać następujące informacje do /etc/resolv.conf:

nameserver 127.0.0.1

Buforowanie DNS

Consul obsługuje wszystkie wyniki DNS z wartością „0 TTL” (Time to Live). Zapobiega to buforowaniu. Jednak ze względu na wartości TTL można ustawić zezwalanie na buforowanie wyników DNS z usługą podrzędną Consul. Wyższe wartości TTL zmniejszają liczbę wyszukiwań na serwerach Consul i przyspieszają wyszukiwania klientów, kosztem coraz bardziej przestarzałych wyników.

W tym celu użyjemy buforowania DNS, korzystając z poniższej metody -

$ sudo apt-get install dnsmasq

Wynik byłby taki, jak pokazano na poniższym zrzucie ekranu.

Teraz możemy zrobić bardzo prostą konfigurację -

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

Wszystko, co tutaj robimy, to określanie, że żądania DNS dla usług konsulowych, które mają być obsługiwane przez serwer DNS pod adresem 127.0.0.1 na porcie 8600. Powinno to działać, chyba że zmienisz domyślne ustawienia konsula.

W normalnych przypadkach należy użyć następującego polecenia.

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

Z Dnsmasq, powinieneś użyć następującego polecenia.

$ dig web.service.consul

Wynik byłby taki, jak pokazano na poniższym zrzucie ekranu.