Installer Plesk på CentOS 7
Bruger du et andet system? Plesk er et proprietært webhost kontrolpanel, der giver brugerne mulighed for at administrere deres personlige og/eller klienters websteder, databaser
Docker Swarm forvandler dine individuelle servere til en klynge af computere, hvilket letter skalering, høj tilgængelighed og belastningsbalancering. Swarm load-balancer implementerer en round-robin load-balance-strategi, og dette kan forstyrre den korrekte funktion af (legacy) stateful-applikationer, som kræver en form for klæbrige sessioner for at tillade en høj tilgængelig opsætning med flere instanser. Docker Enterprise Edition understøtter Layer-7 sticky session, men i denne guide vil vi fokusere på den gratis (CE) version af Docker. For at implementere klæbrige sessioner bruger vi Traefik.
I denne vejledning vil vi bruge to Vultr-instanser med private IP-adresser 192.168.0.100 og 192.168.0.101, begge er Docker Swarm-managerknudepunkter (hvilket ikke er ideelt til produktion, men nok til denne tutorial).
Denne vejledning bruger jwilder/whoami
docker-billedet som demoapplikation. Denne simple container vil reagere på et REST-kald med navnet på den reagerende container, hvilket gør det meget nemt at teste, om de klæbrige sessioner virker. Dette billede bruges kun til demoformål og skal erstattes af dit eget programs billede. Den whoami-service
er konfigureret som følger:
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
Hvis vi ville efterfølgende curl
den whoami
REST endepunkt ved http://192.168.0.100/
, vi kan se den round-robin load-balancing af Docker Swarm på arbejde.
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
Det nytter ikke at teste dette med moderne browsere som Chrome eller Firefox, fordi de er designet til at holde forbindelser i live (åbne), og Docker Swarm load-balancer vil kun skifte til den anden container ved hver ny forbindelse. Hvis du vil teste dette med en browser, skal du vente mindst 30 sekunder på, at forbindelsen lukker, før du opdaterer igen.
Traefik understøtter indbygget Docker Swarm, det kan registrere og registrere eller afregistrere containere på farten, og det kommunikerer med din applikation via det interne overlejringsnetværk. Traefik har brug for nogle oplysninger om din ansøgning, før den kan begynde at behandle anmodninger om den. Disse oplysninger gives til Traefik ved at tilføje etiketter til din Swarm-tjeneste.
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
Listen nedenfor beskriver, hvad hver etiket betyder:
traefik.docker.network
: Docker-overlejringsnetværket, som Traefik vil kommunikere med din tjeneste over traefik.port
: Porten, som din tjeneste lytter til (dette er den internt eksponerede port, ikke den offentliggjorte port)traefik.frontend.rule
: PathPrefix:/
binder kontekstroden /
til denne tjeneste.traefik.backend.loadbalancer.stickiness
: Aktiverer klæbrige sessioner for denne tjenesteNu hvor den whoami-service
er blevet konfigureret med de nødvendige etiketter, kan vi tilføje Traefik-tjenesten til sværmen:
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
Denne kommando gør en hel del ting på én gang. Listen nedenfor vil forklare mere detaljeret:
--name traefik
: Vores nye Docker-tjeneste hedder traefik
-p8080:80
: Vi udgiver Traefiks port 80
til port 8080
(port 80
er allerede i brug af vores whoami-service
)-p9090:8080
: Vi udgiver Traefiks egen webgrænseflade til port 9090
--mount ...
: Vi monterer Docker Socket i containeren, så Traefik kan få adgang til værtens Docker runtime --global
: Vi ønsker Traefik-containere på hver managerknude af høje tilgængelighedsårsager --constraint 'node.role == manager'
: Vi ønsker kun, at Traefik skal køre på managerknudepunkter, fordi arbejdsknudepunkter ikke kan give Traefik den information, den har brug for. For eksempel docker service ls
virker en arbejderknude ikke, så Traefik ville ikke engang være i stand til at opdage, hvilke tjenester der kører--network whoaminet
: Forbinder Traefik til samme netværk som vores whoami-service
, ellers kan de ikke oprette forbindelse. Vi har tidligere bedt Traefik om at oprette forbindelse til vores tjeneste via dette netværk med traefik.docker.network
etikettentraefik
: Bed docker om at bruge det seneste Traefik docker-billede til denne tjeneste--docker --docker.swarmmode --docker.watch --web --loglevel=DEBUG
: Kommandolinjeargumenter sendt direkte til Traefik for at tillade det at køre i Docker swarm-tilstand ( --loglevel=DEBUG
er valgfrit her, men interessant under opsætningen og for denne tutorial)Alt, der er tilbage at gøre, er at åbne de nødvendige porte i CentOS-firewallen:
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --zone=public --add-port=9090/tcp --permanent
sudo firewall-cmd --reload
Så snart Traefik starter op, kan du se i loggene, at Traefik opdager de to whoami
containere. Den udsender også cookienavnet, som den vil bruge til at håndtere den klæbrige session:
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"
Hvis vi krøller til, http://192.168.0.100:8080
kan vi se, at en ny cookie _a49bc
er blevet sat:
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
Hvis vi ved efterfølgende opkald sender denne cookie til Traefik, vil vi altid blive videresendt til samme beholder:
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
Cookien indeholder intet andet end den interne (overlay), IP-adresse på den container, som Traefik skal sende til for at anmode om. Hvis du ændrer cookieværdien til, http://10.0.0.4:8000
vil anmodningen reelt blive videresendt til den anden beholder. Hvis cookien aldrig bliver sendt til Traefik igen, vil den klæbrige session ikke fungere, og anmodninger vil blive afbalanceret mellem applikationens containere og Traefik-beholderne.
Det er alt, der skal til for at konfigurere Layer 7 Sticky Sessions i Docker CE på CentOS 7.
Bruger du et andet system? Plesk er et proprietært webhost kontrolpanel, der giver brugerne mulighed for at administrere deres personlige og/eller klienters websteder, databaser
Squid er et populært, gratis Linux-program, der giver dig mulighed for at oprette en webproxy til videresendelse. I denne vejledning vil du se, hvordan du installerer Squid på CentOS for at gøre dig
Introduktion Lighttpd er en forgrening af Apache, der sigter mod at være meget mindre ressourcekrævende. Den er let, deraf navnet, og den er ret enkel at bruge. Installer
VULTR har for nylig foretaget ændringer i deres ende, og alt skulle nu fungere fint ud af boksen med NetworkManager aktiveret. Skulle du ønske at deaktivere
Icinga2 er et kraftfuldt overvågningssystem, og når det bruges i en master-klient-model, kan det erstatte behovet for NRPE-baserede overvågningstjek. Mester-klienten
Bruger du et andet system? Apache Cassandra er et gratis og open source NoSQL-databasestyringssystem, der er designet til at give skalerbarhed, høj
Bruger du et andet system? Microweber er en open source træk og slip CMS og online shop. Microweber-kildekoden er hostet på GitHub. Denne guide vil vise dig
Bruger du et andet system? Mattermost er et open source, selvhostet alternativ til Slack SAAS-meddelelsestjenesten. Med andre ord, med Mattermost er du ca
Hvad skal du bruge En Vultr VPS med mindst 1 GB RAM. SSH-adgang (med root/administrative rettigheder). Trin 1: Installation af BungeeCord Første ting først
Plesk-kontrolpanelet har en meget flot integration til Lets Encrypt. Lets Encrypt er en af de eneste SSL-udbydere, der udleverer certifikater komplet
Lets Encrypt er en certifikatmyndighed dedikeret til at levere SSL-certifikater gratis. cPanel har bygget en pæn integration, så du og din klient
Bruger du et andet system? Concrete5 er et open source CMS, som tilbyder mange karakteristiske og nyttige funktioner til at hjælpe redaktører med at producere indhold nemt og
Bruger du et andet system? Review Board er et gratis og open source-værktøj til gennemgang af kildekode, dokumentation, billeder og mange flere. Det er webbaseret software
I denne vejledning lærer du, hvordan du opsætter HTTP-godkendelse for en Nginx-webserver, der kører på CentOS 7. Krav For at komme i gang skal du bruge
YOURLS (Your Own URL Shortener) er en open source URL-forkortelse og dataanalyseapplikation. I denne artikel vil vi dække installationsprocessen
Bruger du et andet system? Introduktion ArangoDB er en open source NoSQL-database med en fleksibel datamodel for dokumenter, grafer og nøgleværdier. det er
Introduktion /etc/-biblioteket spiller en afgørende rolle i den måde et Linux-system fungerer på. Årsagen til dette er, at næsten alle systemkonfigurationer
Mange systemadministratorer administrerer store mængder servere. Når filer skal tilgås på tværs af forskellige servere, logges ind på hver enkelt individuelt ca
Denne vejledning vil dække processen med at installere en Half Life 2-spilserver på CentOS 6 System. Trin 1: Installation af forudsætninger For at opsætte ou
Laravel GitScrum eller GitScrum er et open source-produktivitetsværktøj designet til at hjælpe udviklingsteams med at implementere Scrum-metoden på en måde, der ligner t.
Kunstig intelligens er ikke i fremtiden, det er her lige i nuet I denne blog Læs, hvordan kunstig intelligens-applikationer har påvirket forskellige sektorer.
Er du også et offer for DDOS-angreb og forvirret over forebyggelsesmetoderne? Læs denne artikel for at løse dine spørgsmål.
Du har måske hørt, at hackere tjener mange penge, men har du nogensinde spekuleret på, hvordan tjener de den slags penge? lad os diskutere.
Vil du se revolutionerende opfindelser fra Google, og hvordan disse opfindelser ændrede livet for ethvert menneske i dag? Læs derefter til bloggen for at se opfindelser fra Google.
Konceptet med selvkørende biler til at køre på vejene ved hjælp af kunstig intelligens er en drøm, vi har haft i et stykke tid nu. Men på trods af flere løfter er de ingen steder at se. Læs denne blog for at lære mere...
Efterhånden som videnskaben udvikler sig i et hurtigt tempo og overtager en stor del af vores indsats, stiger risikoen for at udsætte os selv for en uforklarlig Singularitet. Læs, hvad singularitet kunne betyde for os.
Opbevaringsmetoderne for dataene har været under udvikling, kan være siden fødslen af dataene. Denne blog dækker udviklingen af datalagring på basis af en infografik.
Læs bloggen for at kende forskellige lag i Big Data-arkitekturen og deres funktionaliteter på den enkleste måde.
I denne digitalt drevne verden er smarte hjemmeenheder blevet en afgørende del af livet. Her er et par fantastiske fordele ved smarte hjemmeenheder om, hvordan de gør vores liv værd at leve og enklere.
For nylig udgav Apple macOS Catalina 10.15.4 en supplerende opdatering for at løse problemer, men det ser ud til, at opdateringen forårsager flere problemer, hvilket fører til mursten af mac-maskiner. Læs denne artikel for at lære mere