Sticky Session With Docker Swarm (CE) á CentOS 7

Kynning

Docker Swarm breytir einstökum netþjónum þínum í hóp af tölvum, sem auðveldar stærðarstærð, mikið aðgengi og álagsjafnvægi. Swarm load-jöfnunarbúnaðurinn útfærir álagsjafnvægisstefnu í hringrás og þetta gæti truflað rétta virkni (gamla) kerfisbundinna forrita sem krefjast einhvers konar klístraðar lota til að leyfa uppsetningu með mikilli aðgengi með mörgum tilfellum. Docker Enterprise Edition styður Layer-7 Sticky session, en í þessari handbók munum við einbeita okkur að ókeypis (CE) útgáfu af Docker. Til að útfæra klístraðar lotur munum við nota Traefik.

Forkröfur

  • Að minnsta kosti tvö nýuppsett og uppfærð CentOS 7 tilvik í sama undirneti með einkanet virkt
  • Docker CE sett upp á þessum tilvikum
  • Tilvikin ættu að vera hluti af sama Swarm og ættu að geta átt samskipti sín á milli í gegnum einkanetið
  • Fyrri þekking á Docker og Docker Swarm
  • Notandi sem ekki er stjórnandi með sudo réttindi (valfrjálst en það er eindregið ráðlagt að nota ekki rótarnotandann)

Í þessari kennslu munum við nota tvö Vultr tilvik með einka IP tölum 192.168.0.100 og 192.168.0.101, báðir eru Docker Swarm stjórnandahnútar (sem er ekki tilvalið fyrir framleiðslu en nóg fyrir þessa kennslu).

Hver er ég

Þessi kennsla notar jwilder/whoamiDocker myndina sem kynningarforrit. Þessi einfalda gámur mun svara REST símtali með nafni gámsins sem svarar, sem gerir það mjög auðvelt að prófa hvort klístruðu loturnar virka. Þessi mynd er aðeins notuð í kynningarskyni og þarf að skipta út fyrir myndina þíns eigin forrits. The whoami-serviceer stillt sem hér segir:

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

Ef við myndum síðan curlvið whoamiHVÍLD endapunktur á http://192.168.0.100/, getum við séð að umferð-Robin álag jafnvægi á Docker Swarm í vinnunni.

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

Það hefur ekkert gagn að prófa þetta með nútíma vöfrum eins og Chrome eða Firefox vegna þess að þeir eru hannaðir til að halda tengingum lifandi (opnum) og Docker Swarm hleðslujafnari mun aðeins skipta yfir í hinn ílátið við hverja nýja tengingu. Ef þú vilt prófa þetta með vafra þarftu að bíða í að minnsta kosti 30 sekúndur þar til tengingin lokar áður en þú endurnýjar hana aftur.

Uppsetning Traefik

Traefik styður Docker Swarm innbyggt, það getur greint og skráð eða afskráð gáma á flugi og það hefur samskipti við forritið þitt í gegnum innra yfirborðsnetið. Traefik þarf nokkrar upplýsingar um umsókn þína áður en það getur byrjað að afgreiða beiðnir um hana. Þessar upplýsingar eru veittar Traefik með því að bæta merkimiðum við Swarm þjónustuna þína.

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

Listinn hér að neðan lýsir hvað hvert merki þýðir:

  • traefik.docker.network: Docker yfirborðsnetið sem Traefik mun eiga samskipti við þjónustuna þína
  • traefik.port: Gáttin sem þjónustan þín hlustar á (þetta er tengið sem er útsett innra með, ekki birta tengið)
  • traefik.frontend.rule: PathPrefix:/bindur samhengisrótina /við þessa þjónustu.
  • traefik.backend.loadbalancer.stickiness: Virkjar klístraðar lotur fyrir þessa þjónustu

Nú þegar whoami-servicebúið er að stilla tilskilin merki getum við bætt Traefik þjónustunni við kvik:

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

