Kas ir Traefiks?
Traefik ir mūsdienīgs septiņu slāņu reversais starpniekserveris un slodzes balansētājs, kas balstīts uz pamatkoncepciju — Service Discovery First.
Lielākā atšķirība no tradicionālajiem reversajiem starpniekserveriem (piemēram, Nginx) ir tā, ka jums nav manuāli jāraksta liels skaits konfigurācijas failu; Traefik proaktīvi "novēro" jūsu izpildes vidi un automātiski ģenerē maršrutēšanas noteikumus.
Pateicoties "service as configuration" funkcijai, Traefik ir īpaši piemērots šādiem scenārijiem:
- Docker / Docker Compose
- Kubernetes (Ingress Controller)
- Mikroservisu arhitektūra
- Tiešsaistes pakalpojumi mazām komandām vai neatkarīgiem izstrādātājiem
Vienkārši sakot, ja jūsu pakalpojums ir "dinamisks", Traefik ir daudz mazāk bezrūpīgs nekā tradicionālie reversie aģenti.
Etalons
Izvietojuma
Vēlos pateikties exoscale.ch VincentBernat, kurš dāsni nodrošināja nepieciešamo infrastruktūru etalonu novērtēšanai.
Es to pārbaudīju, izmantojot 4 virtuālās mašīnas, konfigurētas šādi:
32 GB atmiņa 8 CPU kodoli 10GB cietvielu disks Ubuntu 14.04 LTS 64-bit
Iestatīt
Virtuālā mašīna tiek izmantota, lai palaistu benchmarking rīku wrk Virtuālā mašīna Traefik (v1.0.0-beta.416) / nginx (v1.4.6) Kas konfigurē divas virtuālās mašīnas diviem aizmugures serveriem Go vidē? Katra virtuālā mašīna ir pielāgota, izmantojot šādus ierobežojumus:
Nginx
Zemāk ir lietošanas metode Nginx konfigurācijas failam /etc/nginx/nginx.conf:
Zemāk ir izmantotie Nginx virtuālās mitināšanas konfigurācijas faili:
Traefiks
Tālāk ir faili, kas tiek izmantoti traefik.toml:
Rezultātu Whoami:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latentums http://IP-whoami:80/bench Veicu 1m testu @ http://IP-whoami:80/bench 20 pavedieni un 1000 savienojumi Thread Stats Avg Stdev Max +/- Stdev Latentums 70,28ms 134,72ms 1,91s 89,94% Pieprasījumi/sec 2.92k 742.42 8.78k 68.80% Latentuma sadalījums 50% 10,63ms 75% 75,64ms 90% 205,65ms 99% 668,28ms 3476705 pieprasījumi 1,00 m, 384,61MB izlasē Ligzdas kļūdas: savienot 0, nolasīt 0, ierakstīt 0, laika limits 103 Pieprasījumi/sec: 57894.35 Pārsūtīšana sekundē: 6.40MB Nginx:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latentums http://IP-nginx:8001/bench Veicu 1m testu @ http://IP-nginx:8001/bench 20 pavedieni un 1000 savienojumi Thread Stats Avg Stdev Max +/- Stdev Latentums 101,25ms 180,09ms 1,99s 89,34% Pieprasījums/sec: 1,69 tūkstoši 567,69 9,39 tūkstoši 72,62% Latentuma sadalījums 50% 15,46ms 75% 129,11 ms 90% 302,44ms 99% 846,59ms 2018427 pieprasījumi 1.00m, 298.36MB lasāmi Ligzdas kļūdas: savienot 0, nolasīt 0, ierakstīt 0, noildze 90 Pieprasījumi/sec: 33591.67 Pārsūtīšana/sec: 4,97MB Traefiks
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latentums http://IP-traefik:8000/bench Veicu 1m testu @ http://IP-traefik:8000/bench 20 pavedieni un 1000 savienojumi Thread Stats Avg Stdev Max +/- Stdev Latentums 91,72ms 150,43ms 2,00s 90,50% Pieprasījumi sekundē 1.43k 266.37 2.97k 69.77% Latentuma sadalījums 50% 19,74ms 75% 121,98ms 90% 237,39ms 99% 687,49ms 1705073 pieprasījumi 1,00 m, 188,63 MB izlasē Ligzdas kļūdas: pieslēgt 0, nolasīt 0, rakstīt 0, laika limits 7 Pieprasījumi/sec: 28392.44 Pārsūtīšana sekundē: 3,14MB
Secinājums Traefik ātrums ir acīmredzami lēnāks nekā Nginx, bet atšķirība nav liela: Traefik apstrādā 28 392 pieprasījumus sekundē, kamēr Nginx apstrādā 33 591 pieprasījumu sekundē, ar veiktspējas attiecību 85%. Jaunam projektam tas ir diezgan labs :)!
Dažas uzlabojumu jomas:
Izmantojiet GO_REUSEPORT monitorus
Katrs CPU kodols darbojas ar atsevišķu servera instanci GOMAXPROCS=1 (veiktspējas testi rāda, ka Traefik ir daudz vairāk konteksta pārslēgšanas nekā nginx).
Sākotnējā:Hipersaites pieteikšanās ir redzama. |