Mikä on Traefik?
Traefik on moderni seitsemänkerroksinen käänteinen välityspalvelin ja kuormantasaaja, joka keskittyy ydinkonseptiin — Service Discovery First.
Suurin ero perinteisiin käänteisiin välityspalvelimiin (kuten Nginx) on se, että sinun ei tarvitse kirjoittaa manuaalisesti suurta määrää konfiguraatiotiedostoja; Traefik "tarkkailee" ajonaikaista ympäristöäsi ennakoivasti ja generoi automaattisesti reitityssäännöt.
"Service as configuration" -ominaisuuden ansiosta Traefik sopii erityisen hyvin näihin tilanteisiin:
- Docker / Docker Compose
- Kubernetes (Sisäänpääsyohjain)
- Mikropalveluiden arkkitehtuuri
- Verkkopalvelut pienille tiimeille tai itsenäisille kehittäjille
Yksinkertaisesti sanottuna, jos palvelusi on "dynaaminen", Traefik on paljon vähemmän vaivaton kuin perinteiset käänteiset agentit.
Vertailuarvo
taipumus
Haluan kiittää exoscale.ch VincentBernatia, joka anteliaasti tarjosi vertailuinfrastruktuurin.
Testasin sitä neljällä virtuaalikoneella, jotka oli konfiguroitu seuraavasti:
32 GB muistia 8 suorittimen ydintä 10GB puolijohdeasema Ubuntu 14.04 LTS 64-bittinen
Pystyttää
Virtuaalikonetta käytetään benchmarking-työkalun wrk käynnistämiseen Virtuaalikone Traefikille (v1.0.0-beta.416) / nginxille (v1.4.6) Kuka konfiguroi kahta virtuaalikonetta kahdelle taustapalvelimelle Go:ssa? Jokainen virtuaalikone on viritetty seuraavilla rajoituksilla:
Nginx
Alla on Nginx-konfiguraatiotiedoston /etc/nginx/nginx.conf käyttötapa:
Alla ovat käytetyt Nginxin virtuaalisen hostingin konfiguraatiotiedostot:
Traefik
Seuraavat ovat traefik.toml-tiedostot:
tulos whoami:
wrk -t20 -c1000 -d60s -H "Isäntä: test.traefik" --viive http://IP-whoami:80/bench Suoritan 1m testiä @ http://IP-whoami:80/bench 20 säiettä ja 1000 liitäntää Ketjun tilastot keskimäärin Stdev Max +/- Stdev Viive 70,28ms 134,72ms 1,91s 89,94% Req/Sec 2,92k 742,42 8,78k 68,80% Viiveen jakautuminen 50 % 10,63 ms 75 % 75,64 ms 90 % 205,65 ms 99 % 668,28 ms 3476705 pyyntöjä 1,00 min, 384,61MB lukua Socket-virheet: connect 0, read 0, write 0, timeout 103 Pyynnöt/sekunti: 57894.35 Siirto/sekunti: 6,40MB nginx:
wrk -t20 -c1000 -d60s -H "Isäntä: test.traefik" --viive http://IP-nginx:8001/bench Suoritan 1m testiä @ http://IP-nginx:8001/bench 20 säiettä ja 1000 liitäntää Ketjun tilastot keskimäärin Stdev Max +/- Stdev Viive 101,25 ms 180,09 ms 1,99 s 89,34 % Req/Sec 1,69k 567,69 9,39k 72,62 % Viiveen jakautuminen 50 % 15,46 ms 75% 129,11ms 90% 302,44ms 99% 846,59ms 2018427 pyyntöjä 1,00 m:llä, 298,36 MB lukua Socket-virheet: yhdistä 0, lue 0, kirjoita 0, aikakatkaisu 90 Pyynnöt/sek: 33591.67 Siirto/sekunti: 4,97MB Traefik
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latency http://IP-traefik:8000/bench 1 metrin testi @ http://IP-traefik:8000/bench 20 säiettä ja 1000 liitäntää Ketjun tilastot keskimäärin Stdev Max +/- Stdev Viive 91,72ms 150,43ms 2,00s 90,50% Req/Sec 1,43k 266,37 2,97k 69,77% Viiveen jakautuminen 50 % 19,74 ms 75% 121,98ms 90% 237,39ms 99% 687,49ms 1705073 pyyntöjä 1,00 m:llä, 188,63MB lukua Socket-virheet: yhdistä 0, luku 0, kirjoita 0, aikakatkaisu 7 Pyynnöt/sek: 28392.44 Siirto/sekunti: 3,14MB
johtopäätös Traefikin nopeus on selvästi hitaampi kuin Nginxin, mutta ero ei ole suuri: Traefik käsittelee 28 392 pyyntöä sekunnissa, kun taas Nginx käsittelee 33 591 pyyntöä sekunnissa, suorituskykysuhteella 85%. Nuorelle projektille se on varsin hyvä :)!
Muutamia kehityskohteita:
Käytä GO_REUSEPORT näyttöjä
Jokainen CPU-ydin ajaa erillistä palvelininstanssia GOMAXPROCS=1 (testit osoittavat, että Traefikissa on paljon enemmän kontekstinvaihtoa kuin nginx:ssä).
Alkuperäinen:Hyperlinkin kirjautuminen on näkyvissä. |