Þessi skipun gerir ansi marga hluti í einu. Listinn hér að neðan mun útskýra nánar:

  • --name traefik: Nýja Docker þjónustan okkar heitir traefik
  • -p8080:80: Við birta höfn Traefik er 80til hafnar 8080(höfn 80er nú þegar í notkun af okkar whoami-service)
  • -p9090:8080: Við birtum eigin vefviðmót Traefik í port 9090
  • --mount ...: Við festum Docker Socket í gáminn svo að Traefik geti fengið aðgang að Docker keyrslutíma gestgjafans
  • --global: Við viljum Traefik gáma á hvern stjórnandahnút af mikilli framboðsástæðum
  • --constraint 'node.role == manager': Við viljum aðeins að Traefik keyri á stjórnendahnútum vegna þess að starfshnútar geta ekki veitt Traefik þær upplýsingar sem það þarf. Til dæmis, docker service lsá vinnuhnút virkar ekki, þannig að Traefik myndi ekki einu sinni geta uppgötvað hvaða þjónustur eru í gangi
  • --network whoaminet: Tengist Traefik við sama net og okkar whoami-service, annars geta þeir ekki tengst. Við sögðum Traefik áður að tengjast þjónustu okkar í gegnum þetta net með traefik.docker.networkmerkimiðanum
  • traefik: Segðu docker að nota nýjustu Traefik docker myndina fyrir þessa þjónustu
  • --docker --docker.swarmmode --docker.watch --web --loglevel=DEBUG: Skipanalínurök sendar beint til Traefik til að leyfa því að keyra í Docker swarm ham ( --loglevel=DEBUGer valfrjálst hér en áhugavert við uppsetningu og fyrir þessa kennslu)

Allt sem er eftir að gera er að opna nauðsynlegar gáttir í CentOS eldveggnum:

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

Hvernig það virkar

Um leið og Traefik fer í gang geturðu séð í loggunum að Traefik uppgötvar gámana tvo whoami. Það gefur líka út kökuheitið sem það mun nota til að takast á við klístraða lotuna:

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"

Ef við snúum okkur að http://192.168.0.100:8080getum við séð að ný kex _a49bchefur verið sett:

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

Ef við sendum þessa vafraköku til Traefik í síðari símtölum, munum við alltaf vera áframsend í sama ílát:

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

Kexið inniheldur ekkert nema innra, (yfirlag), IP tölu gámsins sem Traefik ætti að senda til að biðja um. Ef þú breytir vafrakökugildinu í http://10.0.0.4:8000þá yrði beiðnin í raun áframsend til hins ílátsins. Ef kexið yrði aldrei endursend til Traefik, þá mun klístur sessunnar ekki virka og beiðnir verða jafnaðar á milli gáma forritsins og Traefik gáma.

Það er allt sem þarf til að setja upp Layer 7 Sticky Sessions í Docker CE á CentOS 7.


Settu upp Plesk á CentOS 7

Settu upp Plesk á CentOS 7

Að nota annað kerfi? Plesk er sérstakt stjórnborð fyrir vefþjón sem gerir notendum kleift að stjórna persónulegum og/eða viðskiptavinum vefsíðum sínum, gagnagrunnum

Hvernig á að setja upp Squid Proxy á CentOS

Hvernig á að setja upp Squid Proxy á CentOS

Smokkfiskur er vinsælt, ókeypis Linux forrit sem gerir þér kleift að búa til framsendingarforrit á vefnum. Í þessari handbók muntu sjá hvernig á að setja upp Squid á CentOS til að snúa þér

Hvernig á að setja upp Lighttpd (LLMP Stack) á CentOS 6

Hvernig á að setja upp Lighttpd (LLMP Stack) á CentOS 6

Inngangur Lighttpd er gaffal af Apache sem miðar að því að vera miklu minna auðlindafrekt. Hann er léttur, þess vegna heitir hann, og er frekar einfaldur í notkun. Uppsetning

Stilla Static Networking og IPv6 á CentOS 7

Stilla Static Networking og IPv6 á CentOS 7

VULTR hefur nýlega gert breytingar á enda þeirra og allt ætti nú að virka vel út úr kassanum með NetworkManager virkt. Ef þú vilt slökkva á

Breytir Icinga2 til að nota Master/Client Model á CentOS 6 eða CentOS 7

Breytir Icinga2 til að nota Master/Client Model á CentOS 6 eða CentOS 7

Icinga2 er öflugt eftirlitskerfi og þegar það er notað í aðal-viðskiptavinamódel getur það komið í stað þörf fyrir NRPE-undirstaða vöktunareftirlit. Húsbóndinn

