ProHoster > Blog > Administratioun > Vum Liewen mat Kubernetes: Wéi den HTTP-Server d'Spuenier net favoriséiert huet
Vum Liewen mat Kubernetes: Wéi den HTTP-Server d'Spuenier net favoriséiert huet
E Vertrieder vun eisem Client, deem säin Applikatiounsstack an der Microsoft Cloud (Azure) wunnt, huet e Problem adresséiert: viru kuerzem hunn e puer Ufroe vun e puer Clienten aus Europa ugefaang mam Feeler 400 (Falsch Ufro). All Applikatiounen sinn an .NET geschriwwe ginn, a Kubernetes ofgesat ...
Eng vun den Applikatiounen ass d'API, duerch déi all Traffic schlussendlech kënnt. Dëse Traffic gëtt vum HTTP-Server nogelauschtert Kärel, konfiguréiert vum .NET Client an an engem Pod gehost. Mat Debugging ware mir Gléck am Sënn datt et e spezifesche Benotzer war deen de Problem konsequent reproduzéiert huet. Allerdéngs war alles komplizéiert vun der Verkéierskette:
Et géif schéngen datt nëmmen tcpdump hëlleft dëse Problem ze léisen ... awer ech widderhuelen iwwer d'Traffic Kette:
Ënnersichung
Natierlech ass et besser de Traffic ze lauschteren op deem spezifesche Node, wou Kubernetes e Pod agesat huet: de Volume vum Dump wäert esou sinn datt et méiglech ass op d'mannst eppes zimlech séier ze fannen. An tatsächlech, wann Dir et iwwerpréift, gouf de folgende Frame gemierkt:
Bei enger méi genauer Inspektioun vum Deponie gouf d'Wuert opgefall M.laga. Et ass einfach ze roden datt et keng M.laga Stad a Spuenien gëtt (awer et gëtt Málaga). Op dëser Iddi erfaasst, hu mir d'Ingress Konfiguratioune gekuckt, wou mir déi gesinn, déi virun engem Mount agefouert goufen (op Ufro vum Client) "harmlos" Snippet:
Nodeems de Forward vun dësen Header deaktivéiert gouf, ass alles gutt ginn! (Et gouf séier kloer datt d'Applikatioun selwer dës Header net méi brauch.)
Loosst eis elo de Problem kucken méi allgemeng. Et kann einfach an der Applikatioun reproduzéiert ginn andeems Dir eng Telnet Ufro mécht localhost:80:
Wäert zréck 400 Bad request - am Applikatiounsprotokoll kréie mir e Feeler deen eis scho vertraut ass:
{
"@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
}
Resultater
Speziell Kestrel net kënnen korrekt veraarbecht HTTP-Header mat de korrekten Zeechen an UTF-8, déi an den Nimm vun enger zimlech grousser Zuel vu Stied enthale sinn.
En zousätzleche Faktor an eisem Fall ass datt de Client de Moment net plangt d'Ëmsetzung vu Kestrel an der Applikatioun z'änneren. Wéi och ëmmer, Themen an AspNetCore selwer (No.4318, No.7707) se soen dat dat net hëlleft...
Fir ze resuméieren: d'Notiz geet net méi iwwer déi spezifesch Probleemer vu Kestrel oder UTF-8 (am 2019?!), mee iwwer d'Tatsaach datt mindfulness a konsequent Studie All Schrëtt, deen Dir maacht wärend Dir no Probleemer sicht, wäert fréier oder spéider Fruucht droen. Vill Gléck!