Sticky Session with Docker Swarm (CE) CentOS 7

Įvadas

„Docker Swarm“ paverčia jūsų atskirus serverius kompiuterių grupe, palengvindama 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 nustatyti aukšto pasiekiamumo 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 CentOS 7 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
  • Neadministratorius, turintis sudo teises (neprivaloma, bet primygtinai patariama nenaudoti root vartotojo)

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

Kas aš esu

Šioje mokymo programoje jwilder/whoamidockerio vaizdas naudojamas kaip demonstracinė programa. Šis paprastas konteineris atsakys į REST skambutį su atsakančio konteinerio pavadinimu, todėl bus labai lengva patikrinti, ar veikia lipnios sesijos. Šis vaizdas naudojamas tik demonstraciniais tikslais ir jį reikia pakeisti jūsų programos vaizdu. Jis whoami-servicesukonfigūruotas 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 firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload

Jei būtume vėliau POILSIO baigtis tuo , mes galime pamatyti apskritojo Robin apkrovos balansavimas Docker spiečius darbe.curlwhoamihttp://192.168.0.100/

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 to išbandyti naudojant šiuolaikines naršykles, pvz., „Chrome“ ar „Firefox“, nes jos sukurtos palaikyti ryšius (atviras), 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 daugybę dalykų. Toliau pateiktame sąraše bus išsamiau paaiškinta:

  • --name traefik: Mūsų naujosios „Docker“ paslaugos pavadinimas yra traefik
  • -p8080:80: Skelbiame Traefik prievadą 80prie uosto 8080(portas 80jau naudojamas mūsų whoami-service)
  • -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: Traefik prijungia prie to paties tinklo kaip ir mūsų whoami-service, kitaip jie negali 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 ( --loglevel=DEBUGčia neprivaloma, bet įdomu atliekant sąranką ir šiai mokymo programai)

Belieka atidaryti reikiamus prievadus „CentOS“ užkardoje:

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --add-port=9090/tcp --permanent
sudo firewall-cmd --reload

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 (perdanga), talpyklos IP adresas, į kurį „Traefik“ turėtų siųsti užklausą. Jei pakeisite slapuko reikšmę į http://10.0.0.4:8000, užklausa bus veiksmingai persiųsta į kitą sudėtinį rodinį. Jei slapukas niekada nebūtų pakartotinai siunčiamas „Traefik“, lipni seansas neveiks ir užklausos bus subalansuotos tarp programos ir „Traefik“ konteinerių.

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


Įdiekite „Plesk“ „CentOS 7“.

Įdiekite „Plesk“ „CentOS 7“.

Naudojate kitą sistemą? Plesk yra patentuotas žiniatinklio prieglobos valdymo skydelis, leidžiantis vartotojams administruoti savo asmenines ir (arba) klientų svetaines, duomenų bazes

Kaip įdiegti „Squid“ tarpinį serverį „CentOS“.

Kaip įdiegti „Squid“ tarpinį serverį „CentOS“.

Squid yra populiari nemokama „Linux“ programa, leidžianti sukurti persiuntimo žiniatinklio tarpinį serverį. Šiame vadove pamatysite, kaip įdiegti „Squid“ „CentOS“, kad paverstumėte jus

Kaip įdiegti „Lighttpd“ (LLMP Stack) „CentOS 6“.

Kaip įdiegti „Lighttpd“ (LLMP Stack) „CentOS 6“.

Įvadas Lighttpd yra „Apache“ šakutė, skirta daug mažiau išteklių imti. Jis yra lengvas, todėl jo pavadinimas ir yra gana paprastas naudoti. Įdiegti

Statinio tinklo ir IPv6 konfigūravimas CentOS 7

Statinio tinklo ir IPv6 konfigūravimas CentOS 7

VULTR neseniai atliko pakeitimus, ir dabar viskas turėtų veikti gerai, kai įjungta „NetworkManager“. Jei norite išjungti

„Icinga2“ modifikavimas, kad būtų naudojamas pagrindinis / kliento modelis „CentOS 6“ arba „CentOS 7“.

„Icinga2“ modifikavimas, kad būtų naudojamas pagrindinis / kliento modelis „CentOS 6“ arba „CentOS 7“.

Icinga2 yra galinga stebėjimo sistema, o kai naudojama pagrindinio kliento modelyje, ji gali pakeisti NRPE pagrįstų stebėjimo patikrų poreikį. Meistras-klientas

Kaip įdiegti „Apache Cassandra 3.11.x“ „CentOS 7“.

Kaip įdiegti „Apache Cassandra 3.11.x“ „CentOS 7“.

Naudojate kitą sistemą? Apache Cassandra yra nemokama ir atviro kodo NoSQL duomenų bazių valdymo sistema, skirta užtikrinti mastelio keitimą, hig.

Kaip įdiegti „Mattermost 4.1“ „CentOS 7“.

Kaip įdiegti „Mattermost 4.1“ „CentOS 7“.