Hvernig á að setja upp Apache Cassandra 3.11.x á CentOS 7

Hvernig á að setja upp Apache Cassandra 3.11.x á CentOS 7

Að nota annað kerfi? Apache Cassandra er ókeypis og opinn uppspretta NoSQL gagnagrunnsstjórnunarkerfi sem er hannað til að veita sveigjanleika, háan

Hvernig á að setja upp Microweber á CentOS 7

Hvernig á að setja upp Microweber á CentOS 7

Að nota annað kerfi? Microweber er opinn uppspretta draga og sleppa CMS og netverslun. Microweber frumkóði er hýst á GitHub. Þessi handbók mun sýna þér

Hvernig á að setja upp Mattermost 4.1 á CentOS 7

Hvernig á að setja upp Mattermost 4.1 á CentOS 7

Að nota annað kerfi? Mattermost er opinn uppspretta, sjálfhýst valkostur við Slack SAAS skilaboðaþjónustuna. Með öðrum orðum, með Mattermost, þú ca

Að búa til net Minecraft netþjóna með BungeeCord á Debian 8, Debian 9 eða CentOS 7

Að búa til net Minecraft netþjóna með BungeeCord á Debian 8, Debian 9 eða CentOS 7

Það sem þú þarft Vultr VPS með að minnsta kosti 1GB af vinnsluminni. SSH aðgangur (með rót / stjórnunarréttindi). Skref 1: Uppsetning BungeeCord Fyrst af öllu

Láttu dulkóða á Plesk

Láttu dulkóða á Plesk

Plesk stjórnborðið er með mjög fallegri samþættingu fyrir Lets Encrypt. Lets Encrypt er ein af einu SSL veitunum sem gefa út skírteini að fullu

Láttu dulkóða á cPanel

Láttu dulkóða á cPanel

Lets Encrypt er vottunaryfirvöld sem sérhæfir sig í að útvega SSL vottorð án endurgjalds. cPanel hefur byggt upp snyrtilega samþættingu svo þú og viðskiptavinurinn þinn

Hvernig á að setja upp Concrete5 á CentOS 7

Hvernig á að setja upp Concrete5 á CentOS 7

Að nota annað kerfi? Concrete5 er opinn uppspretta CMS sem býður upp á marga áberandi og gagnlega eiginleika til að aðstoða ritstjóra við að framleiða efni auðveldlega og

Hvernig á að setja upp Review Board á CentOS 7

Hvernig á að setja upp Review Board á CentOS 7

Að nota annað kerfi? Review Board er ókeypis og opinn hugbúnaður til að skoða frumkóða, skjöl, myndir og margt fleira. Það er vefbundið hugbúnaðarstríð

Settu upp HTTP auðkenningu með Nginx á CentOS 7

Settu upp HTTP auðkenningu með Nginx á CentOS 7

Í þessari handbók munt þú læra hvernig á að setja upp HTTP auðkenningu fyrir Nginx vefþjón sem keyrir á CentOS 7. Kröfur Til að byrja þarftu að

Hvernig á að setja upp YOURLS á CentOS 7

Hvernig á að setja upp YOURLS á CentOS 7

YOURLS (Your Own URL Shortener) er opinn uppspretta vefslóða styttingar og gagnagreiningarforrit. Í þessari grein munum við fjalla um ferlið við uppsetningu

How to Install and Configure ArangoDB on CentOS 7

How to Install and Configure ArangoDB on CentOS 7

Using a Different System? Introduction ArangoDB is an open source NoSQL database with a flexible data model for documents, graphs, and key-values. It is

Notkun Etckeeper fyrir útgáfustýringu á /etc

Notkun Etckeeper fyrir útgáfustýringu á /etc

Inngangur /etc/ skrárinn gegnir mikilvægu hlutverki í því hvernig Linux kerfi virkar. Ástæðan fyrir þessu er sú að næstum allar kerfisstillingar

Af hverju ættir þú að nota SSHFS? Hvernig á að tengja fjarskráarkerfi með SSHFS á CentOS 6

Af hverju ættir þú að nota SSHFS? Hvernig á að tengja fjarskráarkerfi með SSHFS á CentOS 6

Margir kerfisstjórar stjórna miklu magni af netþjónum. Þegar aðgangur þarf að skrám á mismunandi netþjónum er innskráning á hvern og einn fyrir sig ca

