Wat is Traefik?
Traefik is een moderne zevenlaagse reverse proxy en load balancer, gecentreerd rond een kernconcept — Service Discovery First.
Het grootste verschil met traditionele reverse proxies (zoals Nginx) is dat je niet handmatig een groot aantal configuratiebestanden hoeft te schrijven; Traefik "observeert" proactief je runtime-omgeving en genereert automatisch routingregels.
Vanwege de functie "service as configuration" is Traefik bijzonder geschikt voor deze scenario's:
- Docker / Docker Compose
- Kubernetes (Ingress Controller)
- Microservicesarchitectuur
- Online diensten voor kleine teams of onafhankelijke ontwikkelaars
Simpel gezegd, als uw dienst "dynamisch" is, is Traefik veel minder probleemloos dan traditionele omgekeerde agenten.
Benchmark
aanleg
Ik wil exoscale.ch VincentBernat bedanken, die gul de infrastructuur leverde die nodig was voor benchmarking.
Ik heb het getest met 4 virtuele machines, geconfigureerd als volgt:
32 GB geheugen 8 CPU-kernen 10GB solid-state drive Ubuntu 14.04 LTS 64-bit
Oprichten
Een virtuele machine wordt gebruikt om de benchmarktool wrk te starten Een virtuele machine voor Traefik (v1.0.0-beta.416) / nginx (v1.4.6) Wie configureert twee virtuele machines voor twee backend-servers in Go? Elke virtuele machine is afgestemd met de volgende beperkingen:
Nginx
Hieronder staat de gebruiksmethode voor het Nginx-configuratiebestand /etc/nginx/nginx.conf:
Hieronder staan de gebruikte Nginx virtuele hostingconfiguratiebestanden:
Traefik
De volgende bestanden zijn die voor traefik.toml worden gebruikt:
resultaat Whoami:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latentie http://IP-whoami:80/bench Ik doe 1m test @ http://IP-whoami:80/bench 20 threads en 1000 verbindingen Thread Stats Gemiddeld Stdev Max +/- Stdev Latentie 70,28 ms 134,72 ms 1,91 s 89,94% Vereiste/sec 2,92k 742,42 8,78k 68,80% Latentieverdeling 50% 10,63ms 75% 75,64ms 90% 205,65ms 99% 668,28ms 3476705 verzoeken in 1,00 miljoen, 384,61MB leescapaciteit Socketfouten: verbinding 0, lees 0, schrijf 0, timeout 103 Verzoeken/sec: 57894.35 Overdracht/sec: 6,40MB Nginx:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latentie http://IP-nginx:8001/bench Ik doe 1 meter test @ http://IP-nginx:8001/bench 20 threads en 1000 verbindingen Thread Stats Gemiddeld Stdev Max +/- Stdev Latentie 101,25ms 180,09ms 1,99s 89,34% Vereiste/sec 1,69k 567,69 9,39k 72,62% Latentieverdeling 50% 15,46ms 75% 129,11ms 90% 302,44ms 99% 846,59ms 2018427 verzoeken in 1,00 miljoen, 298,36MB leesvermogen Socketfouten: verbinden 0, lezen 0, schrijven 0, timeout 90 Verzoeken/sec: 33591.67 Overdracht/sec: 4,97MB Traefik
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latentie http://IP-traefik:8000/bench 1m test uitvoeren @ http://IP-traefik:8000/bench 20 threads en 1000 verbindingen Thread Stats Gemiddeld Stdev Max +/- Stdev Latentie 91,72ms 150,43ms 2,00s 90,50% Vereiste/sec 1,43k 266,37 2,97k 69,77% Latentieverdeling 50% 19,74ms 75% 121,98ms 90% 237,39ms 99% 687,49ms 1705073 verzoeken in 1,00 miljoen, 188,63MB gelezen Socketfouten: verbinding 0, lees 0, schrijf 0, timeout 7 Verzoeken/sec: 28392.44 Overdracht/sec: 3,14MB
conclusie Traefiks snelheid is duidelijk langzamer dan die van Nginx, maar het verschil is niet groot: Traefik verwerkt 28.392 verzoeken per seconde, terwijl Nginx 33.591 verzoeken per seconde verwerkt, met een prestatieverhouding van 85%. Voor een jong project is dat behoorlijk goed :)!
Enkele verbeterpunten:
Gebruik GO_REUSEPORT monitoren
Elke CPU-kern draait een aparte serverinstantie GOMAXPROCS=1 (benchmarks tonen aan dat Traefik veel meer contextwisseling heeft dan nginx).
Origineel:De hyperlink-login is zichtbaar. |