Kas yra Traefikas?
Traefik yra modernus septynių sluoksnių atvirkštinis proxy ir apkrovos balansavimo įrenginys, pagrįstas pagrindine koncepcija – Paslaugų atradimas pirmiausia.
Didžiausias skirtumas nuo tradicinių atvirkštinių proxy (pvz., Nginx) yra tas, kad nereikia rankiniu būdu rašyti daug konfigūracijos failų; Traefik proaktyviai "stebi" jūsų vykdymo aplinką ir automatiškai generuoja maršrutizavimo taisykles.
Dėl "service as configuration" funkcijos Traefik ypač tinka šioms situacijoms:
- Docker / Docker Compose
- Kubernetes (Ingress Controller)
- Mikroservisų architektūra
- Internetinės paslaugos mažoms komandoms arba nepriklausomiems kūrėjams
Paprasčiau tariant, jei jūsų paslauga yra "dinaminė", Traefik yra daug mažiau varginanti nei tradiciniai atvirkštiniai agentai.
Etalonas
Disponavimo
Noriu padėkoti exoscale.ch VincentBernat, kuris dosniai suteikė reikiamą infrastruktūrą palyginimui.
Išbandžiau naudodamas 4 virtualias mašinas, sukonfigūruotas taip:
32 GB atminties 8 CPU branduoliai 10GB kietojo kūno diskas Ubuntu 14.04 LTS 64 bitų
Steigti
Virtuali mašina naudojama testavimo įrankiui wrk paleisti Virtuali mašina Traefik (v1.0.0-beta.416) / nginx (v1.4.6) Kas konfigūruoja dvi virtualias mašinas dviem backend serveriams Go programoje? Kiekviena virtuali mašina buvo pritaikyta taikant šiuos apribojimus:
Nginx
Žemiau pateikiamas Nginx konfigūracijos failo /etc/nginx/nginx.conf naudojimo metodas:
Žemiau pateikiami naudojami Nginx virtualaus talpinimo konfigūracijos failai:
Traefik
Toliau pateikiami failai, naudojami traefik.toml:
Rezultatus Whoami:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --delsos http://IP-whoami:80/bench Vykdžiau 1 m testą @ http://IP-whoami:80/bench 20 gijų ir 1000 jungčių Thread Stats Avg Stdev Max +/- Stdev Vėlavimas 70,28 ms 134,72 ms 1,91 s 89,94% Reikalavimai/sek. 2.92k 742.42 8.78k 68.80% Delsos pasiskirstymas 50% 10,63 ms 75% 75,64ms 90% 205,65ms 99% 668,28ms 3476705 užklausų 1,00 m, 384,61MB skaitė Lizdo klaidos: prijungti 0, skaityti 0, rašyti 0, laiko limitas 103 Prašymai/sekcija: 57894.35 Perdavimo per sekundę: 6,40MB Nginx:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --delsos http://IP-nginx:8001/bench Atlieku 1 m testą @ http://IP-nginx:8001/bench 20 gijų ir 1000 jungčių Thread Stats Avg Stdev Max +/- Stdev Delsimas 101,25ms 180,09ms 1,99s 89,34% Reikalavimai per sekundę: 1,69 tūkst. 567,69 9,39 tūkst. 72,62% Delsos pasiskirstymas 50 % 15,46 ms 75% 129,11 ms 90 % 302,44 ms 99% 846,59ms 2018427 užklausų 1,00 m, 298,36 MB skaitė Lizdo klaidos: prijungti 0, perskaityti 0, parašyti 0, laiko limitas 90 Prašymai/sek.: 33591.67 Perdavimo per sekundę: 4,97MB Traefik
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --delsos http://IP-traefik:8000/bench Atlieku 1 m testą @ http://IP-traefik:8000/bench 20 gijų ir 1000 jungčių Thread Stats Avg Stdev Max +/- Stdev Delsos laikas: 91,72 ms 150,43 ms 2,00 s 90,50% Reikalavimai/sek. 1,43 tūkst. 266,37 2,97 tūkst. 69,77% Delsos pasiskirstymas 50% 19,74 ms 75% 121,98 ms 90% 237,39ms 99% 687,49ms 1705073 užklausų 1,00 m, 188,63MB buvo Lizdo klaidos: prisijungti 0, skaityti 0, rašyti 0, laiko limitas 7 Prašymai/sek.: 28392.44 Perdavimo per sekundę: 3,14MB
Išvada Traefik greitis akivaizdžiai lėtesnis nei Nginx, bet skirtumas nėra didelis: Traefik apdoroja 28 392 užklausas per sekundę, o Nginx – 33 591 užklausą per sekundę, su 85 % našumo rodikliu. Jaunam projektui tai gana geras :)!
Keletas tobulintinų sričių:
Naudokite GO_REUSEPORT monitorius
Kiekvienas CPU branduolys vykdo atskirą serverio instanciją GOMAXPROCS=1 (testai rodo, kad Traefik turi daug daugiau konteksto perjungimo nei nginx).
Originalus:Hipersaito prisijungimas matomas. |