Setja upp Half Life 2 Server á CentOS 6

Setja upp Half Life 2 Server á CentOS 6

Þessi kennsla mun fjalla um ferlið við að setja upp Half Life 2 leikjaþjón á CentOS 6 System. Skref 1: Forsendur settar upp Til að setja upp ou

Hvernig á að setja upp Laravel GitScrum á CentOS 7

Hvernig á að setja upp Laravel GitScrum á CentOS 7

Laravel GitScrum, eða GitScrum er opinn uppspretta framleiðniverkfæri hannað til að hjálpa þróunarteymi að innleiða Scrum aðferðafræðina á svipaðan hátt

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Gervigreind er ekki í framtíðinni, hún er hér í nútímanum Í þessu bloggi Lestu hvernig gervigreindarforrit hafa haft áhrif á ýmsa geira.

DDOS árásir: Stutt yfirlit

DDOS árásir: Stutt yfirlit

Ertu líka fórnarlamb DDOS árása og ruglaður með forvarnaraðferðirnar? Lestu þessa grein til að leysa spurningar þínar.

Hefur þú einhvern tíma velt því fyrir þér hvernig tölvuþrjótar græða peninga?

Hefur þú einhvern tíma velt því fyrir þér hvernig tölvuþrjótar græða peninga?

Þú gætir hafa heyrt að tölvuþrjótar græða mikið af peningum, en hefur þú einhvern tíma velt því fyrir þér hvernig þeir vinna sér inn svona peninga? við skulum ræða.

Byltingarkenndar uppfinningar frá Google sem munu auðvelda lífi þínu.

Byltingarkenndar uppfinningar frá Google sem munu auðvelda lífi þínu.

Viltu sjá byltingarkenndar uppfinningar frá Google og hvernig þessar uppfinningar breyttu lífi hvers manns í dag? Lestu síðan til að blogga til að sjá uppfinningar frá Google.

Föstudagur Nauðsynlegur: Hvað varð um gervigreindardrifna bíla?

Föstudagur Nauðsynlegur: Hvað varð um gervigreindardrifna bíla?

Hugmyndin um að sjálfkeyrandi bílar fari á göturnar með hjálp gervigreindar er draumur sem við höfum átt um tíma núna. En þrátt fyrir nokkur loforð eru þau hvergi sjáanleg. Lestu þetta blogg til að læra meira…

Tæknileg sérkenni: Fjarlæg framtíð mannlegrar siðmenningar?

Tæknileg sérkenni: Fjarlæg framtíð mannlegrar siðmenningar?

Þar sem vísindin þróast hratt og taka yfir mikið af viðleitni okkar, eykst hættan á því að verða fyrir óútskýranlegri einstæðu. Lestu, hvað sérkenni gæti þýtt fyrir okkur.

Þróun gagnageymslu – Infographic

Þróun gagnageymslu – Infographic

Geymsluaðferðir gagna hafa verið að þróast gæti verið frá fæðingu gagna. Þetta blogg fjallar um þróun gagnageymslu á grundvelli upplýsingamynda.

Virkni Big Data Reference Architecture Layers

Virkni Big Data Reference Architecture Layers

Lestu bloggið til að þekkja mismunandi lög í Big Data Architecture og virkni þeirra á einfaldasta hátt.

6 ótrúlegir kostir þess að hafa snjall heimilistæki í lífi okkar

6 ótrúlegir kostir þess að hafa snjall heimilistæki í lífi okkar

Í þessum stafræna heimi hafa snjallheimilistæki orðið afgerandi hluti af lífi. Hér eru nokkrir ótrúlegir kostir snjallheimatækja um hvernig þau gera líf okkar þess virði að lifa því og einfaldara.

macOS Catalina 10.15.4 viðbót uppfærsla veldur fleiri vandamálum en að leysa

macOS Catalina 10.15.4 viðbót uppfærsla veldur fleiri vandamálum en að leysa

Nýlega gaf Apple út macOS Catalina 10.15.4 viðbótaruppfærslu til að laga vandamál en svo virðist sem uppfærslan sé að valda fleiri vandamálum sem leiða til múrsteins á Mac vélum. Lestu þessa grein til að læra meira