Jak ujawnić wiele aplikacji kontenerowych na tym samym porcie z równoważeniem obciążenia

Jak ujawnić wiele aplikacji kontenerowych na tym samym porcie z równoważeniem obciążenia
Docker Compose Linia poleceń narzędzie rozwiązania Docker pozwala nam wykonywać wiele aplikacji i innych mikrousług w osobnych kontenerach. Ale niemożliwe jest bezpośrednie wykonanie więcej niż jednego kontenera na tym samym porcie. W tym celu użytkownicy Docker używają różnych technik, takich jak niektóre schematy routingu, SO_REUSEPORT lub REVERS.

Ten blog ilustruje, jak ujawniać i wdrażać wiele aplikacji kontenerowych na tym samym porcie za pomocą równoważenia obciążenia.

Jak ujawnić wiele aplikacji kontenerowych na tym samym porcie z równoważeniem obciążenia?

Balansowanie obciążenia lub odwrotne proxy to technika dystrybucji ruchu z różnych kontenerów na serwerze. Równoważenie obciążenia może używać różnych algorytmów routingu, takich jak okrągły algorytm Robin, aby przydzielić spam czasowy na uruchomienie pierwszego pojemnika, a następnie drugiego pojemnika, i ponownie przełączyć się do pierwszego pojemnika i tak dalej. Może to zwiększyć dostępność, zdolność i niezawodność aplikacji.

Do ilustracji skorzystaj z wspomnianej procedury.

Krok 1: Utwórz DockerFile

Najpierw utwórz plik docker, aby pojemnik na aplikację. Na przykład zdefiniowaliśmy instrukcje, aby pojemić się na „główny.Iść”Aplikacja:

Od Golang: 1.8
WorkDir/Go/Src/App
Kopiuj główny.Iść .
RUN GO BUDLE -O WEBSERVER .
PUNKT WEJŚCIA ["./serwer internetowy"]

Tutaj mamy dwa różne „główny.Iść”Programy w dwóch różnych katalogach. W naszym scenariuszu pierwszy program użyje DockerFile do skonfigurowania usługi:

Drugi program ma również ten sam plik dokujący w swoim katalogu. Korzystając z tego pliku, zbudowaliśmy nowy obraz Docker „GO1-Image„To zostanie użyte do skonfigurowania drugiej usługi w pliku kompozycji. Aby utworzyć lub zbudować obraz, możesz przejść do naszego powiązanego artykułu:

Krok 2: Utwórz plik komponsu

Następnie utwórz plik komponsu o nazwie „Kompozycja dokera.yml”Plik zawierający następujące instrukcje:

  • "usługi”Skonfiguruj trzy różne usługi”sieć”,„Web1", I "nginx". Usługa „Web” będzie przeprowadzić pierwszy program, usługa „Web1” będzie wykonywać drugi program oraz „nginx”Będzie działać jako równowaga obciążenia, aby zrównoważyć lub zarządzać ruchem z różnych kontenerów.
  • „Web” użyje pliku Docker. Jednak usługa „Web1” użyje obrazu „go1-img„Aby kontenerować drugi program.
  • "wolumeny”Klucz służy do przymocowania nginx.plik CONF do kontenera Nginx, aby upstream usługi.
  • "zależy od”Klucz określa, że„nginx„Usługa zależy od usług„ Web ”i„ Web1 ”.
  • "porty”Klucz określa narażający port Ralancer Nginx, w którym usługi upstream będą wykonywać:
Wersja: „Alpine”
Usługi:
sieć:
zbudować: .
Web1:
Zdjęcie: Go1-Img
nginx:
Zdjęcie: nginx: najnowszy
wolumeny:
- ./nginx.conf:/etc/nginx/nginx.CONF: RO
zależy od:
- sieć
- Web1
Porty:
- 8080: 8080

Krok 3: Utwórz „nginx.plik conf ”

Następnie stwórz „nginx.conf”Złóż i skonfiguruj usługi Upstream, port słuchania wyważającego i zdefiniuj proxy„http: // all/„Aby zarządzać usługami Upstream:

użytkownik nginx;
wydarzenia
robotnik_connections 1000;

http
Upstream All
Serwer Web: 8080;
serwer Web1: 8080;

serwer
Posłuchaj 8080;
Lokalizacja /
proxy_pass http: // all/;


Krok 4: Uprzepustuj pojemniki

Wykonaj „Komposowanie dokera„Poleć do zwolnienia usług w osobnych kontenerach. Tutaj "-skala„Opcja jest używana do generowania dwóch replików pierwszego lub”sieć" praca:

Docker -Compose Up -Scale Web = 2

Aby uzyskać weryfikację, przejdź do portu eksponującego „nginx”Kontener serwisowy i sprawdź, czy akceptuje strumień z określonych usług, czy nie:

Z powyższego wyjścia można zaobserwować, że pomyślnie wykonaliśmy wiele kontenerów lub usług w tym samym porcie.

Wniosek

Aby wykonać lub ujawnić wiele aplikacji kontenerowych w tym samym porcie za pomocą bilancera obciążenia/odwrotnego proxy, najpierw utwórz „nginx.conf”Plik do konfigurowania konfiguracji równoważenia obciążenia, takich jak usługi upstreaming, porty słuchania i proxy, aby upstream. Następnie skonfiguruj usługę równoważenia obciążenia w pliku kompozycji. Ten blog pokazał, jak ujawniać i uruchamiać wiele kontenerów lub usług w tym samym porcie.