You are on page 1of 53

101

Azure Container Service:

11
Zoptymalizowany hosting w chmurze

01101
dla aplikacji opartych o Docker

101
1011

1011101101101011000011011110111111

0110
1011

000
0110

11011
1011

1
0000

101
1101

1111
1110

1
1111
11

utorzy:
Ross Gardler i Neil Peterson
Rozdzia 1: Wprowadzenie do Azure Container Service

Rozdzia 1: Wprowadzenie do Azure


Container Service
Azure Container Service uatwia tworzenie, konfiguracj oraz zarzdzanie klastrem maszyn
wirtualnych prekonfigurowanych do konteneryzacji aplikacji. Posiada on zoptymalizowan
konfiguracj popularnych narzdzi open-source do planowania oraz orkiestracji, dziki czemu
moesz wykorzysta swoje umiejtnoci, lub skorzysta z ekspertyzy spoecznoci, aby
zdeployowa i zarzdza aplikacjami kontenerowymi w chmurze Microsoft Azure.

Azure Container Service uywa formatu Docker, aby zapewni pen elastyczno twojej
aplikacji. Wspiera take Marathon, DC/OS czy Docker Swarm, dziki czemu moesz skalowa
swoje aplikacje do tysicy lub wicej kontenerw.

Uywajc Azure Container Service, moesz skorzysta z zaawansowanych funkcjonalnoci,


jednoczenie zachowujc elastyczno aplikacji (wraz z elastycznoci na poziomie warstw
orkiestracji).

Wykorzystanie Azure Container Service


Naszym celem zastosowania Azure Container Service jest zapewnienie kontenerowi
rodowiska hostingowego poprzez wykorzystanie narzdzi open-source i technologii
popularnych wrd naszych klientw. Wystawiamy standardowe endpointy API dla wybranego
przez ciebie orkiestratora (DC/OS lub Docker Swarm). Korzystajc z API, moesz podczy
kade oprogramowanie zdolne do komunikacji z endpointami API. Na przykad, w przypadku
Docker Swarm moesz uy Dockerowego wiersza polece (CLI), a z DC/OS moesz uy DCOS
CLI.

-1-
Rozdzia 1: Wprowadzenie do Azure Container Service

Tworzenie klastra Docker za pomoc Azure Container


Service
Rozpocznij korzystanie z Azure Container Service robic deploy klastra poprzez portal
(wyszukaj Azure Container Service). Wykorzystaj szablon Azure Resource Manager (Docker
Swarm lub DC/OS) lub uyj CLI. Moesz zmodyfikowa gotowe szablony o dodatkowe
konfiguracje Azure. Jeli chcesz dowiedzie si wicej sprawd: Deploy an Azure Container
Service cluster.

Wdraanie aplikacji
Azure Container Service wspiera zarwno Docker Swarm jak i DC/OS. W zalenoci od twojego
wyboru orkiestratora, deploy bdzie si rni.

Uycie DC/OS
DC/OS jest rozproszonym systemem operacyjnym bazujcym na rdzeniu rozproszonych
systemw Apache Mesos. Apache Mesos jest czci Apache Software Foundation i zawiera
kontrybucje wielu uytkownikw oraz najwikszych firm IT.

DC/OS i Apache Mesos posiadaj imponujcy zestaw funkcjonalnoci:

Sprawdzon skalowalno

Odporne na bdy replikowane klastry master i slave z wykorzystaniem Apache ZooKeeper

Wsparcie dla kontenerw formatu Docker

Natywn izolacj pomidzy zadaniami wewntrz kontenerw Linux

Wielozasobowe planowanie (pami, CPU, dysk, porty)

API Java, Python, i C++ dla programowania aplikacji wspbienych

Podgld stanu klastra poprzez web UI

-2-
Rozdzia 1: Wprowadzenie do Azure Container Service

Domylnie, DC/OS na Azure Container Service (ACS) zawiera platform Marathon do


planowania obcie. Uycie ACS wewntrz DC/OS pozwala na wykorzystanie Mesosphere
Universe, zawierajcego Spark, Hadoop, Cassandra i wiele innych.

Uycie Marathon
Marathon dziaa na Apache Mesos, jako orkiestrator dla innych aplikacji i serwisw. Marathon
zapewnia interfejs uytkownika, poprzez ktry moesz zrobi deploy aplikacji. Moesz to
sprawdzi pod linkiem w stylu http://DNS_PREFIX.REGION.cloudapp.azure.com gdzie
DNS_PREFIX i REGION s zdefiniowane podczas deploymentu. Oczywicie, moesz rwnie
uy wasnej nazwy DNS. Dowiedz si wicej o zarzdzaniu kontenerami poprzez interfejs
uytkownika sieci web.

Moesz take uy REST API do komunikacji z Marathon. Dostpnych jest wiele bibliotek dla
kadego z narzdzi i jzykw oprogramowania. Oczywicie, moesz te uy protokou HTTP w
dowolnym jzyku. Dodatkowo, wiele popularnych narzdzi DevOps wspiera Marathon.

-3-
Rozdzia 2: Wdraanie Azure Container Service

Zapewnia ci to elastyczno podczas pracy z klastrami Azure Container Service. Dowiedz si


wicej o zarzdzaniu kontenerem poprzez REST API.

Uycie Docker Swarm


Docker Swarm zapewnia natywne klastrowanie. Docker Swarm obsuguje standardowe Docker
API, co sprawia, e kade narzdzie, ktre komunikuje si z demonem Docker moe
wykorzysta Swarm do skalowania wielu hostw na Azure Container Service.

Wspierane narzdzia do zarzdzania kontenerami na klastrze Swarm to m. in. :

Dokku

Docker CLI i Docker Compose

Krane

Jenkins

Rozdzia 2: Wdraanie Azure Container


Service
Azure Container Service zapewnia szybkie wdraanie popularnych rozwiza typu open source
sucych do aranowania i klastrowania kontenerw. Za pomoc usugi kontenera platformy
Azure mona wdraa klastry DC/OS i Docker Swarm przy uyciu szablonw usugi Azure
Resource Manager i portalu Azure. Te klastry s wdraane za pomoc Azure VM Scale Sets, a
podczas pracy korzystaj z magazynu danych i obsugi sieci na platformie Azure. Do uzyskania
dostpu do usugi Azure Container Service niezbdna jest subskrypcja platformy Azure. Jeli jej
nie masz, moesz utworzy konto bezpatnej wersji prbnej.

-4-
Rozdzia 2: Wdraanie Azure Container Service

Ten dokument zawiera opis krokw wdraania klastra Azure Container Service przy uyciu
portalu Azure, wiersza polecenia platformy Azure i moduu Azure PowerShell.

Tworzenie usugi przy uyciu witryny Azure Portal


Zaloguj si w witrynie Azure Portal, wybierz pozycj New i w portalu Azure Marketplace
wyszukaj usug Azure Container Service.

Wybierz pozycj Azure Container Service i kliknij przycisk Create.

-5-
Rozdzia 2: Wdraanie Azure Container Service

Wprowad nastpujce informacje:

User name: jest to nazwa uytkownika, ktra bdzie uywana dla konta na poszczeglnych
maszynach wirtualnych i zestawach skali maszyn wirtualnych w klastrze usugi Azure Container
Service.

Subscription: wybierz subskrypcj platformy Azure.

Resource group: wybierz istniejc grup zasobw lub utwrz now.

Location: wybierz region platformy Azure dla wdroenia usugi Azure Container Service.

SSH public key: dodaj klucz publiczny, ktry bdzie uywany do uwierzytelniania wzgldem
maszyn wirtualnych usugi Azure Container Service. Bardzo wane jest, aby klucz ten nie
zawiera znakw nowej linii i mia prefiks ssh-rsa i postfiks nazwa_uytkownika@domena.
Powinien wyglda podobnie do poniszego: ssh-rsa AAAAB3Nz...<...>...UcyupgH
azureuser@linuxvm. Aby uzyska wskazwki dotyczce tworzenia kluczy Secure Shell (SSH),
zobacz artykuy dotyczce systemu Linux i Windows.

Aby kontynuowa, kliknij przycisk OK.

-6-
Rozdzia 2: Wdraanie Azure Container Service

