Sticky Session with Docker Swarm (CE) Debian 9

Įvadas

„Docker Swarm“ paverčia jūsų atskirus serverius kompiuterių grupe; palengvinantis mastelio keitimą, aukštą prieinamumą ir apkrovos balansavimą. Swarm apkrovos balansavimo priemonė įgyvendina visapusišką apkrovos balansavimo strategiją, ir tai gali trukdyti tinkamai veikti (senoms) būseną turinčioms programoms, kurioms reikia tam tikros formos fiksuotų seansų, kad būtų galima atlikti daug pasiekiamą sąranką su keliais egzemplioriais. „Docker Enterprise Edition“ palaiko „Layer-7“ lipnią seansą, tačiau šiame vadove daugiausia dėmesio skirsime nemokama (CE) „Docker“ versijai. Norėdami įgyvendinti lipnias sesijas, naudosime Traefik.

Būtinos sąlygos

  • Bent du naujai įdiegti ir atnaujinti Debian 9 egzemplioriai tame pačiame potinklyje su įjungtu privačiu tinklu
  • Šiuose egzemplioriuose įdiegta „Docker CE“.
  • Egzemplioriai turėtų būti to paties spiečiaus dalis ir turėti galimybę bendrauti tarpusavyje privačiu tinklu
  • Išankstinės Docker ir Docker Swarm žinios
  • Ne root naudotojas, turintis sudoteises (neprivaloma, bet primygtinai patariama nenaudoti root vartotojo)

Šioje pamokoje naudosime du Vultr egzempliorius su privačiais IP adresais 192.168.0.100ir 192.168.0.101. Abu jie yra „Docker Swarm“ vadybiniai mazgai (kuris nėra idealus gamybai, bet pakankamai šiai mokymo programai).

Kas aš esu

Šioje mokymo programoje naudojamas jwilder/whoamidocker vaizdas kaip demonstracinė programa. Šis paprastas konteineris atsakys į REST skambutį su atsakančio konteinerio pavadinimu, todėl bus labai lengva patikrinti, ar veikia lipnios sesijos. Akivaizdu, kad šis vaizdas naudojamas tik demonstraciniais tikslais ir jį reikia pakeisti jūsų programos vaizdu.

Whoami paslauga sukonfigūruota taip:

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

Jei vėliau curlsusikursime whoami REST galutinį tašką http://192.168.0.100/, pamatysime, kaip veikia Docker Swarm apkrovos balansavimas:

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

Neverta tai išbandyti naudojant šiuolaikines naršykles, pvz., „Chrome“ ar „Firefox“, nes jos skirtos palaikyti ryšį, o „Docker Swarm“ apkrovos balansavimo priemonė persijungs į kitą talpyklą tik po kiekvieno naujo prisijungimo. Jei norite tai išbandyti naudodami naršyklę, prieš atnaujindami vėl turėsite palaukti bent 30 sekundžių, kol ryšys užsidarys.

„Traefik“ nustatymas

„Traefik“ iš esmės palaiko „Docker Swarm“, jis gali aptikti ir užregistruoti konteinerius arba išregistruoti juos skrydžio metu ir palaiko ryšį su jūsų programa per vidinį perdangos tinklą. „Traefik“ reikia šiek tiek informacijos apie jūsų programą, kad galėtų pradėti tvarkyti su ja susijusias užklausas. Ši informacija pateikiama Traefik pridedant etiketes prie jūsų Swarm paslaugos:

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

Toliau pateiktame sąraše aprašoma, ką reiškia kiekviena etiketė:

  • traefik.docker.network : „Docker“ perdangos tinklas, per kurį „Traefik“ susisieks su jūsų paslauga
  • traefik.port : prievadas, kuriame klausosi jūsų paslauga (tai yra viduje atskleistas prievadas, o ne paskelbtas prievadas)
  • traefik.frontend.rule: PathPrefix:/ susieja konteksto šaknį „ /“ su šia paslauga
  • traefik.backend.loadbalancer.stickiness : įgalina šios paslaugos fiksuotus seansus

Dabar, kai whoami-servicesukonfigūruotas reikiamas etiketes, prie būrio galime pridėti „Traefik“ paslaugą:

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

