Sticky sesija ar Docker Swarm (CE) uz Debian 9

Ievads

Docker Swarm pārvērš jūsu individuālos serverus par datoru kopu; atvieglo mērogošanu, augstu pieejamību un slodzes līdzsvarošanu. Swarm slodzes līdzsvarotājs ievieš visaptverošu slodzes līdzsvarošanas stratēģiju, un tas var traucēt (mantoto) statusu lietojumprogrammu pareizai darbībai, kurām ir nepieciešamas zināmas fiksētas sesijas, lai nodrošinātu augstu pieejamo iestatīšanu ar vairākiem gadījumiem. Docker Enterprise Edition atbalsta Layer-7 lipīgo sesiju, taču šajā rokasgrāmatā mēs koncentrēsimies uz Docker bezmaksas (CE) versiju. Lai ieviestu lipīgās sesijas, mēs izmantosim Traefik.

Priekšnoteikumi

  • Vismaz divi tikko izvietoti un atjaunināti Debian 9 gadījumi vienā apakštīklā ar iespējotu privāto tīklu
  • Šajos gadījumos instalēts Docker CE
  • Gadījumiem ir jābūt viena un tā paša spieta daļai un jāspēj sazināties vienam ar otru, izmantojot privāto tīklu
  • Priekšzināšanas par Docker un Docker Swarm
  • Lietotājs, kas nav root lietotājs ar sudotiesībām (neobligāts, taču ļoti ieteicams neizmantot root lietotāju)

Šajā apmācībā mēs izmantosim divus Vultr gadījumus ar privātām IP adresēm 192.168.0.100un 192.168.0.101. Abi no tiem ir Docker Swarm menedžeru mezgli (kas nav ideāli piemērots ražošanai, taču ir pietiekami šai apmācībai).

Kas es esmu

Šajā apmācībā jwilder/whoamidocker attēls tiek izmantots kā demonstrācijas lietojumprogramma. Šis vienkāršais konteiners atbildēs uz REST zvanu ar atbildīgā konteinera nosaukumu, padarot to ļoti viegli pārbaudīt, vai lipīgās sesijas darbojas. Šis attēls acīmredzami tiek izmantots tikai demonstrācijas nolūkos, un tas ir jāaizstāj ar jūsu lietojumprogrammas attēlu.

Whoami pakalpojums ir konfigurēts šādi:

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

Ja pēc tam mēs curlizmantojam whoami REST galapunktu http://192.168.0.100/, mēs varam redzēt, ka darbojas Docker Swarm slodzes līdzsvarošana:

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

Nav jēgas to pārbaudīt ar modernām pārlūkprogrammām, piemēram, Chrome vai Firefox, jo tie ir paredzēti, lai uzturētu savienojumus, un Docker Swarm slodzes balansētājs pārslēgsies uz citu konteineru tikai pēc katra jauna savienojuma. Ja vēlaties to pārbaudīt pārlūkprogrammā, pirms atkārtotas atsvaidzināšanas ir jāgaida vismaz 30 sekundes, līdz savienojums tiks aizvērts.

Traefik iestatīšana

Traefik sākotnēji atbalsta Docker Swarm, tas var atklāt un reģistrēt vai atcelt konteinerus lidojumā, un tas sazinās ar jūsu lietojumprogrammu iekšējā pārklājuma tīklā. Traefik ir nepieciešama informācija par jūsu lietojumprogrammu, lai tas varētu sākt apstrādāt pieprasījumus. Šī informācija tiek nodrošināta Traefik, pievienojot etiķetes jūsu Swarm pakalpojumam:

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

Šajā sarakstā ir aprakstīts katras etiķetes nozīme.

  • traefik.docker.network : Docker pārklājuma tīkls, kurā Traefik sazināsies ar jūsu pakalpojumu
  • traefik.port : ports, kurā klausās jūsu pakalpojums (šis ir iekšēji atklātais ports, nevis publicētais ports)
  • traefik.frontend.rule: PathPrefix:/ saista konteksta sakni " /" ar šo pakalpojumu
  • traefik.backend.loadbalancer.stickiness : šim pakalpojumam iespējo fiksētās sesijas

Tagad, kad whoami-serviceir konfigurēts ar nepieciešamajām etiķetēm, mēs varam pievienot Traefik pakalpojumu baram:

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

