Kleepuv seanss Docker Swarmiga (CE) Debian 9-s

Sissejuhatus

Docker Swarm muudab teie üksikud serverid arvutite klastriks; hõlbustab skaleerimist, kõrget saadavust ja koormuse tasakaalustamist. Swarmi koormuse tasakaalustaja rakendab koormuse tasakaalustamise strateegiat ja see võib häirida (pärand) olekupõhiste rakenduste nõuetekohast toimimist, mis nõuavad teatud tüüpi kleepuvaid seansse, et võimaldada kõrgetasemelist seadistust mitme eksemplariga. Docker Enterprise Edition toetab Layer-7 kleepuvat seanssi, kuid selles juhendis keskendume Dockeri tasuta (CE) versioonile. Kleepuvate seansside rakendamiseks kasutame Traefikut.

Eeltingimused

  • Vähemalt kaks värskelt juurutatud ja värskendatud Debian 9 eksemplari samas alamvõrgus, kus privaatvõrk on lubatud
  • Nendele eksemplaridele installitud Docker CE
  • Eksemplarid peaksid olema sama sülemi osad ja suutma üksteisega privaatvõrgu kaudu suhelda
  • Eelteadmised Dockerist ja Docker Swarmist
  • Mitte-juurkasutaja, kellel on sudoõigused (valikuline, kuid on tungivalt soovitatav mitte kasutada juurkasutajat)

Selles õpetuses kasutame kahte Vultri eksemplari privaatse IP-aadressiga 192.168.0.100ja 192.168.0.101. Mõlemad on Docker Swarmi haldurisõlmed (mis pole tootmiseks ideaalne, kuid selle õpetuse jaoks piisav).

Kes ma olen

See õpetus kasutab jwilder/whoamidokkeri pilti demorakendusena. See lihtne konteiner vastab REST-kõnele vastava konteineri nimega, muutes kleepuvate seansside töötamise väga lihtsaks. Seda pilti kasutatakse ilmselt ainult demoeesmärkidel ja see tuleb asendada teie enda rakenduse pildiga.

Whoami-teenus on konfigureeritud järgmiselt:

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

Kui kasutame seejärel curlwhoami REST-i lõpp-punkti kohas http://192.168.0.100/, näeme Docker Swarmi koormuse tasakaalustamist:

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

Seda pole mõtet testida kaasaegsete brauseritega, nagu Chrome või Firefox, kuna need on loodud ühenduste elus hoidmiseks ja Docker Swarmi koormuse tasakaalustaja lülitub teisele konteinerile ainult iga uue ühenduse korral. Kui soovite seda brauseris testida, peate enne uuesti värskendamist ootama vähemalt 30 sekundit, kuni ühendus sulgub.

Traefiku seadistamine

Traefik toetab algselt Docker Swarmi, suudab konteinereid käigupealt tuvastada ja registreerida või nende registreerimise tühistada ning suhtleb teie rakendusega sisemise ülekattevõrgu kaudu. Traefik vajab teie rakenduse kohta teavet, enne kui saab hakata selle taotlusi käsitlema. See teave edastatakse Traefikule, lisades oma Swarmi teenusele sildid:

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

Järgmises loendis kirjeldatakse iga sildi tähendust.

  • traefik.docker.network : Dockeri ülekattevõrk, mille kaudu Traefik teie teenusega suhtleb
  • traefik.port : port, mida teie teenus kuulab (see on sisemiselt avatud port, mitte avaldatud port)
  • traefik.frontend.rule: PathPrefix:/ seob konteksti juure /selle teenusega
  • traefik.backend.loadbalancer.stickiness : lubab selle teenuse jaoks kleepuvad seansid

Nüüd, kui whoami-serviceon vajalike siltidega seadistatud, saame lisada sülemi teenuse Traefik:

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

See käsk teeb üsna palju asju korraga, nagu on näidatud järgmises loendis:

  • --name traefik : Meie uue Dockeri teenuse nimi on Traefik
  • -p8080:80: Avaldame Traefiku sadamast 80sadamasse, 8080sest port 80on juba meie whoami-teenuse kasutuses
  • -p9090:8080 : Avaldame pordile Traefiku enda veebiliidese 9090
  • --mount ... : Paigaldame Docker Socketi konteinerisse, et Traefik pääseks juurde hosti Dockeri käitusajale
  • --global : Soovime Traefiku konteinereid igasse haldurisõlme kõrge kättesaadavuse tõttu
  • --constraint 'node.role == manager': Soovime, et Traefik töötaks ainult haldurisõlmedes, kuna töötaja sõlmed ei suuda pakkuda Traefikule vajalikku teavet. Näiteks docker service lstöötaja sõlmes ei tööta, nii et Traefik ei saaks isegi tuvastada, millised teenused töötavad
  • --network whoaminet: Ühendage Traefik meiega samasse võrku whoami-service, muidu ei saa sellega ühendust. Eelnevalt ütlesime Traefikule, et ühenduks meie teenusega selle traefik.docker.networkmärgisega võrgu kaudu
  • traefik : käskige dockeril kasutada selle teenuse jaoks uusimat Traefik dockeri pilti
  • --docker --docker.swarmmode --docker.watch --web --loglevel=DEBUG: käsurea argumendid edastati otse Traefikule, et see saaks töötada Dockeri sülemirežiimis. DEBUGon siin valikuline, kuid huvitav seadistamise ajal ja selle õpetuse jaoks