Wybierz typ orkiestracji. Dostpne opcje to:

DC/OS: wdraa klaster DC/OS.

Swarm: wdraa klaster Docker Swarm.

Aby kontynuowa, kliknij przycisk OK.

-7-
Rozdzia 2: Wdraanie Azure Container Service

Wprowad nastpujce informacje:

Master count: liczba serwerw gwnych w klastrze.

Agent count: w przypadku opcji Docker Swarm jest to pocztkowa liczba agentw w zestawie
skali agenta. W przypadku opcji DC/OS jest to pocztkowa liczba agentw w prywatnym
zestawie skali. Ponadto, jest tworzony publiczny zestaw skali, zawierajcy wstpnie okrelon
liczb agentw. Liczba agentw w tym publicznym zestawie skali zaley od liczby serwerw
gwnych utworzonych w klastrze: jeden agent publiczny dla jednego serwera gwnego i
dwch agentw publicznych dla trzech lub piciu serwerw gwnych.

Agent virtual machine size: rozmiar maszyn wirtualnych agenta.

DNS prefix: unikatowa w zakresie globalnym nazwa, ktra bdzie suy jako prefiks
kluczowych czci w peni kwalifikowanych nazw domen dla usugi.

Aby kontynuowa, kliknij przycisk OK.

-8-
Rozdzia 2: Wdraanie Azure Container Service

Kliknij przycisk OK po zakoczeniu weryfikacji usugi.

Kliknij przycisk Create, aby rozpocz proces wdraania.

-9-
Rozdzia 2: Wdraanie Azure Container Service

Jeli wybrano opcj przypicia wdroenia do witryny Azure Portal, widoczny jest stan
wdroenia.

Po zakoczeniu wdraania klaster Azure Container Service jest gotowy do uycia.

Tworzenie usugi przy uyciu wiersza polecenia platformy


Azure
Do utworzenia wystpienia usugi kontenera platformy Azure przy uyciu wiersza polecenia
(Azure CLI) niezbdna jest subskrypcja platformy Azure. Jeli jej nie masz, moesz utworzy
konto bezpatnej wersji prbnej. Musisz rwnie zainstalowa i skonfigurowa interfejs wiersza
polecenia platformy Azure.

- 10 -
Rozdzia 2: Wdraanie Azure Container Service

Aby wdroy klaster DC/OS lub Docker Swarm, wybierz jeden z poniszych szablonw usugi
GitHub. Zwr uwag na to, e oba te szablony s takie same rni si tylko domylnie
wybran aranacj.

Szablon DC/OS

Szablon Swarm

Nastpnie upewnij si, e Azure CLI zosta poczony z subskrypcj platformy Azure. Moesz to
zrobi za pomoc nastpujcego polecenia:
azure account show

Jeli konto platformy Azure nie zostanie zwrcone, uyj poniszego polecenia, aby zalogowa
si do platformy Azure za pomoc CLI.
azure login -u user@domain.com

Nastpnie skonfiguruj narzdzia Azure CLI, aby umoliwi korzystanie z usugi Azure Resource
Manager.
azure config mode arm

Utwrz grup zasobw platformy Azure oraz klaster usugi Container Service przy uyciu
poniszego polecenia, gdzie:

RESOURCE_GROUP to nazwa grupy zasobw, ktrej chcesz uy dla tej usugi.

LOCATION to region platformy Azure, w ktrym zostanie utworzone wdroenie grupy


zasobw i usugi Azure Container Service.

TEMPLATE_URI (identyfikator_URI_szablonu) to lokalizacja pliku wdroenia. Uwaga: musi to


by plik Raw, a nie wskanik do interfejsu uytkownika usugi GitHub. Aby znale ten adres
URL, wybierz plik azuredeploy.json w usudze GitHub i kliknij przycisk Raw.

Uwaga:

W przypadku uruchamiania tego polecenia, CLI wywietli monit o wprowadzenie wartoci


parametrw wdroenia.
azure group create -n RESOURCE_GROUP DEPLOYMENT_NAME -l LOCATION --template-uri
TEMPLATE_URI

Wprowadzanie parametrw szablonu


Ta wersja polecenia wymaga interaktywnego zdefiniowania parametrw. Jeli chcesz poda
parametry, takie jak cig sformatowany przy uyciu notacji JSON, moesz to zrobi za pomoc
argumentu -p. Na przykad:
azure group deployment create RESOURCE_GROUP DEPLOYMENT_NAME --template-uri
TEMPLATE_URI -p '{ "param1": "value1" }'

- 11 -
Rozdzia 2: Wdraanie Azure Container Service

Moesz rwnie udostpni plik z parametrami sformatowanymi przy uyciu notacji JSON,
korzystajc z argumentu -e:
azure group deployment create RESOURCE_GROUP DEPLOYMENT_NAME --template-uri
TEMPLATE_URI -e PATH/FILE.JSON

Aby wywietli przykadowy plik parametrw o nazwie azuredeploy.parameters.json,


wyszukaj go w serwisie GitHub przy uyciu szablonw Azure Container Service.

Tworzenie usugi przy uyciu programu PowerShell


Klaster Azure Container Service mona rwnie wdroy przy uyciu programu PowerShell. Ten
dokument jest oparty na wersji 1.0 moduu Azure PowerShell.

Aby wdroy klaster DC/OS lub Docker Swarm, wybierz jeden z poniszych szablonw. Zwr
uwag na to, e oba te szablony s takie same rni si tylko domylnie wybran
aranacj.

Szablon DC/OS

Szablon Swarm

Przed utworzeniem klastra w ramach subskrypcji platformy Azure sprawd, czy nastpio
zalogowanie do platformy Azure z poziomu sesji programu PowerShell. W tym celu moesz
uy polecenia Get-AzureRMSubscription:
Get-AzureRmSubscription

Jeli musisz zalogowa si do platformy Azure, uyj polecenia Login-AzureRMAccount:


Login-AzureRmAccount

Jeli wdraasz do nowej grupy zasobw, musisz najpierw utworzy grup zasobw. Aby
utworzy now grup zasobw, uyj polecenia New-AzureRmResourceGroup, okrelajc nazw
grupy zasobw i region docelowy:
New-AzureRmResourceGroup -Name GROUP_NAME -Location REGION

Po utworzeniu grupy zasobw moesz utworzy klaster przy uyciu poniszego polecenia.
Identyfikator URI danego szablonu zostanie okrelony dla parametru -TemplateUri. W
przypadku uruchamiania tego polecenia program PowerShell wywietli monit o wprowadzenie
wartoci parametrw wdroenia.
New-AzureRmResourceGroupDeployment -Name DEPLOYMENT_NAME -ResourceGroupName
RESOURCE_GROUP_NAME -TemplateUri TEMPLATE_URI

Wprowadzanie parametrw szablonu


Jeli znasz program PowerShell, wiesz, e moesz przechodzi przez dostpne parametry
polecenia cmdlet, wpisujc znak minus (-), a nastpnie naciskajc klawisz TAB. Ta funkcja dziaa
rwnie w przypadku parametrw zdefiniowanych w szablonie. Po wpisaniu nazwy szablonu
polecenie cmdlet pobiera szablon, analizuje parametry i dynamicznie dodaje parametry

- 12 -
Rozdzia 3: czenie z Azure Container Service

szablonu do polecenia. Dziki temu mona bardzo atwo okreli wartoci parametrw
szablonu. A jeli zapomnisz o podaniu wartoci wymaganego parametru, w programie
PowerShell zostanie wywietlony monit dotyczcy tej wartoci.

Poniej znajduje si pene polecenie z uwzgldnionymi parametrami. Moesz poda wasne


wartoci nazw zasobw.
New-AzureRmResourceGroupDeployment -ResourceGroupName RESOURCE_GROUP_NAME-
TemplateURI TEMPLATE_URI -adminuser value1 -adminpassword value2 ....

Nastpne kroki
Teraz, gdy masz dziaajcy klaster, moesz zapozna si z tymi dokumentami, aby uzyska
szczegowe informacje na temat pocze i zarzdzania:

czenie z klastrem usugi kontenera platformy Azure

Wsppraca z usug Azure Container Service i rozwizaniem DC/OS