Šī komanda vienlaikus veic diezgan daudz lietu, kā parādīts šajā sarakstā:

  • --name traefik : Mūsu jaunā Docker pakalpojuma nosaukums ir Traefik
  • -p8080:80: Mēs publicējam Traefik portu 80portu, 8080jo portu 80jau izmanto mūsu whoami-serviss
  • -p9090:8080 : Mēs publicējam paša Traefik tīmekļa saskarni portam 9090
  • --mount ... : mēs uzstādām Docker Socket konteinerā, lai Traefik varētu piekļūt resursdatora Docker izpildlaikam
  • --global : Mēs vēlamies Traefik konteinerus katrā pārvaldnieka mezglā augstas pieejamības iemeslu dēļ
  • --constraint 'node.role == manager': mēs vēlamies, lai Traefik darbotos tikai pārvaldnieka mezglos, jo darbinieku mezgli nevar nodrošināt Traefik tai nepieciešamo informāciju. Piemēram, docker service lsdarbinieka mezglā nedarbojas, tāpēc Traefik pat nevarētu atklāt, kādi pakalpojumi darbojas
  • --network whoaminet: pievienojiet Traefik tam pašam tīklam kā mūsu whoami-service, pretējā gadījumā tas nevar izveidot savienojumu ar to. Mēs iepriekš teicām Traefik izveidot savienojumu ar mūsu pakalpojumu, izmantojot šo tīklu ar traefik.docker.networketiķeti
  • traefik : Pastāstiet dokerim šim pakalpojumam izmantot jaunāko Traefik docker attēlu
  • --docker --docker.swarmmode --docker.watch --web --loglevel=DEBUG: Komandrindas argumenti tiek tieši nosūtīti Traefik, lai tas varētu darboties Docker spieta režīmā. DEBUGšeit ir neobligāts, taču interesants iestatīšanas laikā un šai apmācībai

Viss, kas jādara, ir atvērt nepieciešamos portus Debian ugunsmūrī:

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

Kā tas strādā

Tiklīdz Traefik sāk darboties, žurnālos var redzēt, ka Traefik atklāj abus whoamikonteinerus. Tas arī izvada sīkfaila nosaukumu, ko tas izmantos lipīgās sesijas apstrādei:

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"

Ja pievēršamies, http://192.168.0.100:8080mēs redzam, ka _a49bcir iestatīts jauns sīkfails :

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

Ja turpmākajos zvanos mēs nosūtīsim šo sīkfailu Traefik, mēs vienmēr tiksim pārsūtīti uz to pašu konteineru:

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

Sīkdatnē ir ietverta tikai konteinera iekšējā IP adrese, uz kuru Traefik ir jānosūta pieprasījums. Ja maināt uz sīkfaila vērtību uz http://10.0.0.4:8000, pieprasījums faktiski tiks pārsūtīts uz citu konteineru. Ja sīkfails nekad netiktu atkārtoti nosūtīts uz Traefik, lipīgā sesija nedarbosies un pieprasījumi tiks līdzsvaroti starp lietojumprogrammas konteineriem un Traefik konteineriem.

Tas ir viss, kas nepieciešams, lai iestatītu Layer 7 Sticky Sessions programmā Docker CE uz Debian 9.


Lūk, kā pārbaudīt Hyper-V konteinerus sistēmā Windows 10 Insider

Lūk, kā pārbaudīt Hyper-V konteinerus sistēmā Windows 10 Insider

Microsoft jaunā emuāra ziņojumā ir paskaidrojusi, kā Windows Insiders var pārbaudīt Hyper-V konteinerus operētājsistēmā Windows 10 — jauns virtualizācijas risinājums, kas ļauj lietojumprogrammām darboties, neietekmējot pārējo operētājsistēmu.

Kā instalēt Harbor operētājsistēmā CentOS 7

Kā instalēt Harbor operētājsistēmā CentOS 7

Harbour ir atvērtā pirmkoda uzņēmuma klases reģistra serveris, kas glabā un izplata Docker attēlus. Harbour paplašina atvērtā koda Docker Distribution b

Instalējiet Rancher OS, izmantojot iPXE

Instalējiet Rancher OS, izmantojot iPXE

Rancher OS ir ļoti viegla Linux izplatīšana, kas veidota, izmantojot Docker. Pati OS sver aptuveni 20 MB. Šī apmācība palīdzēs jums sākt darbu

Operētājsistēmā CoreOS iestatiet savu Docker reģistru

Operētājsistēmā CoreOS iestatiet savu Docker reģistru

Mēs visi zinām un mīlam Docker — platformu lietojumprogrammu konteineru izveidei, pārvaldībai un izplatīšanai vairākās iekārtās. Docker Inc sniedz pakalpojumu t

Docker-compose instalēšana operētājsistēmā CoreOS

Docker-compose instalēšana operētājsistēmā CoreOS

