Sticky Session With Docker Swarm (CE) á Debian 9
Að nota annað kerfi? Inngangur Docker Swarm breytir einstökum netþjónum þínum í hóp af tölvum; auðvelda mælikvarða, mikið aðgengi og
Docker Swarm breytir einstökum netþjónum þínum í hóp af tölvum; 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ða lota til að leyfa uppsetningu 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.
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 þeir Docker Swarm stjórnandahnútar (sem er ekki tilvalið fyrir framleiðslu en nóg fyrir þessa kennslu).
Þessi kennsla notar jwilder/whoami
Docker 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 augljóslega aðeins notuð í kynningarskyni og þarf að skipta út fyrir myndina þíns eigin forrits.
Whoami-þjónustan er 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 iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
Ef við í kjölfarið curl
whoami REST endapunktinn á http://192.168.0.100/
, getum við séð álagsjafnvæ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ð þýðir ekkert 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 á lífi 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.
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
Eftirfarandi listi lýsir hvað hver 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ónustutraefik.backend.loadbalancer.stickiness
: Virkjar klístraðar lotur fyrir þessa þjónustuNú þegar whoami-service
bú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, eins og sýnt er á eftirfarandi lista:
--name traefik
: Nýja Docker þjónustan okkar heitir Traefik -p8080:80
: Við birtum Traefik's port 80
to port 8080
vegna þess að port 80
er þegar í notkun hjá whoami-þjónustunni okkar-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
: Tengdu Traefik við sama net og okkar whoami-service
, annars getur það ekki tengst því. Við sögðum Traefik áður að tengjast þjónustu okkar í gegnum þetta net með traefik.docker.network
merkimiðanumtraefik
: 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. DEBUG
er valfrjálst hér, en áhugavert við uppsetningu og fyrir þessa kennsluAllt sem er eftir að gera er að opna nauðsynlegar gáttir í Debian eldveggnum:
sudo iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT
sudo iptables -I INPUT 1 -p tcp --dport 9090 -j ACCEPT
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:8080
getum við séð að ný kex, _a49bc
, hefur verið stillt:
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 IP tölu gámsins sem Traefik ætti að senda til að biðja um. Ef þú breytir í vafrakökugildi í http://10.0.0.4:8000
, þá yrði beiðnin í raun áframsend til hins ílátsins. Ef kexið ætti aldrei að vera sent aftur til Traefik, þá virkar klístur sessan ekki 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 á Debian 9.
Gervigreind er ekki í framtíðinni, hún er hér í nútímanum Í þessu bloggi Lestu hvernig gervigreindarforrit hafa haft áhrif á ýmsa geira.
Ertu líka fórnarlamb DDOS árása og ruglaður með forvarnaraðferðirnar? Lestu þessa grein til að leysa spurningar þínar.
Þú 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.
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.
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…
Þ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.
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.
Lestu bloggið til að þekkja mismunandi lög í Big Data Architecture og virkni þeirra á einfaldasta hátt.
Í þ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.
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