Ši komanda vienu metu atlieka gana daug dalykų, kaip parodyta šiame sąraše:

  • --name traefik : Mūsų naujoji „Docker“ paslauga vadinasi „Traefik“.
  • -p8080:80: Mes skelbiame Traefik prievadą 80prie uosto, 8080nes prievadą 80jau naudoja mūsų whoami paslauga
  • -p9090:8080 : Mes skelbiame „Traefik“ žiniatinklio sąsają prie prievado 9090
  • --mount ... : Sumontuojame „Docker Socket“ į konteinerį, kad „Traefik“ galėtų pasiekti pagrindinio kompiuterio „Docker“ vykdymo laiką
  • --global : Mes norime, kad „Traefik“ konteineriai būtų kiekviename valdytojo mazge dėl didelio prieinamumo priežasčių
  • --constraint 'node.role == manager': Norime, kad „Traefik“ veiktų tik vadovo mazguose, nes darbuotojų mazgai negali suteikti „Traefik“ reikalingos informacijos. Pavyzdžiui, docker service lsdarbuotojo mazgas neveikia, todėl Traefik net negalėtų sužinoti, kokios paslaugos veikia
  • --network whoaminet: Prijunkite Traefik prie to paties tinklo kaip ir mūsų whoami-service, kitaip jis negalės prie jo prisijungti. Anksčiau liepėme „Traefik“ prisijungti prie mūsų paslaugos per šį tinklą su traefik.docker.networketikete
  • traefik : nurodykite dokeriui, kad šiai paslaugai naudotų naujausią „Traefik Docker“ vaizdą
  • --docker --docker.swarmmode --docker.watch --web --loglevel=DEBUG: Komandinės eilutės argumentai perduodami tiesiogiai „Traefik“, kad jis veiktų „Docker“ spiečiaus režimu. DEBUGčia neprivalomas, bet įdomus sąrankos metu ir šiai mokymo programai

Viskas, ką reikia padaryti, tai atidaryti reikiamus prievadus Debiano užkardoje:

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

Kaip tai veikia

Kai tik Traefik paleidžiamas, žurnaluose matote, kad Traefik aptinka du whoamikonteinerius. Jis taip pat išveda slapuko pavadinimą, kurį naudos tvarkydamas priklijuotą seansą:

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"

Jei pasilenksime, http://192.168.0.100:8080pamatysime, kad _a49bcbuvo nustatytas naujas slapukas :

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

Jei vėliau skambindami išsiųsime šį slapuką „Traefik“, visada būsime nukreipti į tą patį konteinerį:

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

Slapuke yra ne kas kita, kaip vidinis konteinerio IP adresas, į kurį „Traefik“ turėtų siųsti užklausą. Jei pakeisite slapuko vertę į http://10.0.0.4:8000, užklausa bus iš esmės persiųsta į kitą sudėtinį rodinį. Jei slapukas niekada nebūtų iš naujo siunčiamas „Traefik“, lipni seansas neveiks ir užklausos bus subalansuotos tarp programos konteinerių ir „Traefik“ konteinerių.

Tai viskas, ko reikia norint nustatyti „Layer 7 Sticky Sessions“ „Docker CE“ sistemoje „Debian 9“.


Štai kaip patikrinti „Hyper-V“ konteinerius „Windows 10 Insider“.

Štai kaip patikrinti „Hyper-V“ konteinerius „Windows 10 Insider“.

„Microsoft“ naujame tinklaraščio įraše paaiškino, kaip „Windows Insiders“ gali išbandyti „Hyper-V“ konteinerius „Windows 10“ – tai naujas virtualizacijos sprendimas, leidžiantis programoms veikti nepažeidžiant likusios operacinės sistemos.

Kaip įdiegti „Harbor“ „CentOS 7“.

Kaip įdiegti „Harbor“ „CentOS 7“.

„Harbour“ yra atvirojo kodo įmonės klasės registro serveris, kuriame saugomi ir platinami „Docker“ vaizdai. Harbour išplečia atvirojo kodo Docker Distribution b

Įdiekite Rancher OS per iPXE

Įdiekite Rancher OS per iPXE

Rancher OS yra labai lengvas Linux platinimas, sukurtas aplink Docker. Pati OS sveria apie 20 MB. Ši mokymo programa padės jums pradėti dirbti

„CoreOS“ sistemoje nustatykite savo „Docker“ registrą

„CoreOS“ sistemoje nustatykite savo „Docker“ registrą

Visi žinome ir mėgstame „Docker“ – platformą, leidžiančią kurti, valdyti ir platinti programų konteinerius keliuose įrenginiuose. „Docker Inc.“ teikia paslaugą t

„Docker-compose“ diegimas „CoreOS“.

„Docker-compose“ diegimas „CoreOS“.