Šajā rakstā ir paskaidrots, kā instalēt docker-compose operētājsistēmā CoreOS. Operētājsistēmā CoreOS mape /usr/ ir nemainīga, tāpēc standarta /usr/local/bin ceļš nav pieejams.

Instalējiet Rancher operētājsistēmā CentOS 7

Instalējiet Rancher operētājsistēmā CentOS 7

Vai izmantojat citu sistēmu? Ievads Rancher ir atvērtā pirmkoda platforma konteineru darbināšanai un privāta konteineru pakalpojuma izveidei. Rancher ir bāze

Instalējiet Docker CE uz Ubuntu 18.04

Instalējiet Docker CE uz Ubuntu 18.04

Ievads Docker ir lietojumprogramma, kas ļauj izvietot programmas, kas tiek darbinātas kā konteineri. Tas tika uzrakstīts populārajā Go programmēšanas valodā

Izveidojiet Docker Swarm operētājsistēmā Alpine Linux 3.9.0

Izveidojiet Docker Swarm operētājsistēmā Alpine Linux 3.9.0

Ievads Šajā rokasgrāmatā ir parādīts, kā izveidot un konfigurēt Docker spietu, izmantojot vairākus Alpine Linux 3.9.0 serverus un Portainer. Lūdzu, ņemiet vērā, ka

Izvietojiet PHP lietojumprogrammu, izmantojot Docker-compose

Izvietojiet PHP lietojumprogrammu, izmantojot Docker-compose

PHP lietojumprogrammas parasti veido tīmekļa serveris, relāciju datu bāzes sistēma un pats valodas tulks. Šajā apmācībā mēs izmantosim iespēju

Slodzes līdzsvars ar Docker

Slodzes līdzsvars ar Docker

Palaižot tīmekļa lietojumprogrammu, jūs parasti vēlaties maksimāli izmantot savus resursus, nepārvēršot programmatūru, lai izmantotu vairākpavedienu o

Izvietojiet Node.js lietojumprogrammu, izmantojot Docker

Izvietojiet Node.js lietojumprogrammu, izmantojot Docker

Šajā rakstā tiks parādīts, kā Docker konteinerā izvietot savu Node lietojumprogrammu. Piezīme. Šajā apmācībā tiek pieņemts, ka esat instalējis un lasījis Docker

Docker CE instalēšana operētājsistēmā CentOS 7

Docker CE instalēšana operētājsistēmā CentOS 7

Docker konteinera tehnoloģija ļauj palaist lietojumprogrammas noteiktā un izolētā vidē. Docker Community Edition (CE) ir jaunais nosaukums fre

Izvietojiet Kubernetes ar Kubeadm operētājsistēmā CentOS 7

Izvietojiet Kubernetes ar Kubeadm operētājsistēmā CentOS 7

Pārskats Šis raksts ir paredzēts, lai palīdzētu jums ātri izveidot un palaist Kubernetes kopu, izmantojot kubeadm. Šajā rokasgrāmatā tiks izvietoti divi serveri

Docker instalēšana operētājsistēmā CentOS 7

Docker instalēšana operētājsistēmā CentOS 7

Vai izmantojat citu sistēmu? Docker ir lietojumprogramma, kas ļauj izvietot programmatūru virtuālos konteineros. Tas bija rakstīts programmā Go

Docker CE instalēšana operētājsistēmā Debian 9

Docker CE instalēšana operētājsistēmā Debian 9

Vai izmantojat citu sistēmu? Ievads Docker ir lietojumprogramma, kas ļauj izvietot programmatūru virtuālos konteineros. Tas bija rakstīts G

Sāciet darbu ar SQL Server 2017 (MS-SQL) sistēmā CentOS 7 ar Docker

Sāciet darbu ar SQL Server 2017 (MS-SQL) sistēmā CentOS 7 ar Docker

Priekšnosacījumi Docker engine 1.8+. Vismaz 4 GB diska vietas. Vismaz 4 GB RAM. 1. darbība. Docker instalēšana Lai instalētu SQL-Server, Docker mus

Sticky sesija ar Docker Swarm (CE) uz Debian 9

Sticky sesija ar Docker Swarm (CE) uz Debian 9

Vai izmantojat citu sistēmu? Ievads Docker Swarm pārvērš jūsu individuālos serverus par datoru kopu; mērogošanas atvieglošana, augsta pieejamība un

Divi Docker grafiskās pārvaldības rīki: DockerUI un Shipyard

Divi Docker grafiskās pārvaldības rīki: DockerUI un Shipyard

Izmantojot lietojumprogrammu Vultr Docker, varat viegli izvietot Docker savā Vultr servera instancē. Tikmēr jūs varat atvieglot Docker pārvaldības uzdevumu

