ProHoster > blog > Gweinyddiaeth > O fywyd gyda Kubernetes: Sut nad oedd y gweinydd HTTP yn ffafrio'r Sbaenwyr
O fywyd gyda Kubernetes: Sut nad oedd y gweinydd HTTP yn ffafrio'r Sbaenwyr
Aeth cynrychiolydd o'n cleient, y mae ei stac cais yn byw yn y cwmwl Microsoft (Azure), i'r afael Γ’ phroblem: yn ddiweddar, dechreuodd rhai ceisiadau gan rai cleientiaid o Ewrop ddod i ben gyda gwall 400 (Cais drwg). Mae pob cais wedi'i ysgrifennu yn .NET, yn cael ei ddefnyddio yn Kubernetes ...
Un o'r cymwysiadau yw'r API, y daw'r holl draffig drwyddo yn y pen draw. Mae'r gweinydd HTTP yn gwrando ar y traffig hwn Cudyll coch, wedi'i ffurfweddu gan y cleient .NET a'i gynnal mewn pod. Gyda dadfygio, roeddem yn ffodus yn yr ystyr bod yna ddefnyddiwr penodol a oedd yn atgynhyrchu'r broblem yn gyson. Fodd bynnag, cymhlethwyd popeth gan y gadwyn draffig:
Mae'n ymddangos mai dim ond tcpdump fydd yn helpu i ddatrys y broblem hon ... ond ailadroddaf am y gadwyn draffig:
Ymchwiliad
Yn amlwg, mae'n well gwrando ar draffig ar y nod penodol hwnnw, lle mae Kubernetes wedi defnyddio pod: bydd cyfaint y domen yn golygu y bydd yn bosibl dod o hyd i rywbeth yn eithaf cyflym o leiaf. Ac yn wir, wrth ei archwilio, sylwyd ar y ffrΓ’m ganlynol:
Ar Γ΄l edrych yn agosach ar y domen, sylwyd ar y gair M.laga. Mae'n hawdd dyfalu nad oes dinas M.laga yn Sbaen (ond mae yna Malaga). Gan fanteisio ar y syniad hwn, gwnaethom edrych ar gyfluniadau Ingress, lle gwelsom yr un a fewnosodwyd fis yn Γ΄l (ar gais y cleient) pyt "diniwed".:
Bydd yn dychwelyd 400 Bad request β yn y log cais byddwn yn derbyn gwall sydd eisoes yn gyfarwydd i 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
}
Canlyniadau
Cudyll coch yn benodol ni all prosesu penawdau HTTP yn gywir gyda'r nodau cywir yn UTF-8, sydd wedi'u cynnwys yn enwau nifer eithaf mawr o ddinasoedd.
Ffactor ychwanegol yn ein hachos ni yw nad yw'r cleient ar hyn o bryd yn bwriadu newid gweithrediad Kestrel yn y cais. Fodd bynnag, mae problemau yn AspNetCore ei hun (No.4318, No.7707) maen nhw'n dweud na fydd hyn yn helpu...
I grynhoi: nid yw'r nodyn bellach yn ymwneud Γ’ phroblemau penodol Cudyll Coch neu UTF-8 (yn 2019?!), ond am y ffaith bod ymwybyddiaeth ofalgar ac astudiaeth gyson Bydd pob cam a gymerwch wrth chwilio am broblemau yn dwyn ffrwyth yn hwyr neu'n hwyrach. Pob lwc!