Konsul - praca z mikrousługami
W tym rozdziale zrozumiemy, jak mikrousługi współpracują z Consul. Dowiemy się również, jak poniższe elementy wpływają na Konsula.
- Korzystanie z docker
- Building Registrator for Service Discovery
- Korzystanie z rkt i Nomad
Omówmy teraz szczegółowo każdą z nich.
Korzystanie z platformy Docker
Przed rozpoczęciem, please do not use this setup in productionponieważ jest używany tylko do celów demonstracyjnych. Docker to usługa oparta na kontenerach, za pomocą której możemy łatwo wdrażać nasze aplikacje. Do korzystania z Consula użyjemy obrazu pod następującym linkiem –0
https://hub.docker.com/r/progrium/consul/.
Zakłada się, że Twój system ma zainstalowany i poprawnie skonfigurowany Docker. Spróbujmy ściągnąć obraz z centrum Docker, uruchamiając następujące polecenie -
$ docker pull progrium/consul
Wynik byłby taki, jak pokazano na poniższym zrzucie ekranu.
Zamierzamy opublikować niektóre interfejsy z ich portami (używając opcji -p na Dockerze) w następujący sposób.
- 8400 (RPC)
- 8500 (HTTP)
- 8600 (DNS)
Również zgodnie z wykonanym wyciągnięciem ustawimy nazwę hosta na node1Możesz zmienić to na cokolwiek chcesz, używając -h flag z własną nazwą hosta, jak pokazano poniżej.
$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap
Wynik byłby taki, jak pokazano na poniższym zrzucie ekranu.
Możesz także włączyć tryb interfejsu użytkownika dla Konsula za pomocą -
$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap -ui-dir /ui
Możesz sprawdzić dane wyjściowe oparte na interfejsie użytkownika http://localhost:8500. Poniższy zrzut ekranu daje lepsze wyobrażenie dotyczące wyjścia opartego na interfejsie użytkownika.
Aby używać konsula na różnych kontenerach docker na różnych węzłach, możemy uruchomić następujące polecenia na różnych węzłach -
Na Node1
$ docker run -d --name node1 -h node1 progrium/consul -server -bootstrap-expect 3
Gdzie, -bootstrap-expect 3 oznacza, że serwer konsula będzie czekał, aż połączą się 3 peery, zanim samoczynnie się uruchomi i stanie się działającym klastrem.
Zanim przejdziemy dalej, musimy uzyskać wewnętrzny adres IP kontenera, sprawdzając kontener. Do naszego użytku, celu, zamierzamy zadeklarować$ JOIN_IP.
$ JOIN_IP = "$(docker inspect -f '{{.NetworkSettings.IPAddress}}' node1)"
Na Node2
A więc uruchommy Node2 i powiedzmy mu, aby dołączył do Node1, używając zmiennej zadeklarowanej w programie podanym powyżej.
$docker run -d --name node2 -h node2 progrium/consul -server -join $JOIN_IP
Na Node3
$ docker run -d --name node3 -h node3 progrium/consul -server -join $JOIN_IP
Building Registrator for Service Discovery
Registrator automatycznie rejestruje i wyrejestrowuje usługi dla dowolnego kontenera Docker, sprawdzając kontenery, gdy są one online. Rejestrator, z którego zamierzamy korzystać, obsługuje obecnie podłączane rejestry usług, które obecnie obejmująConsul, Etcd i SkyDNS2. Używanie rejestratora jest wysoce zalecane, gdy korzystamy z różnych usług w sieci.
$ docker pull gliderlabs/registrator:latest
Wynik byłby taki, jak pokazano na poniższym zrzucie ekranu.
$ docker run -d \
--name = registrator \
--net = host \
--volume = /var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator:latest \
consul://localhost:8500
Wynik byłby taki, jak pokazano na poniższym zrzucie ekranu.
Otrzymane dane wyjściowe to identyfikator właśnie uruchomionego kontenera platformy Docker. Możesz sprawdzić, czy kontener działa, czy nie, za pomocą polecenia -
$ docker ps -a
Wynik będzie taki, jak pokazano na poniższym zrzucie ekranu.
Możesz również wyświetlić dzienniki rejestratora, używając następującego polecenia.
$ docker logs registrator
Korzystanie z rkt i Nomad
Rkt to kolejna usługa oparta na kontenerze, z której możesz korzystać w swoim środowisku. Jest zbudowany przezCoreOS. Głównym powodem zbudowania rkt była poprawa bezpieczeństwa, która była jednym z problemów kryzysowych Dockera, gdy był jeszcze rozwijany w latach 2013-14.
Jeśli chodzi o Consula, możemy skorzystać z Rkt Registrator do pracy nad wykrywaniem usług z Consul. Ten konkretny projekt Rejestratora, który jest objęty RKT, jest w fazie rozwoju i jestnot recommended for production level use.
Możesz sprawdzić, czy rkt jest zainstalowany, czy nie, przechodząc do jego ścieżki i uruchamiając następujące polecenie.
$ ./rkt
Możesz sprawdzić dane wyjściowe, aby sprawdzić, czy jest poprawnie zainstalowane, czy nie, jak pokazano na poniższym zrzucie ekranu.
Aby wypróbować RKT i Consul, sprawdź - https://github.com/r3boot/rkt-registrator.
Narzędzie Nomad
Jedną z najczęściej używanych i ulubionych opcji jest narzędzie Nomad. Nomad to narzędzie do zarządzania klastrem maszyn i uruchamiania na nich aplikacji. To jest podobne doMesos lub Kubernetes. Domyślnie Nomad obejmuje w sobie sterownik Docker i rkt. Jeśli więc szukasz wdrożenia kontenerów na dużą skalę w Consul. Nomad może być dobrym rozwiązaniem. Sprawdź -https://www.nomadproject.io/docs/drivers/rkt.html aby uzyskać więcej informacji na temat Nomad.