Instalējiet Rancher Server operētājsistēmā RancherOS

Instalējiet Rancher Server operētājsistēmā RancherOS

Pārskats RancherOS ir neticami viegla operētājsistēma (tikai aptuveni 60 MB), kas izmanto sistēmas Docker dēmonu kā PID 0 sistēmas pakalpojumu darbināšanai.

Darba sākšana ar Kubernetes operētājsistēmā CentOS 7

Darba sākšana ar Kubernetes operētājsistēmā CentOS 7

Kubernetes ir Google izstrādāta atvērtā pirmkoda platforma konteineru lietojumprogrammu pārvaldībai serveru klasterī. Tas balstās uz desmitgadi un

Mašīnu pieaugums: AI reālās pasaules lietojumi

Mašīnu pieaugums: AI reālās pasaules lietojumi

Mākslīgais intelekts nav nākotnē, tas ir šeit, tagadnē. Šajā emuārā lasiet, kā mākslīgā intelekta lietojumprogrammas ir ietekmējušas dažādas nozares.

DDOS uzbrukumi: īss pārskats

DDOS uzbrukumi: īss pārskats

Vai arī jūs esat DDOS uzbrukumu upuris un esat neizpratnē par profilakses metodēm? Izlasiet šo rakstu, lai atrisinātu savus jautājumus.

Vai esat kādreiz domājis, kā hakeri pelna naudu?

Vai esat kādreiz domājis, kā hakeri pelna naudu?

Iespējams, esat dzirdējuši, ka hakeri pelna daudz naudas, bet vai esat kādreiz domājuši, kā viņi nopelna šādu naudu? pārrunāsim.

Google revolucionāri izgudrojumi, kas atvieglos jūsu dzīvi.

Google revolucionāri izgudrojumi, kas atvieglos jūsu dzīvi.

Vai vēlaties redzēt revolucionārus Google izgudrojumus un to, kā šie izgudrojumi mainīja katra cilvēka dzīvi mūsdienās? Pēc tam lasiet emuārā, lai redzētu Google izgudrojumus.

Piektdiena: kas notika ar AI vadītām automašīnām?

Piektdiena: kas notika ar AI vadītām automašīnām?

Pašpiedziņas automobiļu koncepcija izbraukt uz ceļiem ar mākslīgā intelekta palīdzību ir mūsu sapnis jau kādu laiku. Bet, neskatoties uz vairākiem solījumiem, tie nekur nav redzami. Lasiet šo emuāru, lai uzzinātu vairāk…

Tehnoloģiskā singularitāte: cilvēces civilizācijas tāla nākotne?

Tehnoloģiskā singularitāte: cilvēces civilizācijas tāla nākotne?

Zinātnei strauji attīstoties, pārņemot lielu daļu mūsu pūļu, palielinās arī risks pakļaut sevi neizskaidrojamai singularitātei. Izlasiet, ko singularitāte varētu nozīmēt mums.

Datu glabāšanas evolūcija – infografika

Datu glabāšanas evolūcija – infografika

Datu uzglabāšanas metodes ir attīstījušās kopš datu dzimšanas. Šajā emuārā ir aprakstīta datu uzglabāšanas attīstība, pamatojoties uz infografiku.

Lielo datu atsauces arhitektūras slāņu funkcijas

Lielo datu atsauces arhitektūras slāņu funkcijas

Lasiet emuāru, lai vienkāršākā veidā uzzinātu dažādus lielo datu arhitektūras slāņus un to funkcijas.

6 brīnišķīgas priekšrocības, ko sniedz viedo mājas ierīču izmantošana mūsu dzīvē

6 brīnišķīgas priekšrocības, ko sniedz viedo mājas ierīču izmantošana mūsu dzīvē

Šajā digitālajā pasaulē viedās mājas ierīces ir kļuvušas par būtisku dzīves sastāvdaļu. Šeit ir daži pārsteidzoši viedo mājas ierīču ieguvumi, lai padarītu mūsu dzīvi dzīves vērtu un vienkāršāku.

MacOS Catalina 10.15.4 papildinājuma atjauninājums rada vairāk problēmu nekā to risināšana

MacOS Catalina 10.15.4 papildinājuma atjauninājums rada vairāk problēmu nekā to risināšana

Nesen Apple izlaida macOS Catalina 10.15.4 papildinājuma atjauninājumu, lai novērstu problēmas, taču šķiet, ka atjauninājums rada vairāk problēmu, kas izraisa Mac datoru bloķēšanu. Izlasiet šo rakstu, lai uzzinātu vairāk