Jääb üle vaid Debiani tulemüüris vajalikud pordid avada:

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

Kuidas see töötab

Niipea kui Traefik käivitub, on logides näha, et Traefik avastab need kaks whoamikonteinerit. Samuti väljastab see küpsise nime, mida ta kasutab kleepuva seansi käsitlemiseks:

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"

Kui kõverdame, http://192.168.0.100:8080näeme, et on seatud uus küpsis _a49bc:

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

Kui järgmistel kõnedel saadame selle küpsise Traefikule, suunatakse meid alati samasse konteinerisse:

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

Küpsis ei sisalda midagi peale konteineri sisemise IP-aadressi, kuhu Traefik peaks saatma päringu. Kui muudate küpsise väärtuseks http://10.0.0.4:8000, edastatakse taotlus tegelikult teisele konteinerile. Kui küpsist ei saadeta kunagi Traefikule, siis kleepuva seansi seanss ei tööta ja taotlused jaotatakse rakenduse konteinerite ja Traefiku konteinerite vahel.

See on kõik, mida on vaja Debian 9-s Docker CE-s Layer 7 Sticky Sessions seadistamiseks.


Siin on, kuidas kontrollida Hyper-V konteinereid Windows 10 Insideris

Siin on, kuidas kontrollida Hyper-V konteinereid Windows 10 Insideris

Microsoft selgitas uues ajaveebipostituses, kuidas Windows Insiders saab testida Hyper-V konteinereid Windows 10-s – uues virtualiseerimislahenduses, mis võimaldab rakendustel töötada ilma ülejäänud operatsioonisüsteemi mõjutamata.

Kuidas installida programmi CentOS 7 Harbor

Kuidas installida programmi CentOS 7 Harbor

Harbour on avatud lähtekoodiga ettevõtteklassi registriserver, mis salvestab ja levitab Dockeri pilte. Harbour laiendab avatud lähtekoodiga Docker Distribution b

Installige Rancher OS iPXE kaudu

Installige Rancher OS iPXE kaudu

Rancher OS on väga kerge Linuxi distributsioon, mis on üles ehitatud Dockeri ümber. OS ise kaalub umbes 20 MB. See õpetus aitab teid tööle panna

Seadistage CoreOS-is oma Dockeri register

Seadistage CoreOS-is oma Dockeri register

Me kõik teame ja armastame Dockerit – platvormi rakenduste konteinerite loomiseks, haldamiseks ja levitamiseks mitme masina vahel. Docker Inc pakub teenust t

Docker-compose installimine CoreOS-i

Docker-compose installimine CoreOS-i

See artikkel selgitab, kuidas installida CoreOS-i docker-compose. CoreOS-is on /usr/ kaust muutumatu, nii et standardne /usr/local/bin tee pole saadaval

Installige Rancher operatsioonisüsteemi CentOS 7

Installige Rancher operatsioonisüsteemi CentOS 7

Kas kasutate teistsugust süsteemi? Sissejuhatus Rancher on avatud lähtekoodiga platvorm konteinerite käitamiseks ja privaatkonteinerite teenuse loomiseks. Rancher on baas

Installige Docker CE versioonile Ubuntu 18.04

Installige Docker CE versioonile Ubuntu 18.04

Sissejuhatus Docker on rakendus, mis võimaldab juurutada programme, mida käitatakse konteineritena. See oli kirjutatud populaarses Go programmeerimiskeeles

Looge Alpine Linux 3.9.0 Docker Swarm

Looge Alpine Linux 3.9.0 Docker Swarm

Sissejuhatus See juhend näitab teile, kuidas luua ja konfigureerida Dockeri sülem, kasutades mitut Alpine Linux 3.9.0 serverit ja Portainerit. Palun olge teadlik sellest

PHP-rakenduse juurutamine Docker-composei abil

PHP-rakenduse juurutamine Docker-composei abil

PHP-rakendused koosnevad tavaliselt veebiserverist, relatsioonilisest andmebaasisüsteemist ja keeletõlkist endast. Selles õpetuses kasutame võimalust

Koormuse tasakaal Dockeriga

Koormuse tasakaal Dockeriga

Veebirakendust käivitades soovite tavaliselt oma ressurssidest maksimumi võtta, ilma et peaksite oma tarkvara mitmelõimeliseks muutma

Juurutage rakendus Node.js Dockeri abil

Juurutage rakendus Node.js Dockeri abil

See artikkel näitab teile, kuidas juurutada oma Node'i rakendust Dockeri konteineris. Märkus. See õpetus eeldab, et olete Dockeri installinud ja lugenud

Docker CE installimine opsüsteemi CentOS 7

Docker CE installimine opsüsteemi CentOS 7

Dockeri konteinertehnoloogia võimaldab teil käivitada rakendusi konkreetses ja isoleeritud keskkonnas. Docker Community Edition (CE) on frei uus nimi