Šiame straipsnyje paaiškinama, kaip „CoreOS“ įdiegti docker-compose. „CoreOS“ aplankas /usr/ yra nekintamas, todėl standartinis /usr/local/bin kelias nepasiekiamas.

Įdiekite „Rancher“ „CentOS 7“.

Įdiekite „Rancher“ „CentOS 7“.

Naudojate kitą sistemą? Įvadas Rancher yra atvirojo kodo platforma, skirta konteineriams paleisti ir privačių konteinerių paslaugai kurti. Rancher yra bazė

Įdiekite Docker CE Ubuntu 18.04

Įdiekite Docker CE Ubuntu 18.04

Įvadas „Docker“ yra programa, leidžianti diegti programas, kurios vykdomos kaip konteineriai. Jis buvo parašytas populiaria Go programavimo kalba

Sukurkite Docker Swarm Alpine Linux 3.9.0

Sukurkite Docker Swarm Alpine Linux 3.9.0

Įvadas Šiame vadove bus parodyta, kaip sukurti ir konfigūruoti Docker būrį naudojant kelis Alpine Linux 3.9.0 serverius ir Portainer. Prašome žinoti, kad

Įdiekite PHP programą naudodami „Docker-compose“.

Įdiekite PHP programą naudodami „Docker-compose“.

PHP programas paprastai sudaro žiniatinklio serveris, reliacinė duomenų bazių sistema ir pats kalbos vertėjas. Šioje pamokoje mes naudosime svertą

Apkrovos balansas su Docker

Apkrovos balansas su Docker

Kai naudojate žiniatinklio programą, paprastai norite maksimaliai išnaudoti savo išteklius, nereikės konvertuoti programinės įrangos į kelių gijų o

Įdiekite Node.js programą naudodami „Docker“.

Įdiekite Node.js programą naudodami „Docker“.

Šiame straipsnyje bus parodyta, kaip įdiegti „Node“ programą „Docker“ konteineryje. Pastaba: Šioje pamokoje daroma prielaida, kad įdiegėte ir perskaitėte „Docker“.

„Docker CE“ diegimas „CentOS 7“.

„Docker CE“ diegimas „CentOS 7“.

Docker konteinerio technologija leidžia paleisti programas konkrečioje ir izoliuotoje aplinkoje. „Docker Community Edition“ (CE) yra naujas „fre“ pavadinimas

Įdiekite „Kubernetes“ naudodami „Kubeadm“ „CentOS 7“.

Įdiekite „Kubernetes“ naudodami „Kubeadm“ „CentOS 7“.

Apžvalga Šis straipsnis skirtas padėti jums greitai sukurti ir paleisti Kubernetes klasterį su kubeadm. Šiame vadove bus naudojami du serveriai

„Docker“ diegimas „CentOS 7“.

„Docker“ diegimas „CentOS 7“.

Naudojate kitą sistemą? „Docker“ yra programa, leidžianti įdiegti programinę įrangą virtualiuose konteineriuose. Tai buvo parašyta Go programoje

„Docker CE“ diegimas „Debian 9“.

„Docker CE“ diegimas „Debian 9“.

Naudojate kitą sistemą? Įvadas Docker yra programa, leidžianti įdiegti programinę įrangą virtualiuose konteineriuose. Tai buvo parašyta G

Pradėkite naudotis „SQL Server 2017“ (MS-SQL) „CentOS 7“ su „Docker“.

Pradėkite naudotis „SQL Server 2017“ (MS-SQL) „CentOS 7“ su „Docker“.

Būtinos sąlygos Docker engine 1.8+. Mažiausiai 4 GB vietos diske. Mažiausiai 4 GB RAM. 1 veiksmas. Įdiekite Docker Norėdami įdiegti SQL-Server, Docker mus

Sticky Session with Docker Swarm (CE) Debian 9

Sticky Session with Docker Swarm (CE) Debian 9

Naudojate kitą sistemą? Įvadas Docker Swarm paverčia jūsų atskirus serverius kompiuterių grupe; palengvinantis mastelio keitimą, didelis prieinamumas ir

Du „Docker“ grafinio valdymo įrankiai: „DockerUI“ ir „Shipyard“.

Du „Docker“ grafinio valdymo įrankiai: „DockerUI“ ir „Shipyard“.

Naudodami „Vultr Docker“ programą galite lengvai įdiegti „Docker“ savo „Vultr“ serverio egzemplioriuje. Tuo tarpu galite palengvinti „Docker“ valdymo užduotį

Įdiekite „Rancher Server“ „RancherOS“.

