ProHoster > Блог > Administrado > El vivo kun Kubernetes: Kiel la HTTP-servilo ne favoris la hispanojn
El vivo kun Kubernetes: Kiel la HTTP-servilo ne favoris la hispanojn
Reprezentanto de nia kliento, kies aplikaĵa stako loĝas en la Microsoft-nubo (Azure), traktis problemon: lastatempe, iuj petoj de iuj klientoj el Eŭropo komencis finiĝi kun eraro 400 (Malbona Peto). Ĉiuj aplikaĵoj estas skribitaj en .NET, deplojitaj en Kubernetes...
Unu el la aplikoj estas la API, tra kiu finfine venas la tuta trafiko. Ĉi tiu trafiko estas aŭskultata de la HTTP-servilo Krestrel, agordita de la .NET-kliento kaj gastigita en pod. Kun senararigado, ni estis bonŝancaj en la senco ke ekzistis specifa uzanto kiu konstante reproduktis la problemon. Tamen ĉio estis komplikita de la trafikĉeno:
Ŝajnus, ke nur tcpdump helpos solvi ĉi tiun problemon... sed mi ripetos pri la trafika ĉeno:
Esploro
Evidente, estas pli bone aŭskulti trafikon sur tiu specifa nodo, kie Kubernetes deplojis pod: la volumeno de la rubejo estos tia, ke eblos trovi almenaŭ ion sufiĉe rapide. Kaj efektive, ekzameninte ĝin, oni rimarkis la jenan kadron:
Post pli proksima inspektado de la rubejo, la vorto estis rimarkita M.laga. Estas facile konjekti, ke ne ekzistas M.laga urbo en Hispanio (sed ekzistas Málaga). Kaptante ĉi tiun ideon, ni rigardis la Ingress-agordojn, kie ni vidis tiun enmetitan antaŭ monato (laŭ peto de la kliento) "sendanĝera" fragmento:
Revenos 400 Bad request — en la aplikaĵa protokolo ni ricevos eraron, kiu jam estas konata al ni:
{
"@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
}
Rezultoj
Specife Turfalko ne povas ĝuste prilabori HTTP-kapojn kun la ĝustaj signoj en UTF-8, kiuj estas enhavitaj en la nomoj de sufiĉe granda nombro da urboj.
Plia faktoro en nia kazo estas, ke la kliento nuntempe ne planas ŝanĝi la efektivigon de Kestrel en la aplikaĵo. Tamen, problemoj en AspNetCore mem (NeXX, NeXX) ili diras, ke tio ne helpos...
Resume: la noto ne plu temas pri la specifaj problemoj de Kestrel aŭ UTF-8 (en 2019?!), sed pri tio, ke atenteco kaj konsekvenca studo Ĉiu paŝo, kiun vi faras dum serĉado de problemoj, pli aŭ malpli frue donos fruktojn. Bonŝancon!