ProHoster > Blog > Administrazioa > Kubernetes-en bizitzatik: nola HTTP zerbitzariak ez zuen espainiarren alde egin
Kubernetes-en bizitzatik: nola HTTP zerbitzariak ez zuen espainiarren alde egin
Gure bezeroaren ordezkari batek, bere aplikazio pila Microsoft hodeian (Azure), arazo bati aurre egin zion: duela gutxi, Europako bezero batzuen eskaera batzuk 400 errorearekin amaitzen hasi ziren (Eskaera txarra). Aplikazio guztiak .NET-en idatzita daude, Kubernetes-en zabalduta...
Aplikazioetako bat APIa da, eta azken finean trafiko guztia etortzen da. Trafiko hori HTTP zerbitzariak entzuten du Kortxoa, .NET bezeroak konfiguratua eta pod batean ostatatuta. Arazketarekin, zortea izan genuen arazoa etengabe erreproduzitzen zuen erabiltzaile zehatz bat zegoelako. Hala ere, dena zaildu zen trafiko-kateak:
Badirudi tcpdump-ek bakarrik lagunduko duela arazo hau konpontzen... baina trafiko-kateari buruz errepikatuko dut:
Ikerketa
Jakina, hobe dela trafikoa entzutea nodo zehatz horretan, non Kubernetes-ek pod bat zabaldu duen: zabortegiaren bolumena halakoa izango da, gutxienez zerbait nahiko azkar aurkitzea posible izango baita. Eta, hain zuzen ere, hura aztertzean, honako marko hau nabaritu zen:
Zabortegia gertuagotik begiratuta, hitza nabaritu zen M.laga. Espainian M.laga hiririk ez dagoela asmatzea erraza da (baina badago Malaga). Ideia horretaz baliatuz, Ingress konfigurazioak aztertu genituen, non duela hilabete txertatutakoa ikusi genuen (bezeroak hala eskatuta) "kaltegabea" zatia:
Itzuliko da 400 Bad request β aplikazioaren erregistroan dagoeneko ezaguna zaigun errore bat jasoko dugu:
{
"@t":"2019-03-31T12:59:54.3746446Z",
"@mt":"Connection id "{ConnectionId}" bad request data: "{message}"",
"@x":"Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException: Malformed request: invalid headers.n at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection.TryParseRequest(ReadResult result, Boolean& endConnection)n at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.<ProcessRequestsAsync>d__185`1.MoveNext()",
"ConnectionId":"0HLLLR1J974L9",
"message":"Malformed request: invalid headers.",
"EventId":{
"Id":17,
"Name":"ConnectionBadRequest"
},
"SourceContext":"Microsoft.AspNetCore.Server.Kestrel",
"ThreadId":71
}
Emaitzak
Zehazki Kestrel ezin behar bezala prozesatu HTTP goiburuak UTF-8-n karaktere zuzenak dituztenak, hiri kopuru handi baten izenetan daudenak.
Gure kasuan faktore gehigarri bat da bezeroak ez duela aplikazioan Kestrel-en ezarpena aldatzeko asmorik. Hala ere, arazoak AspNetCore-n bertan (β 4318, β 7707) honek ez duela lagunduko diote...
Laburbilduz: oharra ez da jada Kestrel edo UTF-8ren arazo zehatzei buruz (2019an?!), baizik eta mindfulness eta azterketa koherentea Arazoak bilatzen dituzunean ematen duzun urrats bakoitzak goiz edo geroago fruituak emango ditu. Zorte on!