Juurutage Kubernetes koos Kubeadmiga CentOS 7-s

Juurutage Kubernetes koos Kubeadmiga CentOS 7-s

Ülevaade Selle artikli eesmärk on aidata teil Kubernetese klastri kubeadmiga kiiresti tööle panna. Selles juhendis juurutatakse kaks serverit

Dockeri installimine opsüsteemi CentOS 7

Dockeri installimine opsüsteemi CentOS 7

Kas kasutate teistsugust süsteemi? Docker on rakendus, mis võimaldab juurutada tarkvara virtuaalsetes konteinerites. See oli kirjutatud programmis Go

Docker CE installimine Debian 9-le

Docker CE installimine Debian 9-le

Kas kasutate teistsugust süsteemi? Sissejuhatus Docker on rakendus, mis võimaldab juurutada tarkvara virtuaalsetes konteinerites. See oli kirjas G

Alustage SQL Server 2017 (MS-SQL) kasutamist operatsioonisüsteemis CentOS 7 koos Dockeriga

Alustage SQL Server 2017 (MS-SQL) kasutamist operatsioonisüsteemis CentOS 7 koos Dockeriga

Eeldused Dockeri mootor 1.8+. Vähemalt 4 GB kettaruumi. Vähemalt 4 GB muutmälu. Samm 1. Install Docker SQL-Serveri installimiseks tuleb Docker mus

Kleepuv seanss Docker Swarmiga (CE) Debian 9-s

Kleepuv seanss Docker Swarmiga (CE) Debian 9-s

Kas kasutate teistsugust süsteemi? Sissejuhatus Docker Swarm muudab teie üksikud serverid arvutite klastriks; skaleerimise hõlbustamine, kõrge saadavus an

Kaks Dockeri graafilist haldustööriista: DockerUI ja Shipyard

Kaks Dockeri graafilist haldustööriista: DockerUI ja Shipyard

Rakenduse Vultr Docker abil saate Dockeri oma Vultr serveri eksemplari hõlpsalt juurutada. Samal ajal saate hõlbustada Dockeri haldamist

Installige RancherOS-i Rancher Server

Installige RancherOS-i Rancher Server

Ülevaade RancherOS on uskumatult kerge operatsioonisüsteem (ainult umbes 60 MB), mis käitab süsteemiteenuste käitamiseks PID 0-na Dockeri deemonit.

Kubernetesiga alustamine CentOS 7-s

Kubernetesiga alustamine CentOS 7-s

Kubernetes on avatud lähtekoodiga platvorm, mille Google on välja töötanud konteinerite rakenduste haldamiseks serveriklastris. See põhineb kümnendil ja

Masinate tõus: AI tegelikud rakendused

Masinate tõus: AI tegelikud rakendused

Tehisintellekt ei ole tulevik, see on siin, olevikus. Sellest blogist loe, kuidas tehisintellekti rakendused on mõjutanud erinevaid sektoreid.

DDOS-i rünnakud: lühike ülevaade

DDOS-i rünnakud: lühike ülevaade

Kas olete ka DDOS-i rünnakute ohver ja olete segaduses ennetusmeetodite osas? Oma päringute lahendamiseks lugege seda artiklit.

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Võib-olla olete kuulnud, et häkkerid teenivad palju raha, kuid kas olete kunagi mõelnud, kuidas nad sellist raha teenivad? arutleme.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Kas soovite näha Google'i revolutsioonilisi leiutisi ja seda, kuidas need leiutised muutsid iga inimese elu tänapäeval? Seejärel lugege ajaveebi, et näha Google'i leiutisi.

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Isejuhtivate autode kontseptsioon tehisintellekti abil teedele jõudmiseks on meil juba mõnda aega unistus. Kuid vaatamata mitmele lubadusele pole neid kusagil näha. Lisateabe saamiseks lugege seda ajaveebi…

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Kuna teadus areneb kiiresti, võttes üle suure osa meie jõupingutustest, suureneb ka oht, et allume seletamatule singulaarsusele. Loe, mida singulaarsus meie jaoks tähendada võiks.

Andmesalvestuse areng – infograafik

Andmesalvestuse areng – infograafik

Andmete säilitamise meetodid on arenenud alates andmete sünnist. See ajaveeb käsitleb infograafiku alusel andmete salvestamise arengut.

Suurandmete viitearhitektuuri kihtide funktsioonid

Suurandmete viitearhitektuuri kihtide funktsioonid

Lugege ajaveebi, et kõige lihtsamal viisil teada saada Big Data Architecture'i erinevaid kihte ja nende funktsioone.

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

Selles digipõhises maailmas on nutikad koduseadmed muutunud elu oluliseks osaks. Siin on mõned nutikate koduseadmete hämmastavad eelised, mis muudavad meie elu elamisväärseks ja lihtsamaks.

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

Hiljuti andis Apple välja macOS Catalina 10.15.4 täiendusvärskenduse probleemide lahendamiseks, kuid tundub, et värskendus põhjustab rohkem probleeme, mille tulemuseks on Maci masinate tellimine. Lisateabe saamiseks lugege seda artiklit