ProHoster > Blog > Ma'muriyat > Kubernetes bilan hayotdan: Qanday qilib HTTP serveri ispanlarga yoqmadi
Kubernetes bilan hayotdan: Qanday qilib HTTP serveri ispanlarga yoqmadi
Ilovalar to'plami Microsoft (Azure) bulutida joylashgan mijozimiz vakili muammoga murojaat qildi: yaqinda Evropadan ba'zi mijozlarning ba'zi so'rovlari 400 xato bilan yakunlana boshladi (Notugri surov). Barcha ilovalar .NET da yozilgan, Kubernetes da joylashtirilgan...
Ilovalardan biri API bo'lib, u orqali barcha trafik oxir-oqibat keladi. Ushbu trafik HTTP serveri tomonidan tinglanadi kerkenez, .NET mijozi tomonidan sozlangan va podda joylashtirilgan. Nosozliklarni tuzatish bilan biz muammoni doimiy ravishda takrorlaydigan aniq foydalanuvchi borligi ma'nosida omadli edik. Biroq, hamma narsa transport zanjiri bilan murakkablashdi:
Faqat tcpdump bu muammoni hal qilishga yordam beradi, deb tuyuladi ... lekin men trafik zanjiri haqida takrorlayman:
Tergov
Shubhasiz, trafikni tinglash yaxshiroqdir ushbu maxsus tugun ustida, bu erda Kubernetes podni o'rnatgan: axlatxonaning hajmi shunday bo'ladiki, hech bo'lmaganda tezda biror narsani topish mumkin bo'ladi. Va haqiqatan ham, uni o'rganayotganda, quyidagi ramka e'tiborga olindi:
Chiqindixonani sinchiklab koβrib chiqqach, bu soβz sezildi M.laga. Ispaniyada M.laga shahri yo'qligini taxmin qilish oson (lekin bor Malaga). Ushbu g'oyadan kelib chiqib, biz Ingress konfiguratsiyasini ko'rib chiqdik, u erda biz bir oy oldin kiritilganini ko'rdik (mijozning iltimosiga binoan) "zararsiz" parcha:
Ushbu sarlavhalarni yo'naltirishni o'chirib qo'ygandan so'ng, hamma narsa yaxshi bo'ldi! (Tez orada dasturning o'zi bu sarlavhalarga muhtoj emasligi ma'lum bo'ldi.)
Endi muammoni ko'rib chiqaylik umumiyroq. Telnet so'rovi orqali uni ilova ichida osongina ko'paytirish mumkin localhost:80:
Qaytadi 400 Bad request β ilovalar jurnalida biz allaqachon tanish bo'lgan xatoni olamiz:
{
"@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
}
natijalar
Xususan, Kestrel bo'lishi mumkin emas juda ko'p sonli shaharlar nomlarida mavjud bo'lgan UTF-8-dagi to'g'ri belgilar bilan HTTP sarlavhalarini to'g'ri qayta ishlash.
Bizning holatimizda qo'shimcha omil shundaki, mijoz hozirda dasturda Kestrel dasturini o'zgartirishni rejalashtirmaydi. Biroq, AspNetCore'dagi muammolar (β4318, β7707) ular bu yordam bermaydi, deyishadi ...
Xulosa qilib aytadigan bo'lsak: eslatma endi Kestrel yoki UTF-8 ning o'ziga xos muammolari haqida emas (2019 yilda?!), balki haqiqat haqida. diqqat va izchil o'rganish Muammolarni qidirishda qilgan har bir qadamingiz ertami-kechmi o'z mevasini beradi. Omad!