Wsppraca z usug Azure Container Service i rozwizaniem Docker Swarm

Rozdzia 3: czenie z Azure Container


Service
Klastry DC/OS i Docker Swarm wdraane przez usug Azure Container Service uwidaczniaj
punkty kocowe REST. Te punkty kocowe nie s jednak otwarte dla uytkownikw
zewntrznych. Aby zarzdza tymi punktami kocowymi, naley utworzy tunel Secure Shell
(SSH). Po ustanowieniu tunelu SSH moesz uruchamia polecenia wzgldem punktw
kocowych klastra i wywietla interfejs uytkownika klastra za porednictwem przegldarki we
wasnym systemie. Ten dokument zawiera opis krokw tworzenia tunelu SSH w systemach
Linux, OS X i Windows.

Uwaga:

Sesj SSH moesz utworzy przy uyciu systemu zarzdzania klastrem. Nie jest to jednak
zalecane. Praca bezporednio w systemie zarzdzania niesie ze sob ryzyko przypadkowego
wprowadzenia zmian konfiguracji.

Tworzenie tunelu SSH w systemie Linux lub OS X


Pierwszym krokiem tworzenia tunelu SSH w systemie Linux lub OS X jest zlokalizowanie
publicznej nazwy DNS serwerw gwnych. W tym celu rozwi grup zasobw, aby wywietli
poszczeglne zasoby. Znajd i wybierz publiczny adres IP serwera gwnego. Spowoduje to
otwarcie bloku z informacjami o publicznym adresie IP, w tym o nazwie DNS. Zapisz t nazw
do pniejszego uycia.

- 13 -
Rozdzia 3: czenie z Azure Container Service

Teraz otwrz powok i uruchom ponisze polecenie, gdzie:

PORT to port punktu kocowego, ktry chcesz udostpni. W przypadku klastra Swarm jest to
port 2375. W przypadku klastra DC/OS jest to port 80.
USERNAME (nazwa_uytkownika) to nazwa uytkownika podana podczas wdraania klastra.
DNSPREFIX (prefiks_DNS) to prefiks DNS podany podczas wdraania klastra.
REGION to region, w ktrym znajduje si grupa zasobw.
PATH_TO_PRIVATE_KEY [OPCJONALNIE] to cieka do klucza prywatnego odpowiadajcego
kluczowi publicznemu podanemu podczas tworzenia klastra usugi Azure Container Service.
Uyj tej opcji z flag -i.
ssh -L PORT:localhost:PORT -f -N
[USERNAME]@[DNSPREFIX]mgmt.[REGION].cloudapp.azure.com -p 2200

Port poczenia SSH to 2200, a nie standardowy port 22.

Tunel DC/OS
Aby otworzy tunel do punktw kocowych powizanych z klastrem DC/OS, wykonaj
polecenie podobne do nastpujcego:
sudo ssh -L 80:localhost:80 -f -N
azureuser@acsexamplemgmt.japaneast.cloudapp.azure.com -p 2200

Teraz moesz uzyskiwa dostp do punktw kocowych powizanych z klastrem DC/OS w


nastpujcych lokalizacjach:

DC/OS: http://localhost/

Marathon: http://localhost/marathon

Mesos: http://localhost/mesos

- 14 -
Rozdzia 3: czenie z Azure Container Service

Podobnie za pomoc tego tunelu moesz uzyskiwa dostp do interfejsw API REST dla
poszczeglnych aplikacji.

Tunel Swarm
Aby otworzy tunel do punktu kocowego Swarm, wykonaj polecenie podobne do
nastpujcego:
ssh -L 2375:localhost:2375 -f -N
azureuser@acsexamplemgmt.japaneast.cloudapp.azure.com -p 2200

Teraz moesz ustawi zmienn rodowiskow DOCKER_HOST w nastpujcy sposb. Moesz


kontynuowa korzystanie z wiersza polecenia Docker CLI w normalny sposb.
export DOCKER_HOST=:2375

Tworzenie tunelu SSH w systemie Windows


Istnieje wiele opcji tworzenia tuneli SSH w systemie Windows. W tym dokumencie opisano
sposb wykonania tej czynnoci przy uyciu programu PuTTY.

Pobierz program PuTTY do systemu Windows i uruchom aplikacj.

Wprowad nazw hosta zoon z nazwy uytkownika administratora klastra i publicznej nazwy
DNS pierwszego serwera gwnego w klastrze. Nazwa hosta bdzie wyglda nastpujco:
adminuser@PublicDNS. W polu Port wprowad warto 2200.

Wybierz opcje SSH i Uwierzytelnianie. Dodaj plik klucza prywatnego na potrzeby


uwierzytelniania.

- 15 -
Rozdzia 3: czenie z Azure Container Service

Wybierz pozycj Tunele i skonfiguruj nastpujce przekazane porty: - Port rdowy:


zgodnie z wasnymi preferencjami: uyj portu 80 w przypadku opcji DC/OS lub portu 2375 w
przypadku opcji Swarm. - Miejsce docelowe: uyj wartoci localhost:80 w przypadku opcji
DC/OS lub wartoci localhost:2375 w przypadku opcji Swarm.

Poniszy przykad zosta skonfigurowany na potrzeby opcji DC/OS, ale bdzie wyglda
podobnie w przypadku rozwizania Docker Swarm.

Uwaga:

W przypadku tworzenia tego tunelu nie mona uywa portu 80.

- 16 -
Rozdzia 3: czenie z Azure Container Service

Po zakoczeniu zapisz konfiguracj poczenia, a nastpnie nawi poczenie z sesj


programu PuTTY. Po nawizaniu poczenia konfiguracja portw bdzie dostpna w dzienniku
zdarze programu PuTTY.

Po skonfigurowaniu tunelu dla platformy DC/OS mona uzyskiwa dostp do powizanego


punktu kocowego w nastpujcych lokalizacjach:

DC/OS: http://localhost/

Marathon: http://localhost/marathon

Mesos: http://localhost/mesos

- 17 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Po skonfigurowaniu tunelu dla rozwizania Docker Swarm mona uzyskiwa dostp do klastra
Swarm za porednictwem interfejsu wiersza polecenia programu Docker. Najpierw naley
skonfigurowa zmienn rodowiskow systemu Windows o nazwie DOCKER_HOST i wartoci
:2375.

Nastpne kroki
Wdraanie kontenerw i zarzdzanie nimi przy uyciu rozwizania DC/OS lub Swarm:

Wsppraca z usug Azure Container Service i rozwizaniem DC/OS

Wsppraca z usug Azure Container Service i rozwizaniem Docker Swarm

Rozdzia 4: DC/OS Zarzdzenie kontenerem


przy uyciu interfejsu uytkownika sieci Web
Platforma DC/OS dostarcza rodowisko wdraania i skalowania obcie klastrowanych,
zapewniajc jednoczenie abstrakcyjno sprztu bazowego. Ponad systemem DC/OS istnieje
platforma, ktra zarzdza planowaniem i wykonywaniem obcie obliczeniowych.

Platformy s dostpne dla wielu popularnych zada. W tym dokumencie opisano, jak tworzy i
skalowa wdroenia kontenerw przy uyciu platformy Marathon. Przed przystpieniem do
pracy nad tymi przykadami bdziesz potrzebowa klastra DC/OS skonfigurowanego w
usudze kontenera platformy Azure. Potrzebna bdzie take zdalna czno z tym klastrem.
Aby uzyska wicej informacji na temat tych elementw, zobacz nastpujce artykuy:

Wdraanie klastra usugi kontenera platformy Azure

czenie z klastrem usugi kontenera platformy Azure

Przegld interfejsu uytkownika platformy DC/OS


Korzystajc z ustanowionego tunelu Secure Shell (SSH), przejd do strony http://localhost/.
Spowoduje to zaadowanie interfejsu uytkownika sieci Web platformy DC/OS oraz
wywietlenie informacji o klastrze, w tym dotyczcych uywanych zasobw, aktywnych
agentw i uruchomionych usug.

- 18 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Przegld interfejsu uytkownika platformy Marathon


