Sesion ngjitës me Docker Swarm (CE) në Debian 9

Prezantimi

Docker Swarm i kthen serverët tuaj individualë në një grup kompjuterash; duke lehtësuar shkallëzimin, disponueshmërinë e lartë dhe balancimin e ngarkesës. Balancuesi i ngarkesës Swarm zbaton një strategji të balancimit të ngarkesës së rrumbullakët dhe kjo mund të ndërhyjë në funksionimin e saktë të aplikacioneve (të trashëguara) të gjendjes që kërkojnë një formë sesionesh ngjitëse për të lejuar një konfigurim të disponueshëm të lartë me shembuj të shumtë. Docker Enterprise Edition mbështet sesionin ngjitës të Layer-7, por në këtë udhëzues ne do të përqendrohemi në versionin falas (CE) të Docker. Për të zbatuar sesione ngjitëse ne do të përdorim Traefik.

Parakushtet

  • Të paktën dy raste të reja të vendosura dhe të përditësuara të Debian 9 në të njëjtin nënrrjet me rrjetin privat të aktivizuar
  • Docker CE është instaluar në këto raste
  • Instancat duhet të jenë pjesë e të njëjtit Swarm dhe duhet të jenë në gjendje të komunikojnë me njëri-tjetrin përmes rrjetit privat
  • Njohuri paraprake për Docker dhe Docker Swarm
  • Një përdorues jo-root me të sudodrejta (opsionale, por këshillohet fuqimisht të mos përdorni përdoruesin rrënjë)

Në këtë tutorial do të përdorim dy instanca Vultr me adresa IP private 192.168.0.100dhe 192.168.0.101. Të dyja janë nyje të menaxherit të Docker Swarm (që nuk është ideale për prodhim, por mjafton për këtë tutorial).

Kush jam unë

Ky tutorial përdor jwilder/whoamiimazhin e dokerit si një aplikacion demo. Ky kontejner i thjeshtë do t'i përgjigjet një thirrjeje REST me emrin e kontejnerit që përgjigjet, duke e bërë shumë të lehtë testimin nëse seancat ngjitëse po funksionojnë. Ky imazh është padyshim që përdoret vetëm për qëllime demo dhe duhet të zëvendësohet nga imazhi i aplikacionit tuaj.

Shërbimi Whoami është konfiguruar si më poshtë:

sudo docker network create whoaminet -d overlay
sudo docker service create --name whoami-service --mode global --network whoaminet --publish "80:8000"  jwilder/whoami
sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT

Nëse më pas ne curlpikën fundore të Whoami REST në http://192.168.0.100/, ne mund të shohim balancimin e ngarkesës së rrumbullakët të Docker Swarm në punë:

curl http://192.168.0.100
I'm a6a8c9294fc3
curl http://192.168.0.100
I'm ae9d1763b4ad
curl http://192.168.0.100
I'm a6a8c9294fc3
curl http://192.168.0.100
I'm ae9d1763b4ad
curl http://192.168.0.100
I'm a6a8c9294fc3

Nuk ka nevojë ta testosh këtë me shfletues modern si Chrome ose Firefox, sepse ata janë krijuar për të mbajtur lidhjet të gjalla dhe balancuesi i ngarkesës Docker Swarm do të kalojë vetëm në kontejnerin tjetër pas çdo lidhjeje të re . Nëse dëshironi ta provoni këtë me një shfletues, duhet të prisni të paktën 30 sekonda që lidhja të mbyllet përpara se ta rifreskoni përsëri.

Vendosja e Traefik

Traefik mbështet në mënyrë të pavarur Docker Swarm, ai mund të zbulojë dhe regjistrojë ose çregjistrojë kontejnerët menjëherë dhe komunikon me aplikacionin tuaj përmes rrjetit të brendshëm të mbivendosjes. Traefik ka nevojë për disa informacione rreth aplikacionit tuaj përpara se të fillojë të trajtojë kërkesat për të. Ky informacion i jepet Traefik duke shtuar etiketa në shërbimin tuaj Swarm:

sudo docker service update --label-add "traefik.docker.network=whoaminet" --label-add "traefik.port=8000" --label-add "traefik.frontend.rule=PathPrefix:/" --label-add "traefik.backend.loadbalancer.stickiness=true" whoami-service

