Mis on Traefik?
Traefik on kaasaegne seitsmekihiline pöördproksi ja koormuse tasakaalustaja, mis keskendub põhikontseptsioonile — Service Discovery First.
Suurim erinevus traditsioonilistest pöördproksidest (nagu Nginx) on see, et sa ei pea käsitsi kirjutama suurt hulka konfiguratsioonifaile; Traefik "jälgib" proaktiivselt sinu käituskeskkonda ja genereerib automaatselt marsruutimisreeglid.
Tänu "teenuse konfiguratsioonina" funktsioonile sobib Traefik eriti hästi järgmiste olukordade jaoks:
- Docker / Docker Compose
- Kubernetes (Ingress Controller)
- Mikroteenuste arhitektuur
- Veebiteenused väikestele tiimidele või sõltumatutele arendajatele
Lihtsalt öeldes, kui teie teenus on "dünaamiline", on Traefik palju vähem murevaba kui traditsioonilised pöördagentid.
Võrdlusala
Likvideerimise
Tahan tänada exoscale.ch VincentBernat'i, kes heldelt pakkus vajalikku infrastruktuuri võrdluseks.
Testisin seda nelja virtuaalmasinaga, mis olid seadistatud järgmiselt:
32 GB mälu 8 protsessorituuma 10GB tahkisketas Ubuntu 14.04 LTS 64-bitine
Seadistada
Virtuaalmasinat kasutatakse võrdlustööriista wrk käivitamiseks Virtuaalmasin Traefiki jaoks (v1.0.0-beta.416) / nginx (v1.4.6) Kes seadistab kaks virtuaalmasinat kahe taustaserveri jaoks Go-s? Iga virtuaalmasin on häälestatud järgmiste piirangutega:
Nginx
Allpool on kasutusviis Nginx konfiguratsioonifailile /etc/nginx/nginx.conf:
Allpool on kasutatud Nginx virtuaalse hostimise konfiguratsioonifailid:
Traefik
Järgmised on traefik.toml failid, mida kasutatakse:
tulemus Whoami:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latentsus http://IP-whoami:80/bench Teen 1m testi @ http://IP-whoami:80/bench 20 lõime ja 1000 ühendust Lõime statistika keskmine Stdev Max +/- Stdev Latentsus 70,28ms 134,72ms 1,91s 89,94% Req/Sec 2,92k 742,42 8,78k 68,80% Latentsusjaotus 50% 10,63ms 75% 75,64ms 90% 205,65ms 99% 668,28ms 3476705 päringuid 1,00 m sagedusega, 384,61MB lugemine Pistikupesa vead: ühenda 0, loe 0, kirjuta 0, timeout 103 Taotlused/sek: 57894.35 Ülekanne/sek: 6,40MB NGINX:
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latentsus http://IP-nginx:8001/bench Teen 1m testi @ http://IP-nginx:8001/bench 20 lõime ja 1000 ühendust Lõime statistika keskmine Stdev Max +/- Stdev Latentsus 101,25ms 180,09ms 1,99s 89,34% Req/Sec 1,69k 567,69 9,39k 72,62% Latentsusjaotus 50% 15,46ms 75% 129,11ms 90% 302,44ms 99% 846,59ms 2018427 päringuid 1,00 m pikkuses, 298,36MB lugemine Pistikupesa vead: ühenda 0, loe 0, kirjuta 0, timeout 90 Taotlused/sektsioon: 33591.67 Ülekanne/sek: 4,97MB Traefik
wrk -t20 -c1000 -d60s -H "Host: test.traefik" --latentsus http://IP-traefik:8000/bench Teen 1m testi @ http://IP-traefik:8000/bench 20 lõime ja 1000 ühendust Lõime statistika keskmine Stdev Max +/- Stdev Latentsus 91,72ms 150,43ms 2,00s 90,50% Req/Sec 1,43k 266,37 2,97k 69,77% Latentsusjaotus 50% 19,74ms 75% 121,98ms 90% 237,39ms 99% 687,49ms 1705073 päringuid 1,00 m pikkuses, 188,63MB lugemine Pistikupesa vead: ühenda 0, loe 0, kirjuta 0, timeout 7 Taotlused/sek: 28392.44 Ülekanne/sek: 3,14MB
Järeldus Traefiki kiirus on selgelt aeglasem kui Nginxil, kuid vahe pole suur: Traefik käsitleb 28 392 päringut sekundis, Nginx aga 33 591 päringut sekundis, tulemuslikkuse suhe on 85%. Noore projekti kohta on see päris hea :)!
Mõned parendusvaldkonnad:
Kasuta GO_REUSEPORT monitore
Iga protsessori tuum käivitab eraldi serveri instantsi GOMAXPROCS=1 (benchmarkid näitavad, et Traefikil on palju rohkem kontekstivahetust kui nginx).
Originaal:Hüperlingi sisselogimine on nähtav. |