Aby wywietli interfejs uytkownika platformy Marathon, przejd do strony
http://localhost/Marathon. Na tym ekranie moesz uruchomi nowy kontener lub inn
aplikacj w klastrze DC/OS usugi kontenera platformy Azure. Moesz rwnie sprawdzi
informacje dotyczce dziaajcych kontenerw i aplikacji.

- 19 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Wdraanie kontenera w formacie programu Docker


Aby wdroy nowy kontener przy uyciu platformy Marathon, kliknij przycisk Create
Application (Utwrz aplikacj), a nastpnie wprowad do formularza nastpujce informacje:

Pole Warto

ID nginx

Image (Obraz) nginx

Network (Sie) Bridged (Pomostowa)

Host Port (Port hosta) 80

- 20 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Pole Warto

Protocol (Protok) TCP

- 21 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Jeli chcesz statycznie mapowa port kontenera do portu agenta, musisz uy trybu JSON. W
tym celu przecz kreatora nowej aplikacji w tryb JSON Mode (Tryb JSON) za pomoc
przecznika. Nastpnie wprowad nastpujce dane w sekcji portMappings definicji aplikacji.

- 22 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

W tym przykadzie port 80 kontenera jest powizany z portem 80 agenta DC/OS. Po


wprowadzeniu tej zmiany moesz wyczy tryb JSON w kreatorze.
Copy

"hostPort": 80,

Klaster DC/OS jest wdraany z zestawem agentw: prywatnym i publicznym. Aby klaster mg
uzyskiwa dostp do aplikacji z Internetu, naley wdroy aplikacje w agencie publicznym. W
tym celu wybierz kart Optional (Opcjonalne) kreatora nowej aplikacji i wprowad warto
slave_public w polu Accepted Resource Roles (Zaakceptowane role zasobw).

- 23 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Po powrocie do strony gwnej platformy Marathon widoczny jest stan wdroenia kontenera.

- 24 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Po przeczeniu si z powrotem do interfejsu uytkownika sieci Web platformy DC/OS


(http://localhost/) zobaczysz, e zadanie (w tym przypadku kontener w formacie programu
Docker) jest uruchomione w klastrze DC/OS.

Widoczny jest take wze klastra, w ktrym zadanie jest uruchomione.

- 25 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Skalowanie kontenerw

Interfejs uytkownika platformy Marathon umoliwia skalowanie liczby wystpie kontenera.


W tym celu przejd do strony Marathon, wybierz kontener, ktry chcesz skalowa, a nastpnie
kliknij przycisk Scale (Skaluj). W oknie dialogowym Scale Application (Skalowanie aplikacji)
wprowad dan liczb wystpie kontenera i wybierz pozycj Scale Application (Skaluj
aplikacj).

Po zakoczeniu operacji skalowania widocznych bdzie wiele wystpie tego samego zadania
rozmieszczonych w agentach DC/OS.

- 26 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Nastpne kroki
Praca z platform DC/OS i interfejsem API platformy Marathon

Pene wykorzystanie usugi Azure Container Service dziki rozwizaniu Mesos

- 27 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Zarzdzenie kontenerem przy uyciu


interfejsu API REST
Platforma DC/OS dostarcza rodowisko wdraania i skalowania obcie klastrowanych,
zapewniajc jednoczenie abstrakcyjno sprztu bazowego. Ponad systemem DC/OS istnieje
platforma, ktra zarzdza planowaniem i wykonywaniem obcie obliczeniowych.

Platformy s dostpne dla wielu popularnych zada. W tym dokumencie opisano, jak tworzy i
skalowa wdroenia kontenerw przy uyciu platformy Marathon. Przed przystpieniem do
pracy nad tymi przykadami bdziesz potrzebowa klastra DC/OS skonfigurowanego w
usudze kontenera platformy Azure. Potrzebna bdzie take zdalna czno z tym klastrem.
Aby uzyska wicej informacji na temat tych elementw, zobacz nastpujce artykuy:

Wdraanie klastra usugi kontenera platformy Azure

czenie z klastrem usugi kontenera platformy Azure

Po nawizaniu poczeniu z klastrem usugi kontenera platformy Azure masz dostp do


platformy DC/OS i powizanych interfejsw API REST pod adresem http://localhost:local-port.
W przykadach przedstawionych w tym dokumencie zaoono, e tunelowanie korzysta z portu
80. Na przykad dostp do punktu kocowego platformy Marathon mona uzyska pod
adresem http://localhost/marathon/v2/. Aby uzyska wicej informacji o rnych
interfejsach API, zobacz dokumentacj Mesosphere dotyczc interfejsu API platformy
Marathon i interfejsu API programu Chronos oraz dokumentacj Apache dotyczc interfejsu
API aplikacji Mesos Scheduler.

Gromadzenie informacji z platform DC/OS i Marathon


Przed wdroeniem kontenerw do klastra DC/OS zbierz okrelone informacje o klastrze
DC/OS, takie jak nazwy i biecy stan agentw DC/OS. W tym celu wykonaj zapytanie w
punkcie kocowym master/slaves interfejsu API REST platformy DC/OS. Jeli operacja
zostanie wykonana pomylnie, wywietlona zostanie lista agentw DC/OS i szereg waciwoci
kadego z nich.
curl http://localhost/mesos/master/slaves

Teraz uyj punktu kocowego /apps platformy Marathon, aby sprawdzi biece wdroenia
aplikacji w klastrze DC/OS. Jeli jest to nowy klaster, pojawi si pusta tablica aplikacji.
curl localhost/marathon/v2/apps

{"apps":[]}

Wdraanie kontenera w formacie programu Docker


Kontenery w formacie programu Docker mona wdraa za porednictwem platformy
Marathon przy uyciu pliku JSON, ktry opisuje zamierzone wdroenie. W poniszym

- 28 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

przykadzie zostanie wdroony kontener Nginx, ktry powie port 80 agenta DC/OS z portem
80 kontenera. Warto zauway, e waciwo acceptedResourceRoles jest ustawiona na
warto slave_public. Spowoduje to wdroenie kontenera w agencie w zestawie skali agenta
publicznego.
{
"id": "nginx",
"cpus": 0.1,
"mem": 16.0,
"instances": 1,
"acceptedResourceRoles": [
"slave_public"
],
"container": {
"type": "DOCKER",
"docker": {
"image": "nginx",
"network": "BRIDGE",
"portMappings": [
{ "containerPort": 80, "hostPort": 80, "servicePort": 9000, "protocol":
"tcp" }
]
}
}
}

W celu wdroenia kontenera w formacie programu Docker utwrz wasny plik JSON lub uyj
przykadu dostpnego w wersji demonstracyjnej usugi kontenera platformy Azure. Zapisz go
w dostpnej lokalizacji. Nastpnie w celu wdroenia kontenera uruchom nastpujce
polecenie. Okrel nazw pliku JSON.
curl -X POST http://localhost/marathon/v2/apps -d @marathon.json -H "Content-type:
application/json"

Dane wyjciowe bd mie posta podobn do nastpujcej:


{"version":"2015-11-20T18:59:00.494Z","deploymentId":"b12f8a73-f56a-4eb1-9375-
4ac026d6cdec"}

Teraz po wykonaniu zapytania dotyczcego aplikacji na platformie Marathon nowa aplikacja


pojawi si w danych wyjciowych.
curl localhost/marathon/v2/apps

Skalowanie kontenerw
Interfejs API platformy Marathon umoliwia take skalowanie w poziomie oraz skalowanie na
zewntrz wdroe aplikacji. W poprzednim przykadzie wdroono jedno wystpienie aplikacji.
Wykonamy teraz skalowanie w poziomie, aby uzyska trzy wystpienia aplikacji. W tym celu
utwrz plik JSON zawierajcy nastpujcy tekst JSON i zapisz go w dostpnej lokalizacji.
{ "instances": 3 }

- 29 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Uruchom ponisze polecenie, aby skalowa aplikacj w poziomie.

Uwaga:

Identyfikator URI bdzie mie posta http://localhost/marathon/v2/apps/ z doczonym


identyfikatorem aplikacji do skalowania. W przypadku uycia przedstawionej tutaj
przykadowej aplikacji Nginx identyfikator URI bdzie mie posta
http://localhost/marathon/v2/apps/nginx.
curl http://localhost/marathon/v2/apps/nginx -H "Content-type: application/json" -X
PUT -d @scale.json

Na koniec wykonaj zapytanie dotyczce aplikacji w punkcie kocowym platformy Marathon.


Widoczne bd trzy kontenery Nginx.
curl localhost/marathon/v2/apps

Uycie programu PowerShell w tym wiczeniu: interakcja


interfejsu API REST platformy Marathon z programem
PowerShell
Te same akcje mona wykona za pomoc polece programu PowerShell w systemie
Windows.

Aby zebra informacje dotyczce klastra DC/OS, takie jak nazwy i stan agenta, uruchom
nastpujce polecenie.
Invoke-WebRequest -Uri http://localhost/mesos/master/slaves

Kontenery w formacie programu Docker mona wdraa za porednictwem platformy


Marathon przy uyciu pliku JSON, ktry opisuje zamierzone wdroenie. W poniszym
przykadzie zostanie wdroony kontener Nginx, ktry powie port 80 agenta DC/OS z portem
80 kontenera.
{
"id": "nginx",
"cpus": 0.1,
"mem": 16.0,
"instances": 1,
"container": {
"type": "DOCKER",
"docker": {
"image": "nginx",
"network": "BRIDGE",
"portMappings": [
{ "containerPort": 80, "hostPort": 80, "servicePort": 9000, "protocol":
"tcp" }
]
}
}
}

- 30 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Utwrz wasny plik JSON lub uyj przykadu dostpnego w wersji demonstracyjnej usugi
kontenera platformy Azure. Zapisz go w dostpnej lokalizacji. Nastpnie w celu wdroenia
kontenera uruchom nastpujce polecenie. Okrel nazw pliku JSON.
Invoke-WebRequest -Method Post -Uri http://localhost/marathon/v2/apps -ContentType
application/json -InFile 'c:\marathon.json'

Interfejs API platformy Marathon umoliwia take skalowanie w poziomie oraz skalowanie na
zewntrz wdroe aplikacji. W poprzednim przykadzie wdroono jedno wystpienie aplikacji.
Wykonamy teraz skalowanie w poziomie, aby uzyska trzy wystpienia aplikacji. W tym celu
utwrz plik JSON zawierajcy nastpujcy tekst JSON i zapisz go w dostpnej lokalizacji.
{ "instances": 3 }

Uruchom ponisze polecenie, aby skalowa aplikacj w poziomie.

Uwaga:

Identyfikator URI bdzie mie posta http://localhost/marathon/v2/apps/ z doczonym


identyfikatorem aplikacji do skalowania. W przypadku uycia przedstawionej tutaj
przykadowej aplikacji Nginx, identyfikator URI bdzie mie posta
http://localhost/marathon/v2/apps/nginx.
Invoke-WebRequest -Method Put -Uri http://localhost/marathon/v2/apps/nginx -
ContentType application/json -InFile 'c:\scale.json'

Nastpne kroki
Dowiedz si wicej o punktach kocowych HTTP platformy Mesos.

Dowiedz si wicej o interfejsie API REST platformy Marathon.

Pula agentw DC/OS dla Azure Container


Service
DC/OS Azure Container Service dzieli agentw na pule publiczne lub prywatne. Deploy mona
wykona na kadej puli, wpywajc na dostpno pomidzy maszynami w twoim serwisie
kontenera. Maszyny mog by podczone do Internetu (publiczne) lub zachowane
wewntrznie (prywatne). Ta sekcja opisze, po co s prywatne i publiczne pule.

Prywatni agenci
Prywatne wzy agentw dziaaj poprzez sieci wewntrzne (nie widoczne dla Internetu). Takie
sieci s dostpne jedynie z poziomu administratora lub poprzez router edge w sieci publicznej.
DC/OS domylnie uruchamia aplikacje na wzach prywatnych. Dowiedz si wicej z
dokumentacji DC/OS na temat bezpieczestwa sieci.

- 31 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Publiczni agenci
Publiczne wzy agentw dziaaj poprzez sieci publiczne. Dowiedz si wicej z dokumentacji
DC/OS na temat bezpieczestwa sieci.

Uycie puli agentw


Marathon domylnie robi deploy nowej aplikacji do prywatnych wzw agentw. Aby to
zmieni, musisz zrobi deploy do publicznych wzw agentw podczas tworzenia aplikacji.
Wybierz zakadk Optional i wpisz slave_public jako warto Accepted Resource Roles. Ten
proces jest opisany tutaj oraz w dokumentacji DC/OS.

Nastpne kroki
Przeczytaj wicej o zarzdzaniu kontenerami DC/OS.

Sprawd jak otworzy firewall zapewniony przez Azure aby umoliwi publiczny dostp do
kontenera DC/OS.

Wcz publiczny dostp do aplikacji Azure


Container Service
Kady kontener DC/OS w publicznej puli wzw agentw ACS jest automatycznie ujawniony
w internecie. Domylnie porty 80, 443, 8080 s otwarte i kady (publiczny) kontener
nasuchujcy na tych portach jest dostpny. Ta sekcja przedstawi jak otworzy wicej portw
dla aplikacji Azure Container Service.

Otwrz port (portal)


Na pocztku musimy otworzy port.

1. Zaloguj si do portalu.

2. Znajd resource group zdeployowan do Azure Container Service.

3. Wybiersz agenta load balancer (ktrego nazwa przypomina XXXX-agent-lb-XXXX)

- 32 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

4. Kliknij Probes a nastpnie Add.

- 33 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

5. Wypenij fromularz probe i kliknij OK.

Pole Opis

Name Nazwa ktr chcesz nada prbie.

Port Port kontenera testowego.

Path (Gdy w trybie HTTP) Relatywna cieka do prby (probe). Brak wsparcia
HTTPS.

Interval Ilo czasu ktry upynie pomidzy prbami, w sekundach.

Unhealthy Ilo kolejnych prb ktre upyn do uznania kontenera za niewydajny.


threshold

- 34 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

6. Wr do waciwoci agenta load balancer, kliknij Load balancing rules nastpnie kliknij Add.

7. Wypenij formularz load balancer I kliknij OK.

Pole Opis

Name Nazwa ktr chcesz nada load balancer.

Port Publiczny port dla ruchu przychodzcego.

Backend port Wewntrzny publiczny port kontener do ktrego przekierujesz ruch.

Backend pool Kontenery z tej puli bd obiektem dla tego load balancera.

- 35 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Pole Opis

Probe Prba determinujca czy obiekt z puli backend (backend pool) jest
wydajny.

Session Determinuje, jak ruch od klienta bdzie zarzdzany podczas sesji.


persistence
None: Sukcesywne zapytania od tego samego klienta bd obsuona
przez jakikolwiek kontener.
Client IP: Sukcesywne zapytania od tego samego IP klienta bd
obsuone przez jeden kontener.
Client IP and protocol: Sukcesywne zapytania od tego samego IP i
protokou klienta bd obsuone przez jeden kontener

Idle timeout (tylko TCP) W minutach, czas utrzymania otwartego klienta TCP/HTTP bez
polegania na wiadomociach keep-alive.

Dodaj zasad bezpieczestwa (portal)


Nastpnie, powinnimy doda zasad bezpieczestwa, ktra przekieruje ruch z otwartego
portu na firewall.

1. Zaloguj si do portalu.

2. Znajd resource group zdeployowany na Azure Container Service.

3. Wybierz publicznego agenta sieci grupy bezpieczestwa (nazwa powinna przypomina


XXXX-agent-public-nsg-XXXX).

- 36 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

4. Wybierz Inbound security rules nastpnie Add.

- 37 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

5. Wypenij formularz firewall aby odblokowa publiczny port I kliknij OK.

Pole Opis

Name Nazwa zasady firewall.

Priority Priorytet zasady. Im nisza cyfra tym wyszy priorytet.

Source Ogranicz zakres przychodzcych adresw IP ktre bd dopuszczone bd


ograniczone t zasad. Wpisz Any aby nie ogranicza.

Service Wybierz zestaw predefiniowanych serwisw dla tej zasady bezpieczestwa, lub
wybierz Custom aby stworzy wasne.

Protocol Ogranicz ruch bazujc na TCP lub UDP. Wybierz Any aby nie ogranicza.

Port Gdy Service jest ustawiony jako Custom, okrel zasig portw ktrych ma
range dotyczy ta zasada. Moesz uy pojedynczego porty, np. 80, lub zasigu portw
np. 1024-1500.

Action Zezwl lub zablokuj ruch speniajcy podane kryteria.

Nastpne kroki
Dowiedz si wicej o rnicach pomidzy publicznymi a prywatnymi agentami DC/OS.

Dodatkowe informacje na temat zarzdzania kontenerami DC/OS.

- 38 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Rwnowaenie obcienia w klastrze usugi


Azure Container Service
W tym artykule pokaemy, jak utworzy wewntrzny modu rwnowaenia obcienia (load
balancing) w usudze Azure Container Service zarzdzanej przez rozwizanie DC/OS przy
uyciu narzdzia Marathon-LB. Umoliwi to skalowanie aplikacji w poziomie. Ponadto umoliwi
to wykorzystanie agentw klastrw publicznych i prywatnych poprzez umieszczenie moduw
rwnowaenia obcienia w klastrze publicznym i kontenerw aplikacji w klastrze prywatnym.

Wymagania wstpne
Wdr wystpienie usugi Azure Container Service z typem aranacji DCOS i upewnij si, e
klient moe poczy si z klastrem.

Rwnowaenie obcienia
Istniej dwie warstwy rwnowaenia obcienia w klastrze usugi Container Service, ktre
utworzymy:

1. Usuga Azure Load Balancer zapewnia publiczne punkty wejcia (z ktrymi kontaktuj si
uytkownicy kocowi). Jest ona dostarczana automatycznie przez usug Azure Container
Service i domylnie skonfigurowana do udostpniania portw 80, 443 i 8080.

2. Usuga Marathon Load Balancer (marathon-lb) kieruje dania przychodzce do wystpie


kontenera, ktre obsuguj te dania. Warstwa marathon-lb jest dynamicznie dostosowywana
w przypadku skalowania kontenerw wiadczcych usug sieci Web. Modu rwnowaenia
obcienia nie jest zapewniany domylnie w usudze kontenera, ale mona go atwo
zainstalowa.

Marathon Load Balancer


Modu Marathon Load Balancer dynamicznie zmienia konfiguracj na podstawie wdroonych
kontenerw. Jest on rwnie odporny na utrat kontenera lub agenta. W takim przypadku
rozwizanie Apache Mesos po prostu ponownie uruchomi kontener w innym miejscu, a modu
marathon-lb automatycznie dostosuje si.

Do instalacji moduu Marathon Load Balancer mona uy interfejsu uytkownika w sieci Web
lub wiersza polecenia rozwizania DC/OS.

Instalacja moduu Marathon-LB przy uyciu interfejsu uytkownika w


sieci Web rozwizania DC/OS

1. Kliknij pozycj Universe (Wszechwiat)

2. Wyszukaj pozycj Marathon-LB

3. Kliknij pozycj Install (Zainstaluj)

- 39 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Instalacja moduu Marathon-LB przy uyciu interfejsu wiersza polecenia


rozwizania DC/OS
Po zainstalowaniu interfejsu wiersza polecenia rozwizania DC/OS i upewnieniu si co do
moliwoci poczenia z klastrem, uruchom nastpujce polecenie z klienta:
dcos package install marathon-lb

To polecenie automatycznie instaluje modu rwnowaenia obcienia w klastrze agentw


publicznych.

Wdraanie aplikacji sieci Web z rwnowaeniem obcienia


Teraz po przygotowaniu pakietu marathon-lb moemy wdroy kontener aplikacji, dla ktrego
chcemy zrwnoway obcienie. W tym przykadzie wdroymy prosty serwer sieci Web,
uywajc nastpujcej konfiguracji:
{
"id": "web",
"container": {
"type": "DOCKER",
"docker": {
"image": "yeasy/simple-web",
"network": "BRIDGE",
"portMappings": [
{ "hostPort": 0, "containerPort": 80, "servicePort": 10000 }
],
"forcePullImage":true
}
},
"instances": 3,
"cpus": 0.1,
"mem": 65,
"healthChecks": [{
"protocol": "HTTP",

- 40 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

"path": "/",
"portIndex": 0,
"timeoutSeconds": 10,
"gracePeriodSeconds": 10,
"intervalSeconds": 2,
"maxConsecutiveFailures": 10
}],
"labels":{
"HAPROXY_GROUP":"external",
"HAPROXY_0_VHOST":"YOUR FQDN",
"HAPROXY_0_MODE":"http"
}
}

Ustaw warto HAProxy_0_VHOST na nazw FQDN moduu rwnowaenia obcienia dla


agentw. Ma ona posta <acsName>agents.<region>.cloudapp.azure.com. Jeli na przykad
utworzono klaster usugi Container Service o nazwie myacs w regionie West US, nazwa FQDN
bdzie nastpujca: myacsagents.westus.cloudapp.azure.com. Moesz rwnie znale t
warto, wyszukujc modu rwnowaenia obcienia z wyrazem agent w nazwie podczas
przeszukiwania zasobw w grupie zasobw utworzonej dla usugi Container Service w witrynie
Azure Portal.

Ustaw warto servicePort na port >= 10 000. W ten sposb mona zidentyfikowa usug
uruchamian w tym kontenerze. Modu marathon-lb uywa tej wartoci w celu identyfikowania
usug do zrwnowaenia.

Ustaw etykiet HAPROXY_GROUP na warto external.

Ustaw parametr hostPort na warto 0. Ten sposb oznacza, e rozwizanie Marathon bdzie
arbitralnie przypisywa dostpny port.

Ustaw parametr instances na liczb wystpie, ktre chcesz utworzy. W pniejszym czasie
moesz zawsze zmieni t warto.

Warto zauway, e domylnie narzdzie Marathon bdzie wdraa rozwizania do klastra


prywatnego. Oznacza to, e powysze wdroenie bdzie dostpne tylko poprzez modu
rwnowaenia obcienia, co jest zazwyczaj podanym zachowaniem.

Wdraanie przy uyciu interfejsu uytkownika w sieci Web rozwizania


DC/OS

1. Odwied stron rozwizania Marathon pod adresem http://localhost/marathon (po


skonfigurowaniu tunelu SSH i kliknij pozycj Create Appliction

2. W oknie dialogowym New Application kliknij pozycj JSON Mode w prawym grnym rogu

3. Wklej powyszy kod JSON do edytora

4. Kliknij pozycj Create Appliction

- 41 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Wdraanie przy uyciu interfejsu wiersza polecenia rozwizania DC/OS


Aby wdroy t aplikacj przy uyciu interfejsu wiersza polecenia rozwizania DC/OS, po
prostu skopiuj powyszy kod JSON do pliku o nazwie hello-web.json i uruchom polecenie:
dcos marathon app add hello-web.json

Azure Load Balancer


Domylnie modu Azure Load Balancer udostpnia porty 80, 8080 i 443. Jeli uywasz jednego
z tych trzech portw (tak jak w powyszym przykadzie), nie musisz wykonywa adnych
dziaa. Powiniene by w stanie osign nazw FQDN moduu rwnowaenia obcienia
agenta, a przy kadym odwieeniu trafisz po kolei na jeden ze swoich trzech serwerw sieci
web. Jeli jednak korzystasz z innego portu, musisz doda regu kady z kadym oraz
monitor w module rwnowaenia obcienia dla uywanego portu. Mona to zrobi przez
wiersz polece Azure, uywajc polece azure lb rule create i azure lb probe create.
Mona to zrobi rwnie za porednictwem witryny Azure Portal.

Dodatkowe scenariusze
Moe wystpi scenariusz, w ktrym do udostpniania rnych usug s stosowane rne
domeny. Na przykad:

moja_domena1.com -> Azure LB:80 -> marathon-lb:10001 -> mj_kontener1:33292


moja_domena2.com -> Azure LB:80 -> marathon-lb:10002 -> mj_kontener2:22321

W tym celu zapoznaj si z funkcj hostw wirtualnych, ktra umoliwia kojarzenie domen z
okrelonymi ciekami warstwy marathon-lb.

Moesz rwnie udostpnia inne porty i ponownie mapowa je na prawidowe usugi poza
warstw marathon-lb. Na przykad:

Azure lb:80 -> marathon-lb:10001 -> mj_konenter:233423


Azure lb:8080 -> marathon-lb:1002 -> mj_kontener2:33432

Nastpne kroki
Wicej informacji na temat warstwy marathon-lb mona znale w dokumentacji rozwizania
DC/OS.

Tworzenie usugi Marathon specyficznej dla


aplikacji lub uytkownika
Usuga kontenera platformy Azure oferuje zestaw serwerw gwnych, na ktrych wstpnie
konfigurujemy usugi Apache Mesos i Marathon. Mog one by uywane do organizowania
aplikacji w klastrze, ale stosowanie w tym celu serwerw gwnych nie jest zalecane. Na
przykad, dostosowywanie konfiguracji usugi Marathon wymaga logowania do serwerw
gwnych i wprowadzania zmian. Oznacza to, e naley uywa unikatowych serwerw

- 42 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

gwnych, ktre s nieco inne ni standardowe i wymagaj niezalenej obsugi oraz


zarzdzania. Ponadto, konfiguracja wymagana przez jeden zesp moe nie by konfiguracj
optymaln dla innego zespou.

W tym artykule wyjanimy, jak doda usug Marathon specyficzn dla aplikacji lub
uytkownika.

Poniewa usuga ta bdzie nalee do pojedynczego uytkownika lub zespou, bdzie mona
w dowolny sposb skonfigurowa jej dziaanie. Ponadto usuga Azure Container Service
zapewni cigo dziaania usugi. Jeli wystpi awaria usugi, Azure Container Service
uruchomi j ponownie. W wikszoci przypadkw taki przestj bdzie niezauwaalny.

Wymagania wstpne
Wdr wystpienie usugi Azure Container Service z typem aranacji DCOS i upewnij si, e
klient moe poczy si z klastrem. Ponadto wykonaj ponisze kroki.

Uwaga:

Te informacje dotycz pracy z klastrami usugi ACS opartymi na kontrolerach


domeny/systemach operacyjnych. Nie trzeba wykonywa tych czynnoci w przypadku klastrw
usugi ACS opartych na aplikacji Swarm.

Najpierw nawi poczenie z klastrem usugi ACS opartym na kontrolerze domeny/systemie


operacyjnym. Nastpnie moesz zainstalowa interfejs wiersza polecenia DC/OS na
komputerze klienckim przy uyciu poniszych polece:
sudo pip install virtualenv
mkdir dcos && cd dcos
wget https://raw.githubusercontent.com/mesosphere/dcos-
cli/master/bin/install/install-optout-dcos-cli.sh
chmod +x install-optout-dcos-cli.sh
./install-optout-dcos-cli.sh . http://localhost --add-path yes

Jeli uywasz starszej wersji rodowiska Python, mog zosta wywietlone ostrzeenia
InsecurePlatformWarnings. Moesz je bezpiecznie zignorowa.

Aby rozpocz prac bez ponownego uruchamiania powoki, uruchom polecenie:


source ~/.bashrc

Ta czynno nie bdzie konieczna w przypadku uruchomienia nowych powok.

Teraz mona potwierdzi, e interfejs wiersza polecenia zosta zainstalowany:


dcos --help

- 43 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Tworzenie usugi Marathon specyficznej dla aplikacji lub


uytkownika
Rozpocznij od utworzenia pliku konfiguracji JSON definiujcego nazw usugi aplikacji, ktr
chcesz utworzy. W tym miejscu uyjemy cigu marathon-alice jako nazwy szablonu. Zapisz
plik z nazw typu marathon-alice.json:
{"marathon": {"framework-name": "marathon-alice" }}

Nastpnie uyj interfejsu wiersza polecenia DC/OS, aby zainstalowa wystpienie usugi
Marathon z opcjami ustawionymi w pliku konfiguracji:
dcos package install --options=marathon-alice.json marathon

Usuga marathon-alice powinna teraz zosta wywietlona jako dziaajca na karcie usug
interfejsu uytkownika DC/OS. Jeli chcesz bezporednio uzyskiwa dostp do interfejsu
uytkownika, zostanie uyta warto http://<hostname>/service/marathon-alice/.

Ustawianie interfejsu wiersza polecenia DC/OS w celu


uzyskiwania dostpu do usugi
Opcjonalnie moesz skonfigurowa interfejs wiersza polecenia DC/OS do uzyskiwania dostpu
do nowej usugi, ustawiajc waciwo marathon.url, aby wskazywaa wystpienie marathon-
alice w nastpujcy sposb:

dcos config set marathon.url http://<hostname>/service/marathon-alice/

Moesz sprawdzi, z jakim wystpieniem usugi Marathon dziaa interfejs wiersza polecenia,
uywajc polecenia dcos config show. Moesz wrci do korzystania z gwnej usugi
Marathon przy uyciu polecenia dcos config unset marathon.url.

Monitorowanie klastra Azure Container


Service za pomoc Datadog
W tej sekcji wykorzystamy agentw Datadog do wszystkich wzw w klastrze Azure Container
Service. Bdziesz potrzebowa konta Datadog do tej konfiguracji.

Wymagania
Zrb Deploy i pocz klaster skonfigurowany poprzez Azure Container Service. Zapoznaj si z
Marathon UI. Id do http://datadoghq.com aby ustawi konto Datadog.

Datadog
Datadog to serwis monitorujcy, ktry gromadzi dane na temat twoich kontenerw w klastrze
Azure Container Service. Datadog posiada zintegrowany kokpit Docker gdzie moesz zobaczy
poszczeglne metryki dotyczce twoich kontenerw. Zgromadzone metryki s posortowane

- 44 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

wedug CPU, pamici, sieci oraz I/O. Datadog rozgranicza metryki pomidzy kontenery a
obrazy. Poniej zobacz przykad interfejsu uytkownika dla zuycia CPU.

Konfiguracja Datadog i Marathon


Te kroki poka ci jak skonfikurowa i zdeployowa aplikacje Datadog do klastra z Marathon.

Wejd do DC/OS UI poprzez http://localhost:80/. Bdc w DC/OS UI nawiguj do Universe, na


dole po lewej, wyszukaj Datadog i kliknij Install.

Aby zakoczy konfiguracj bdziesz potrzebowa konta Datadog lub darmowego prbnego
konta. Po zalogowaniu do Datadog spjrz w lewo i przejd do Integrations -> potem APIs.

Nastpnie wprowad swj klucz API do konfiguracji Datadog.

- 45 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

W powyszej konfiguracji instancje s ustawione na 10 000 000, czyli przy dodaniu nowego
wza do klastra, Datadog automatycznie wykona deploy agenta do tego wza. To jest
tymczasowe rozwizanie. Po zainstalowaniu pakietu, nawiguj do strony Datadog i
Dashboards. Z Dashboards zobaczysz Custom i Integration Dashboards. Kokpit integracji z
Docker (Docker Integration Dashboard) bdzie zawiera metryki kontenera potrzebne do
monitorowania klastra.

Monitorowanie klastra usugi Azure Container


Service przy uyciu rozwizania Sysdig
W tym artykule wdroymy agentw rozwizania Sysdig we wszystkich wzach w klastrze
usugi Azure Container Service. Ta konfiguracja wymaga konta z rozwizaniem Sysdig.

Wymagania wstpne
Wdr i pocz klaster skonfigurowany przez usug Azure Container Service. Przegld
interfejsu uytkownika platformy Marathon. Przejd do witryny http://app.sysdigcloud.com i
skonfiguruj konto chmury Sysdig.

Sysdig
Sysdig jest usug monitorowania, ktra umoliwia monitorowanie kontenerw w klastrze.
Usuga Sysdig pomaga w rozwizywaniu problemw, a take oferuje podstawowe metryki
monitorowania procesora, sieci, pamici i operacji we/wy. Usuga Sysdig uatwia sprawdzanie,
ktre kontenery pracuj najciej lub po prostu uywaj najwikszej czci pamici i mocy
procesora. Widok ten jest dostpny w sekcji przegldu zapewnianej obecnie w wersji beta.

- 46 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Konfigurowanie wdroenia usugi Sysdig przy uyciu usugi


Marathon
Te kroki przedstawiaj metod konfigurowania i wdraania aplikacji usugi Sysdig w klastrze
przy uyciu usugi Marathon.

Przejd do interfejsu uytkownika rozwizania DC/OS przez stron http://localhost:80/. W


interfejsie uytkownika rozwizania DC/OS wybierz pozycj Universe (Wszechwiat) w lewym
dolnym rogu i wyszukaj cig Sysdig.

- 47 -
Rozdzia 4: DC/OS Zarzdzenie kontenerem przy uyciu
interfejsu uytkownika sieci Web

Ukoczenie konfiguracji wymaga konta w chmurze Sysdig lub bezpatnego konta prbnego.
Po zalogowaniu w witrynie sieci web chmury Sysdig kliknij swoj nazw uytkownika, a na
stronie powinien zosta wywietlony klucz dostpu.

Nastpnie wprowad klucz dostpu do konfiguracji usugi Sysdig we wszechwiecie DC/OS.

Teraz ustaw wystpienia na 10 000 000, dziki czemu przy kadym dodaniu nowego wza do
klastra usuga Sysdig automatycznie wdroy agenta w tym nowym wle. Jest to rozwizanie
tymczasowe, ktre zapewnia wdroenie usugi Sysdig we wszystkich nowych agentach w
klastrze.

- 48 -
Rozdzia 5: Zarzdzanie kontenerami przy uyciu rozwizania
Docker Swarm

Po zainstalowaniu pakietu przejd z powrotem do interfejsu uytkownika usugi Sysdig, a


bdziesz mg zbada rne metryki uycia dla kontenerw w klastrze.

Rozdzia 5: Zarzdzanie kontenerami przy


uyciu rozwizania Docker Swarm
Rozwizanie Docker Swarm oferuje rodowisko wdraania konteneryzowanych obcie w puli
zestaww hostw Docker. Rozwizanie Docker Swarm uywa natywnego interfejsu API Docker.
Metoda zarzdzania kontenerami w rozwizaniu Docker Swarm jest niemal identyczna, jak w
przypadku pojedynczego hosta kontenera. Ten dokument zawiera proste przykady wdraania
konteneryzowanych obcie w wystpieniu usugi kontenera platformy Azure w rozwizaniu
Docker Swarm. Szczegow dokumentacj dotyczc rozwizania Docker Swarm mona
znale na stronie Docker Swarm w witrynie Docker.com.

Wymagania wstpne dotyczce wicze opisanych w tym dokumencie:

Utworzenie klastra Swarm usugi kontenera platformy Azure

Poczenie z klastrem Swarm w usudze kontenera platformy Azure

Wdraanie nowego kontenera


Aby utworzy nowy kontener w rozwizaniu Docker Swarm, uyj polecenia docker run (co
zapewni otwarcie tunelu SSH do serwerw gwnych zgodnie z powyszymi wymaganiami
wstpnymi). W tym przykadzie kontener jest tworzony na podstawie obrazu yeasy/simple-
web:

user@ubuntu:~$ docker run -d -p 80:80 yeasy/simple-web

4298d397b9ab6f37e2d1978ef3c8c1537c938e98a8bf096ff00def2eab04bf72

- 49 -
Rozdzia 5: Zarzdzanie kontenerami przy uyciu rozwizania
Docker Swarm

Po utworzeniu kontenera uyj polecenia docker ps w celu uzyskania zwrconych informacji o


kontenerze. Zauwa, e na licie znajduje si agent Swarm hostujcy kontener:
user@ubuntu:~$ docker ps

CONTAINER ID IMAGE COMMAND CREATED


STATUS PORTS NAMES
4298d397b9ab yeasy/simple-web "/bin/sh -c 'python i" 31 seconds ago
Up 9 seconds 10.0.0.5:80->80/tcp swarm-agent-34A73819-1/happy_allen

Moesz teraz uzyskiwa dostp do aplikacji, ktra dziaa w tym kontenerze, za porednictwem
publicznej nazwy DNS moduu rwnowaenia obcienia agenta Swarm. Te informacje mona
znale w witrynie Azure Portal:

Domylnie modu rwnowaenia obcienia ma otwarte porty 80, 8080 i 443. Jeli chcesz si
poczy na innym porcie, musisz otworzy ten port w module Azure Load Balancer dla puli
agenta.

Wdraanie wielu kontenerw


Ze wzgldu na to, e uruchamianie wiele kontenerw nastpuje przez wielokrotne wykonanie
polecenia docker run, moesz uy polecenia docker ps, aby zobaczy, na ktrych hostach
dziaaj kontenery. W poniszym przykadzie trzy kontenery zostay rozmieszczone
rwnomiernie w obrbie trzech agentw Swarm:
user@ubuntu:~$ docker ps

CONTAINER ID IMAGE COMMAND CREATED


STATUS PORTS NAMES
11be062ff602 yeasy/simple-web "/bin/sh -c 'python i" 11 seconds ago
Up 10 seconds 10.0.0.6:83->80/tcp swarm-agent-34A73819-2/clever_banach
1ff421554c50 yeasy/simple-web "/bin/sh -c 'python i" 49 seconds ago
Up 48 seconds 10.0.0.4:82->80/tcp swarm-agent-34A73819-0/stupefied_ride
4298d397b9ab yeasy/simple-web "/bin/sh -c 'python i" 2 minutes ago
Up 2 minutes 10.0.0.5:80->80/tcp swarm-agent-34A73819-1/happy_allen

- 50 -
Rozdzia 5: Zarzdzanie kontenerami przy uyciu rozwizania
Docker Swarm

Wdraanie kontenerw przy uyciu rozwizania Docker


Compose
Rozwizania Docker Compose moesz uywa do automatyzowania wdraania i
konfigurowania wielu kontenerw. W tym celu upewnij si, e utworzono tunel Secure Shell
(SSH) oraz e ustawiono zmienn DOCKER_HOST (patrz wymagania wstpne powyej).

Utwrz plik docker-compose.yml w systemie lokalnym. W tym celu uyj tego przykadu.
web:
image: adtd/web:0.1
ports:
- "80:80"
links:
- rest:rest-demo-azure.marathon.mesos
rest:
image: adtd/rest:0.1
ports:
- "8080:8080"

Uruchom polecenie docker-compose up -d, aby uruchomi wdroenia kontenera:


user@ubuntu:~/compose$ docker-compose up -d
Pulling rest (adtd/rest:0.1)...
swarm-agent-3B7093B8-0: Pulling adtd/rest:0.1... : downloaded
swarm-agent-3B7093B8-2: Pulling adtd/rest:0.1... : downloaded
swarm-agent-3B7093B8-3: Pulling adtd/rest:0.1... : downloaded
Creating compose_rest_1
Pulling web (adtd/web:0.1)...
swarm-agent-3B7093B8-3: Pulling adtd/web:0.1... : downloaded
swarm-agent-3B7093B8-0: Pulling adtd/web:0.1... : downloaded
swarm-agent-3B7093B8-2: Pulling adtd/web:0.1... : downloaded
Creating compose_web_1

Na koniec zostanie zwrcona lista uruchomionych kontenerw. Bdzie ona zawiera kontenery
wdroone przy uyciu rozwizania Docker Compose:
user@ubuntu:~/compose$ docker ps
CONTAINER ID IMAGE COMMAND CREATED
STATUS PORTS NAMES
caf185d221b7 adtd/web:0.1 "apache2-foreground" 2 minutes ago
Up About a minute 10.0.0.4:80->80/tcp swarm-agent-3B7093B8-0/compose_web_1
040efc0ea937 adtd/rest:0.1 "catalina.sh run" 3 minutes ago
Up 2 minutes 10.0.0.4:8080->8080/tcp swarm-agent-3B7093B8-0/compose_rest_1

Naturalnie mona uy polecenia docker-compose ps do zbadania tylko kontenerw


zdefiniowanych w pliku compose.yml.

Nastpne kroki
Dowiedz si wicej na temat rozwizania Docker Swarm

- 51 -
Dzikujemy za przeczytanie.
Powodzenia w podry po chmurze!

You might also like