Lista e mëposhtme përshkruan se çfarë do të thotë secila etiketë:

  • traefik.docker.network : Rrjeti i mbivendosjes Docker, mbi të cilin Traefik do të komunikojë me shërbimin tuaj
  • traefik.port : Porti në të cilin po dëgjon shërbimi juaj (kjo është porta e ekspozuar nga brenda, jo porta e publikuar)
  • traefik.frontend.rule: PathPrefix:/ lidh rrënjën e kontekstit ' /' me këtë shërbim
  • traefik.backend.loadbalancer.stickiness : Aktivizon sesionet ngjitëse për këtë shërbim

Tani që whoami-serviceështë konfiguruar me etiketat e kërkuara, ne mund të shtojmë shërbimin Traefik në tufë:

sudo docker service create --name traefik -p8080:80 -p9090:8080 --mount type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock --mode=global --constraint 'node.role == manager' --network whoaminet traefik --docker --docker.swarmmode --docker.watch --web --loglevel=DEBUG

Kjo komandë bën shumë gjëra në të njëjtën kohë, siç tregohet në listën e mëposhtme:

  • --name traefik : Emri i shërbimit tonë të ri Docker është Traefik
  • -p8080:80: Ne publikojmë portin 80në port të Traefik 8080sepse porti 80është tashmë në përdorim nga shërbimi ynë Whoami
  • -p9090:8080 : Ne publikojmë ndërfaqen e internetit të vetë Traefik në port 9090
  • --mount ... : Ne montojmë Docker Socket në kontejner në mënyrë që Traefik të mund të ketë akses në kohën e funksionimit të Docker të hostit
  • --global : Ne duam kontejnerë Traefik në çdo nyje menaxheri për arsye të disponueshmërisë së lartë
  • --constraint 'node.role == manager': Ne duam që Traefik të funksionojë vetëm në nyjet e menaxherit sepse nyjet e punëtorëve nuk mund t'i japin Traefikut informacionin që i nevojitet. Për shembull, docker service lsnë një nyje punonjësi nuk funksionon, kështu që Traefik as nuk do të ishte në gjendje të zbulonte se cilat shërbime po ekzekutohen
  • --network whoaminet: Lidheni Traefik në të njëjtin rrjet si ne whoami-service, përndryshe nuk mund të lidhet me të. Më parë i kemi thënë Traefikut që të lidhet me shërbimin tonë përmes këtij rrjeti me traefik.docker.networketiketën
  • traefik : Thuaji dokerit të përdorë imazhin më të fundit të dokerit të Traefik për këtë shërbim
  • --docker --docker.swarmmode --docker.watch --web --loglevel=DEBUG: Argumentet e linjës së komandës kaluan drejtpërdrejt te Traefik për ta lejuar atë të funksionojë në modalitetin e tufës Docker. DEBUGështë opsionale këtu, por interesante gjatë konfigurimit dhe për këtë tutorial

E tëra çfarë mbetet për të bërë është të hapni portat e nevojshme në murin e zjarrit Debian:

sudo iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT
sudo iptables -I INPUT 1 -p tcp --dport 9090 -j ACCEPT

Si punon

Sapo fillon Traefik, ju mund të shihni në regjistrat që Traefik zbulon dy whoamikontejnerët. Ai gjithashtu nxjerr emrin e cookie-t që do të përdorë për të trajtuar seancën ngjitëse:

time="2018-11-25T13:17:30Z" level=debug msg="Configuration received from provider docker: {\"backends\":{\"backend-whoami-service\":{\"servers\":{\"server-whoami-service-1-a179b2e38a607b1127e5537c2e614b05\":{\"url\":\"http://10.0.0.5:8000\",\"weight\":1},\"server-whoami-service-2-df8a622478a5a709fcb23c50e689b5b6\":{\"url\":\"http://10.0.0.4:8000\",\"weight\":1}},\"loadBalancer\":{\"method\":\"wrr\",\"stickiness\":{}}}},\"frontends\":{\"frontend-PathPrefix-0\":{\"entryPoints\":[\"http\"],\"backend\":\"backend-whoami-service\",\"routes\":{\"route-frontend-PathPrefix-0\":{\"rule\":\"PathPrefix:/\"}},\"passHostHeader\":true,\"priority\":0,\"basicAuth\":null}}}"
time="2018-11-25T13:17:30Z" level=debug msg="Wiring frontend frontend-PathPrefix-0 to entryPoint http"
time="2018-11-25T13:17:30Z" level=debug msg="Creating backend backend-whoami-service"
time="2018-11-25T13:17:30Z" level=debug msg="Adding TLSClientHeaders middleware for frontend frontend-PathPrefix-0"
time="2018-11-25T13:17:30Z" level=debug msg="Creating load-balancer wrr"
time="2018-11-25T13:17:30Z" level=debug msg="Sticky session with cookie _a49bc"
time="2018-11-25T13:17:30Z" level=debug msg="Creating server server-whoami-service-1-a179b2e38a607b1127e5537c2e614b05 at http://10.0.0.5:8000 with weight 1"
time="2018-11-25T13:17:30Z" level=debug msg="Creating server server-whoami-service-2-df8a622478a5a709fcb23c50e689b5b6 at http://10.0.0.4:8000 with weight 1"
time="2018-11-25T13:17:30Z" level=debug msg="Creating route route-frontend-PathPrefix-0 PathPrefix:/"
time="2018-11-25T13:17:30Z" level=info msg="Server configuration reloaded on :80"
time="2018-11-25T13:17:30Z" level=info msg="Server configuration reloaded on :8080"

Nëse përkulemi http://192.168.0.100:8080, mund të shohim se një cookie e re, _a49bc, është vendosur:

curl -v http://192.168.0.100:8080
* About to connect() to 192.168.0.100 port 8080 (#0)
*   Trying 192.168.0.100...
* Connected to 192.168.0.100 (192.168.0.100) port 8080 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 192.168.0.100:8080
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Length: 17
< Content-Type: text/plain; charset=utf-8
< Date: Sun, 25 Nov 2018 13:18:40 GMT
< Set-Cookie: _a49bc=http://10.0.0.5:8000; Path=/
<
I'm a6a8c9294fc3
* Connection #0 to host 192.168.0.100 left intact

Nëse, në thirrjet e mëvonshme, ne e dërgojmë këtë cookie te Traefik, ne gjithmonë do të përcillet në të njëjtin kontejner:

curl http://192.168.0.100:8080 --cookie "_a49bc=http://10.0.0.5:8000"
I'm a6a8c9294fc3
curl http://192.168.0.100:8080 --cookie "_a49bc=http://10.0.0.5:8000"
I'm a6a8c9294fc3
curl http://192.168.0.100:8080 --cookie "_a49bc=http://10.0.0.5:8000"
I'm a6a8c9294fc3
curl http://192.168.0.100:8080 --cookie "_a49bc=http://10.0.0.5:8000"
I'm a6a8c9294fc3

Cookie nuk përmban asgjë përveç adresës së brendshme IP të kontejnerit në të cilin Traefik duhet të dërgojë për të kërkuar. Nëse ndryshoni në vlerën e cookie-t në http://10.0.0.4:8000, atëherë kërkesa do të përcillet në mënyrë efektive në kontejnerin tjetër. Nëse cookie nuk do të ridërgohej kurrë te Traefik, atëherë sesioni ngjitës nuk do të funksionojë dhe kërkesat do të balancohen midis kontejnerëve të aplikacionit dhe kontejnerëve të Traefik.

Kjo është gjithçka që nevojitet për të konfiguruar Sesionet Ngjitëse të Shtresës 7 në Docker CE në Debian 9.


Ja se si të shikoni kontejnerët Hyper-V në Windows 10 Insider

Ja se si të shikoni kontejnerët Hyper-V në Windows 10 Insider

Microsoft ka shpjeguar në një postim të ri në blog se si Windows Insiders mund të testojë kontejnerët Hyper-V në Windows 10, një zgjidhje e re virtualizimi për të lejuar që aplikacionet të funksionojnë pa ndikuar në pjesën tjetër të sistemit tuaj operativ.

Si të instaloni Harbor në CentOS 7

Si të instaloni Harbor në CentOS 7

Harbor është një server regjistri me burim të hapur të klasës së ndërmarrjes që ruan dhe shpërndan imazhet e Docker. Harbor zgjeron Shpërndarjen Docker me burim të hapur b

Instaloni Rancher OS nëpërmjet iPXE

Instaloni Rancher OS nëpërmjet iPXE

Rancher OS është një shpërndarje Linux shumë e lehtë e ndërtuar rreth Docker. Vetë OS peshon rreth 20 MB. Ky tutorial do t'ju vërë në punë

Në CoreOS, konfiguroni Regjistrin tuaj Docker

Në CoreOS, konfiguroni Regjistrin tuaj Docker

Ne të gjithë e njohim dhe e duam Docker, një platformë për të krijuar, menaxhuar dhe shpërndarë kontejnerë aplikacionesh nëpër makina të shumta. Docker Inc ofron një shërbim t

Instalimi i docker-compose në CoreOS

Instalimi i docker-compose në CoreOS

Ky artikull shpjegon se si të instaloni docker-compose në CoreOS. Në CoreOS, dosja /usr/ është e pandryshueshme kështu që shtegu standard /usr/local/bin nuk është i disponueshëm për

Instaloni Rancher në CentOS 7

Instaloni Rancher në CentOS 7

Përdorimi i një sistemi të ndryshëm? Hyrje Rancher është një platformë me burim të hapur për drejtimin e kontejnerëve dhe ndërtimin e një shërbimi privat të kontejnerëve. Rancher është bazë

Instaloni Docker CE në Ubuntu 18.04

Instaloni Docker CE në Ubuntu 18.04

Hyrje Docker është një aplikacion që na lejon të vendosim programe që ekzekutohen si kontejnerë. Është shkruar në gjuhën popullore të programimit Go

Krijo një Swarm Docker në Alpine Linux 3.9.0

Krijo një Swarm Docker në Alpine Linux 3.9.0

Hyrje Ky udhëzues do t'ju tregojë se si të krijoni dhe konfiguroni një tufë Docker duke përdorur shumë serverë Alpine Linux 3.9.0 dhe Portainer. Ju lutemi kini parasysh se

Vendosni një aplikacion PHP duke përdorur Docker-compose

Vendosni një aplikacion PHP duke përdorur Docker-compose

Aplikacionet PHP zakonisht përbëhen nga një server në internet, një sistem bazë të dhënash relacionale dhe vetë përkthyesi i gjuhës. Në këtë tutorial ne do të jemi leveragin

Ngarkoni balancën me Docker

Ngarkoni balancën me Docker

Kur ekzekutoni një aplikacion ueb, zakonisht dëshironi të përfitoni sa më shumë nga burimet tuaja pa pasur nevojë të konvertoni softuerin tuaj për të përdorur multithreading o

Vendosni një aplikacion Node.js duke përdorur Docker

Vendosni një aplikacion Node.js duke përdorur Docker

Ky artikull do t'ju tregojë se si të vendosni aplikacionin tuaj Node brenda një kontejneri Docker. Shënim: Ky udhëzues supozon që ju keni instaluar dhe lexuar Docker

Instalimi i Docker CE në CentOS 7

Instalimi i Docker CE në CentOS 7

Teknologjia e kontejnerëve Docker ju lejon të ekzekutoni aplikacione në një mjedis specifik dhe të izoluar. Docker Community Edition (CE) është emri i ri për fre

Instalimi i Docker në CentOS 7

Instalimi i Docker në CentOS 7

Përdorimi i një sistemi të ndryshëm? Docker është një aplikacion që lejon vendosjen e softuerit brenda kontejnerëve virtualë. Ishte shkruar në programin Go

Instalimi i Docker CE në Debian 9

Instalimi i Docker CE në Debian 9

Përdorimi i një sistemi të ndryshëm? Hyrje Docker është një aplikacion që lejon vendosjen e softuerit brenda kontejnerëve virtualë. Ishte shkruar në G

Filloni me SQL Server 2017 (MS-SQL) në CentOS 7 me Docker

Filloni me SQL Server 2017 (MS-SQL) në CentOS 7 me Docker

Parakushtet Docker engine 1.8+. Minimumi 4 GB hapësirë ​​në disk. Minimumi 4 GB RAM. Hapi 1. Instalo Docker Për të instaluar SQL-Server, Docker mus

Sesion ngjitës me Docker Swarm (CE) në Debian 9

Sesion ngjitës me Docker Swarm (CE) në Debian 9

Përdorimi i një sistemi të ndryshëm? Hyrje Docker Swarm i kthen serverët tuaj individualë në një grup kompjuterash; lehtësimi i shkallëzimit, disponueshmëria e lartë dhe

Dy Mjete Menaxhimi Grafik Docker: DockerUI dhe Kantieri i anijeve

Dy Mjete Menaxhimi Grafik Docker: DockerUI dhe Kantieri i anijeve

Me ndihmën e aplikacionit Vultr Docker, ju mund të vendosni lehtësisht Docker në shembullin e serverit tuaj Vultr. Ndërkohë, ju mund të lehtësoni detyrën e menaxhimit të Docker

Instaloni serverin Rancher në RancherOS

Instaloni serverin Rancher në RancherOS

Përmbledhje RancherOS është një sistem operativ tepër i lehtë (vetëm rreth 60 MB) që drejton një sistem Docker daemon si PID 0 për ekzekutimin e shërbimeve të sistemit

Fillimi me Kubernetes në CentOS 7

Fillimi me Kubernetes në CentOS 7

Kubernetes është një platformë me burim të hapur e zhvilluar nga Google për menaxhimin e aplikacioneve me kontejnerë nëpër një grup serverësh. Ajo ndërtohet mbi një dekadë dhe

Instaloni Rancher në Ubuntu 16.04

Instaloni Rancher në Ubuntu 16.04

Përdorimi i një sistemi të ndryshëm? Hyrje Rancher është një platformë me burim të hapur për drejtimin e kontejnerëve dhe ndërtimin e një shërbimi privat të kontejnerëve. Rancher është bazë

Ngritja e makinave: Aplikimet në botën reale të AI

Ngritja e makinave: Aplikimet në botën reale të AI

Inteligjenca Artificiale nuk është në të ardhmen, është këtu në të tashmen Në këtë blog Lexoni se si aplikacionet e inteligjencës artificiale kanë ndikuar në sektorë të ndryshëm.

Sulmet DDOS: Një përmbledhje e shkurtër

Sulmet DDOS: Një përmbledhje e shkurtër

A jeni edhe ju viktimë e Sulmeve DDOS dhe jeni konfuz në lidhje me metodat e parandalimit? Lexoni këtë artikull për të zgjidhur pyetjet tuaja.

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

Ju mund të keni dëgjuar se hakerët fitojnë shumë para, por a keni menduar ndonjëherë se si i fitojnë ato para? Le te diskutojme.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Dëshironi të shihni shpikjet revolucionare nga Google dhe se si këto shpikje ndryshuan jetën e çdo njeriu sot? Më pas lexoni në blog për të parë shpikjet nga Google.

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

Koncepti i makinave vetë-drejtuese për të dalë në rrugë me ndihmën e inteligjencës artificiale është një ëndërr që e kemi prej kohësh. Por, pavarësisht nga disa premtime, ato nuk shihen askund. Lexoni këtë blog për të mësuar më shumë…

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Ndërsa Shkenca evoluon me një ritëm të shpejtë, duke marrë përsipër shumë nga përpjekjet tona, rriten edhe rreziqet për t'iu nënshtruar një Singulariteti të pashpjegueshëm. Lexoni, çfarë mund të thotë singulariteti për ne.

Evolucioni i ruajtjes së të dhënave - Infografik

Evolucioni i ruajtjes së të dhënave - Infografik

Metodat e ruajtjes së të dhënave kanë evoluar mund të jenë që nga lindja e të dhënave. Ky blog mbulon evolucionin e ruajtjes së të dhënave në bazë të një infografike.

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Lexoni blogun për të njohur shtresat e ndryshme në arkitekturën e të dhënave të mëdha dhe funksionalitetet e tyre në mënyrën më të thjeshtë.

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

Në këtë botë të drejtuar nga dixhitali, pajisjet inteligjente të shtëpisë janë bërë një pjesë thelbësore e jetës. Këtu janë disa përfitime të mahnitshme të pajisjeve shtëpiake inteligjente se si ato e bëjnë jetën tonë të vlefshme dhe më të thjeshtë.

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Së fundmi Apple lëshoi ​​macOS Catalina 10.15.4 një përditësim shtesë për të rregulluar problemet, por duket se përditësimi po shkakton më shumë probleme që çojnë në bricking të makinerive mac. Lexoni këtë artikull për të mësuar më shumë