Naudojate kitą sistemą? Mattermost yra atvirojo kodo, savarankiškai priglobta alternatyva Slack SAAS pranešimų paslaugai. Kitaip tariant, naudodami Mattermost, jūs apytiksliai

Leidžia šifruoti Plesk

Leidžia šifruoti Plesk

„Plesk“ valdymo skydelyje yra labai graži „Lets Encrypt“ integracija. „Lets Encrypt“ yra vienas iš vienintelių SSL teikėjų, išduodančių visus sertifikatus

Leidžia šifruoti „cPanel“.

Leidžia šifruoti „cPanel“.

„Lets Encrypt“ yra sertifikatų institucija, skirta nemokamai teikti SSL sertifikatus. cPanel sukūrė tvarkingą integraciją, kad jūs ir jūsų klientas

Kaip įdiegti „Concrete5“ „CentOS 7“.

Kaip įdiegti „Concrete5“ „CentOS 7“.

Naudojate kitą sistemą? Concrete5 yra atvirojo kodo TVS, kuri siūlo daug išskirtinių ir naudingų funkcijų, padedančių redaktoriams lengvai sukurti turinį

Kaip įdiegti apžvalgos lentą „CentOS 7“.

Kaip įdiegti apžvalgos lentą „CentOS 7“.

Naudojate kitą sistemą? „Review Board“ yra nemokamas atvirojo kodo įrankis, skirtas šaltinio kodui, dokumentacijai, vaizdams ir daugeliui kitų peržiūrėti. Tai internetinė programinė įranga

Nustatykite HTTP autentifikavimą naudodami „Nginx“ „CentOS 7“.

Nustatykite HTTP autentifikavimą naudodami „Nginx“ „CentOS 7“.

Šiame vadove sužinosite, kaip nustatyti HTTP autentifikavimą Nginx žiniatinklio serveriui, kuriame veikia CentOS 7. Reikalavimai Norėdami pradėti, jums reikės

Kaip įdiegti YOURLS „CentOS 7“.

Kaip įdiegti YOURLS „CentOS 7“.

YOURLS (Your Own URL Shortener) yra atvirojo kodo URL sutrumpinimo ir duomenų analizės programa. Šiame straipsnyje apžvelgsime diegimo procesą

Kaip įdiegti ir konfigūruoti „ArangoDB“ „CentOS 7“.

Kaip įdiegti ir konfigūruoti „ArangoDB“ „CentOS 7“.

Naudojate kitą sistemą? Įvadas ArangoDB yra atvirojo kodo NoSQL duomenų bazė su lanksčiu duomenų modeliu dokumentams, grafikams ir raktų reikšmėms. tai yra

Etckeeper naudojimas versijai valdyti /etc

Etckeeper naudojimas versijai valdyti /etc

Įvadas Katalogas /etc/ vaidina lemiamą vaidmenį veikiant Linux sistemai. Taip yra todėl, kad beveik visos sistemos konfigūracijos

Kodėl turėtumėte naudoti SSHFS? Kaip prijungti nuotolinę failų sistemą su SSHFS „CentOS 6“.

Kodėl turėtumėte naudoti SSHFS? Kaip prijungti nuotolinę failų sistemą su SSHFS „CentOS 6“.

Daugelis sistemos administratorių valdo didelius serverių kiekius. Kai failus reikia pasiekti skirtinguose serveriuose, prisijungiant prie kiekvieno atskirai apytiksliai

„Half Life 2“ serverio nustatymas „CentOS 6“.

„Half Life 2“ serverio nustatymas „CentOS 6“.

Ši pamoka apims Half Life 2 žaidimų serverio diegimą CentOS 6 sistemoje. 1 veiksmas: būtinų sąlygų įdiegimas Norėdami nustatyti ou

Kaip įdiegti „Laravel GitScrum“ „CentOS 7“.

Kaip įdiegti „Laravel GitScrum“ „CentOS 7“.

Laravel GitScrum arba GitScrum yra atvirojo kodo produktyvumo įrankis, skirtas padėti kūrimo komandoms įgyvendinti Scrum metodiką panašiai

Kaip įdiegti „PowerDNS“ „CentOS“.

Kaip įdiegti „PowerDNS“ „CentOS“.

Įvadas Šiame „Vultr“ vadove sužinosite, kaip įdiegti „PowerDNS“. PowerDNS yra programa, skirta paleisti savo vardų serverius. Tai labai naudinga, kai

Įdiekite „Wordpress“ naudodami „Apache“, PHP ir „MySQL“ (automatinis paleisties scenarijus)

Įdiekite „Wordpress“ naudodami „Apache“, PHP ir „MySQL“ (automatinis paleisties scenarijus)

Galite nukopijuoti ir įklijuoti šį bash scenarijų į Vultr valdymo skydelio paleisties scenarijaus sritį. Jis įdiegs visus reikalingus paketus į ru

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į