Įdiekite „Rancher Server“ „RancherOS“.

Apžvalga RancherOS yra neįtikėtinai lengva operacinė sistema (tik apie 60 MB), kuri naudoja sistemos Docker demoną kaip PID 0 sistemos paslaugoms vykdyti.

Darbo su Kubernetes pradžia CentOS 7

Darbo su Kubernetes pradžia CentOS 7

„Kubernetes“ yra „Google“ sukurta atvirojo kodo platforma, skirta tvarkyti konteinerines programas serverių grupėje. Jis remiasi dešimtmečiu ir

Mašinų augimas: AI pritaikymas realiame pasaulyje

Mašinų augimas: AI pritaikymas realiame pasaulyje

Dirbtinis intelektas nėra ateityje, jis čia, dabartyje Šiame tinklaraštyje Skaitykite, kaip dirbtinio intelekto programos paveikė įvairius sektorius.

DDOS atakos: trumpa apžvalga

DDOS atakos: trumpa apžvalga

Ar taip pat esate DDOS atakų auka ir esate sumišęs dėl prevencijos metodų? Perskaitykite šį straipsnį, kad išspręstumėte savo užklausas.

Ar kada nors susimąstėte, kaip įsilaužėliai uždirba pinigų?

Ar kada nors susimąstėte, kaip įsilaužėliai uždirba pinigų?

Galbūt girdėjote, kad įsilaužėliai uždirba daug pinigų, bet ar kada susimąstėte, kaip jie uždirba tokius pinigus? padiskutuokime.

Revoliuciniai „Google“ išradimai, kurie palengvins jūsų gyvenimą.

Revoliuciniai „Google“ išradimai, kurie palengvins jūsų gyvenimą.

Ar norite pamatyti revoliucinius „Google“ išradimus ir kaip šie išradimai pakeitė kiekvieno žmogaus gyvenimą šiandien? Tada skaitykite tinklaraštį, kad pamatytumėte „Google“ išradimus.

Penktadienio esminiai dalykai: kas atsitiko AI varomiems automobiliams?

Penktadienio esminiai dalykai: kas atsitiko AI varomiems automobiliams?

Savavaledžių automobilių koncepcija, kuri išvažiuotų į kelius su dirbtinio intelekto pagalba, yra svajonė, kurią jau kurį laiką svajojame. Tačiau nepaisant kelių pažadų, jų niekur nematyti. Skaitykite šį tinklaraštį, kad sužinotumėte daugiau…

Technologinis išskirtinumas: tolima žmogaus civilizacijos ateitis?

Technologinis išskirtinumas: tolima žmogaus civilizacijos ateitis?

Kadangi mokslas sparčiai vystosi, perimdamas daug mūsų pastangų, taip pat didėja rizika, kad pateksime į nepaaiškinamą singuliarumą. Skaitykite, ką mums gali reikšti išskirtinumas.

Duomenų saugojimo raida – infografika

Duomenų saugojimo raida – infografika

Duomenų saugojimo metodai gali būti tobulinami nuo pat Duomenų gimimo. Šiame tinklaraštyje, remiantis infografika, aprašoma duomenų saugojimo raida.

Didžiųjų duomenų atskaitos architektūros sluoksnių funkcijos

Didžiųjų duomenų atskaitos architektūros sluoksnių funkcijos

Skaitykite tinklaraštį, kad paprasčiausiai sužinotumėte apie skirtingus didžiųjų duomenų architektūros sluoksnius ir jų funkcijas.

6 nuostabūs išmaniųjų namų įrenginių privalumai

6 nuostabūs išmaniųjų namų įrenginių privalumai

Šiame skaitmeniniu būdu pagrįstame pasaulyje išmanieji namų įrenginiai tapo svarbia gyvenimo dalimi. Štai keletas nuostabių išmaniųjų namų įrenginių privalumų, kaip jie daro mūsų gyvenimą vertą gyventi ir paprastesnį.

„macOS Catalina 10.15.4“ priedo atnaujinimas kelia daugiau problemų, nei sprendžia

„macOS Catalina 10.15.4“ priedo atnaujinimas kelia daugiau problemų, nei sprendžia

Neseniai „Apple“ išleido „macOS Catalina 10.15.4“ priedą, skirtą problemoms išspręsti, tačiau atrodo, kad dėl atnaujinimo kyla daugiau problemų, dėl kurių „Mac“ įrenginiai blokuojami. Norėdami sužinoti daugiau, perskaitykite šį straipsnį