Tukunga o te kaiwhakarite HTTP/TCP HAProxy 2.0

whakaputaina tuku taurite kawenga HA Takawaenga 2.0, ka taea e koe te tohatoha i nga hokohoko HTTP me nga tono TCP i waenga i te roopu o nga kaitoro, me te whai whakaaro ki te maha o nga mea (hei tauira, ka tirotirohia te waatea o nga kaitoro, te aromatawai i te taumata kawenga, kei a DDoS nga aukati) me te whakahaere i te tātari raraunga tuatahi ( hei tauira, ka taea e koe te poroporo i nga pane HTTP, te whakawhiti tātari i nga tawhā patai hē, te aukati i te SQL me te whakakapi XSS, te hono i nga kaihoko tukatuka ihirangi). Ka taea hoki e HAProxy tono ki te ruruku i te taunekeneke o nga waahanga i roto i nga punaha i runga i te hoahoanga microservices. Ko te waehere kaupapa kua tuhia ki C me tukua raihana i raro i te GPLv2. Kei te whakamahia te kaupapa i runga i te maha o nga waahi nui, tae atu ki a Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter me Vimeo.

Nga waahanga tuku matua:

  • I whakauruhia he API hou Mahere Raraunga, ka taea e koe te whakahaere i nga tautuhinga HAProxy i runga i te rere ma te API Tukutuku REST. Tae atu ki a koe, ka taea e koe te taapiri me te tango i nga tuara me nga kaitoro, te hanga ACL, te huri i te ararere tono, te huri i nga herenga kaikawe ki te IP;
  • Kua taapirihia te tohutohu nbthread, ka taea e koe te whirihora i te maha o nga miro e whakamahia ana i roto i te HAProxy ki te arotau i nga mahi i runga i nga PTM maha-matua. Ma te taunoa, ka tohua te maha o nga miro kaimahi i runga i nga matua CPU e waatea ana i te taiao o naianei, a, i nga taiao kapua ko te taunoa he miro kotahi. Hei tautuhi i nga rohe pakeke, kua taapirihia nga whiringa huihuinga MAX_THREADS me MAX_PROCS, ka whakaiti i te tepe o runga mo te maha o nga miro me nga tukanga;
  • Kua whakangwarihia te whakamahi i te tohutohu here mo nga kaikawe here ki nga wahitau whatunga. I te wa e whakarite ana, kaore e tika kia tautuhia nga tawhā tukanga - ma te taunoa, ka tohatohahia nga hononga ki waenga i nga miro i runga i te maha o nga hononga kaha.
  • Ko te whakarite i nga raarangi ka rere i roto i nga ipu taratahi kua ngawari ake - ka taea te tuku i te raarangi ki te stdout me te stderr, tae atu ki tetahi kaiwhakaahua konae o mua (hei tauira, "log fd@1 local0");
  • Ko te tautoko mo te HTX (Native HTTP Representation) ka whakahohea ma te taunoa, ka taea te whakataurite ina whakamahi i nga ahuatanga matatau penei i te mutunga-ki-mutunga HTTP/2, Layer 7 Retries and gRPC. Kaore a HTX e whakakapi i nga pane, engari ka whakaiti i te mahi whakarereke ki te tango me te taapiri i tetahi pane hou ki te mutunga o te raarangi, ka taea e koe te whakahaere i nga momo rerekee o te kawa HTTP, ka pupuri i nga kupu taketake o nga pane me te tuku i a koe. ki te whakatutuki i nga mahi teitei ake i te wa e whakawhiti ana i te HTTP/2 ki te HTTP/1.1 me te rereke;
  • Kua taapirihia te tautoko mana mo te aratau HTTP/2 Whakamutunga-ki-Whakamutunga (te tukatuka i nga waahanga katoa i roto i te HTTP/2, tae atu ki nga waea ki te tuara, kaua ko te taunekeneke i waenga i te takawaenga me te kaihoko);
  • Ko te tautoko katoa mo te takawaenga takirua o te kawa gRPC kua whakatinanahia me te kaha ki te tarai i nga awa gRPC, e whakaatu ana i nga karere takitahi, e whakaata ana i nga waka gRPC i roto i te raarangi me te tātari i nga karere ma te whakamahi i nga ACL. Ma te gRPC ka taea e koe te whakarite i nga mahi o nga microservices i roto i nga momo reo hootaka e taunekeneke ana ki a raatau ano ma te whakamahi i te API ao. Ko te whakawhitiwhiti whatunga i roto i te gRPC ka whakatinanahia i runga ake o te kawa HTTP/2 me te hangai i runga i te whakamahinga o nga Kawa Buffers mo te raupapa raraunga.
  • He tautoko taapiri mo te aratau "Layer 7 Retries", e taea ai e koe te tuku tono HTTP tukurua i te wa e rahunga ana te rorohiko kaore e pa ana ki nga raru ki te whakatu hononga whatunga (hei tauira, mena karekau he whakautu, he whakautu kore ranei ki tetahi tono POST). Hei whakakore i te aratau, kua taapirihia te haki "whakakore-l7-retry" ki te whiringa "http-tono", me te "whakamatautau" kua taapirihia mo te whakatikatika pai i nga waahanga taunoa, whakarongo me te tuara. Ko nga tohu e whai ake nei e waatea ana mo te tuku ano: nga hapa katoa-ka taea te whakamatau ano, kaore, karekau, karekau-whakautu, te whakautu-pararehe, te wa-whakautu, te 0rtt-whakakore, me te here ki te whakahoki i nga waehere mana (404, etc.) ;
  • Kua whakatinanahia he kaiwhakahaere tukanga hou, e taea ai e koe te whirihora i te piiraa o nga konae whakahaere o waho me nga kaihautu mo HAProxy.
    Hei tauira, ko te API Mahere Raraunga (/usr/sbin/dataplaneapi), me nga momo miihini tukatuka awa Offload, kua whakatinanahia i roto i te ahua o taua kaikawe o waho;

  • Kua taapirihia nga here mo te .NET Core, Go, Lua me te Python mo te whakawhanake SPOE (Stream Processing Offload Engine) me SPOP (Stream Processing Offload Protocol). I mua, i tautokohia te whanaketanga toronga ki C anake;
  • I taapirihia he kaihautu spoa-mirror o waho (/usr/sbin/spoa-mirror) mo te whakaata i nga tono ki tetahi tuumau motuhake (hei tauira, mo te kape i tetahi waahanga o te hokohoko whakaputa mo te whakamatautau i tetahi taiao whakamatautau i raro i te kawenga tuuturu);
  • Tukuna e HAProxy Kubernetes Ingress Controller ki te whakarite i te tuitui ki te papaaho Kubernetes;
  • Kua taapirihia he tautoko hanga-i roto mo te kaweake tatauranga ki te punaha aroturuki Prometheus;
  • Ko te Kawa Peers, i whakamahia hei whakawhiti korero me etahi atu pona e whakahaere ana i te HAProxy, kua whakaroahia. Tae atu ki te tautoko taapiri mo te Heartbeat me te tuku raraunga whakamunatia;
  • Ko te tawhā "tauira" kua taapirihia ki te tohutohu "takiuru", ka taea e koe te maka i tetahi waahanga noa o nga tono ki roto i te raarangi, hei tauira 1 o te 10, hei hanga tauira tātari;
  • Kua taapirihia te aratau panui aunoa (profiling.tasks directive, e taea te tango aunoa i nga uara, ki runga me te weto). Ka whakahohehia te whakamohiotanga aunoa ki te neke ake i te 1000 ms te roanga toharite. Hei tiro i nga raraunga tohu, kua taapirihia te whakahau "whakaatu i te whakaaturanga" ki te Runtime API, ka taea ranei te tautuhi i nga tatauranga ki te raarangi;
  • He tautoko taapiri mo te uru atu ki nga kaitoro tuara ma te whakamahi i te kawa SOCKS4;
  • Kua taapirihia he tautoko mutunga-ki-mutunga mo te tikanga mo te whakatuwhera tere i nga hononga TCP (TFO - TCP Tere Tere, RFC 7413), ka taea e koe te whakaiti i te maha o nga waahanga tatūnga hononga ma te whakakotahi i te tuatahi ki te tono kotahi me te taahiraa tuarua o te tukanga whiriwhiringa hononga 3-taahiraa matarohia, ka taea te tuku raraunga i te waahi tuatahi o te whakatuu hononga;
  • Kua taapirihia nga mahi hou:
    • "http-tono whakakapi-uri" ki te whakakapi i te URL ma te whakamahi i te korero auau;
    • “tcp-tono ihirangi do-resolve” me “http-tono do-resolve” mo te whakatau i te ingoa manaaki;
    • "tcp-tono ihirangi huinga-dst" me "tcp-tono ihirangi huinga-dst-tauranga" hei whakakapi i te wahitau IP me te tauranga.
  • Kua taapirihia nga waahanga huringa hou:
    • aes_gcm_dev mo te wetemuna i nga awa ma te whakamahi AES128-GCM, AES192-GCM me AES256-GCM algorithms;
    • protobuf ki te tango mara mai i nga karere Kawa Buffers;
    • ungrpc ki te tango mara mai i nga karere gRPC.

    Source: opennet.ru

Tāpiri i te kōrero