Karere. 1. Kupu Whakataki

Tena koe! He tuhinga poto tenei e whakautu ana i nga patai: "he aha te karere?", "he aha i hiahiatia ai?" me "kei hea ka tiimata?".

He aha tenei

Ko te Envoy he taurite L4-L7 kua tuhia ki te C++, e arotahi ana ki te mahi nui me te waatea. I tetahi taha, he rite tenei ki te nginx me te haproxy, he rite ki te mahi ki a raatau. I tetahi atu taha, he nui ake te aro ki te hoahoanga microservice me te mahi kaore he kino atu i te java me te haere toenga, penei i te zuul, traefik ranei.

Te ripanga whakataurite o te haproxy/nginx/envoy, e kore e kii ko ia te tino pono, engari he whakaahua whanui.

nginx
haproxy
tonoa
traefik

whetu i runga i te github
11.2k/whakaata
1.1k/whakaata
12.4k
27.6k

tuhia ki roto
C
C
C ++
go

API
kahore
turanga / pana anake
rererangi raraunga/toia
tohi

arowhai hauora kaha
kahore
ae
ae
ae

Tuwhera te rapu
mono waho
kahore
ae
ae

J.W.T.
mono waho
kahore
ae
kahore

toronga
Lua/C
Lua/C
Lua/C++
kahore

He aha mo

He kaupapa rangatahi tenei, he maha nga mea e ngaro ana, ko etahi kei te alpha tuatahi. Engari tonoa, na tona taitamarikitanga hoki, kei te whanake tere me te maha o nga ahuatanga whakamere: whirihoranga hihiri, he maha nga whiriwhiringa kua rite, he atanga ngawari mo te tuhi i a koe ake whiriwhiringa.
Ko nga waahanga tono ka whai mai i tenei, engari ko te tuatahi e rua nga tauira anti:

  • Te whakaheke pateko.

Ko te meka ko e i tenei wa i roto i tonoa kore tautoko keteroki. Kei te ngana nga taangata Google i tenei ki te whakatika. Ka whakatinanahia te whakaaro kotahi ki roto tonoa Ko nga mea iti katoa (nga upoko o te kararehe) o te hanganga ture RFC, a mo nga whakatinanatanga motuhake ka hanga he atanga. Engari mo tenei wa ehara i te alpha, kei te korerorero te hoahoanga, PR tuwhera (i te wa e tuhi ana ahau i te tuhinga PR, ka maroke te PR, engari kei te whai take tonu tenei waahanga).

Mo tenei wa, whakamahia te nginx mo nga taatai.

  • whirihoranga pateko.

Ka taea e koe te whakamahi, engari tonoa Ehara i te mea i hangaia ai. Ko nga ahuatanga kei roto i te whirihoranga pateko e kore e kitea. He maha nga wa:

A, no te whakatika i te whirihoranga i roto i te yaml, ka pohehe koe, ka riria nga kaiwhakawhanake mo te korero korero me te whakaaro ko nga whirihoranga nginx/haproxy, ahakoa he iti te hanganga, he poto ake. Koira te take. Ko te whirihoranga o Nginx me Haproxy i hangaia hei whakatika ma te ringaringa, a tonoa mo te whakatipuranga mai i te waehere. Ko te whirihoranga katoa e whakaahuatia ana i roto protobuf, ko te whakaputa mai i nga konae proto he uaua ake ki te he.

Ko te Canary, b/g te whakatakotoranga ahuatanga me te maha atu ka mahia i roto i te whirihoranga hihiri anake. Kare au e kii ana kare e taea te mahi i runga i te paheketanga, ka mahia e tatou katoa. Engari mo tenei me mau koe ki runga tootoo, i roto i tetahi o nga pauna, i roto i tonoa tae atu ki.

Ko nga mahi e hiahiatia ana e te Kaihoko:

  • Te whakataurite waka i roto i nga punaha uaua me te hihiri. Kei roto i tenei ko te mata ratonga, engari ehara i te mea ko te mea anake.
  • Ko te hiahia mo te mahi tirotiro tohatoha, whakamanatanga matatini, etahi atu mahi ranei kei roto tonoa i waho o te pouaka, he pai ranei te whakatinana, engari i roto i te nginx/haproxy me karapotia koe e te lua me nga taputapu whakapae.

Ko nga mea e rua, mehemea e tika ana, whakarato i nga mahi teitei.

Nahea teie ohipa

Ka tohatohahia te karere ki roto i nga rua anake hei ahua docker. Kei te atahanga he tauira o te whirihoranga pateko. Engari kei te pirangi matou mo te maarama ki te hanganga.

whirihoranga pateko envoy.yaml

static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address:
        protocol: TCP
        address: 0.0.0.0
        port_value: 10000
    filter_chains:
    - filters:
      - name: envoy.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager
          stat_prefix: ingress_http
          route_config:
            name: local_route
            virtual_hosts:
            - name: local_service
              domains: ["*"]
              routes:
              - match:
                  prefix: "/"
                route:
                  host_rewrite: www.google.com
                  cluster: service_google
          http_filters:
          - name: envoy.router
  clusters:
  - name: service_google
    connect_timeout: 0.25s
    type: LOGICAL_DNS
    # Comment out the following line to test on v6 networks
    dns_lookup_family: V4_ONLY
    lb_policy: ROUND_ROBIN
    load_assignment:
      cluster_name: service_google
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: www.google.com
                port_value: 443
    transport_socket:
      name: envoy.transport_sockets.tls
      typed_config:
        "@type": type.googleapis.com/envoy.api.v2.auth.UpstreamTlsContext
        sni: www.google.com

whirihoranga hihiko

He aha te raruraru e rapu ana tatou i te otinga? Kaore e taea e koe te uta noa i te whirihoranga taurite kawenga i raro i te utaina; ka ara ake nga raru "iti":

  • Te whakamanatanga whirihoranga.

Ka nui te whirihora, ka nui rawa atu, mena ka utaina katoatia i te wa kotahi, ka piki ake te tupono ki tetahi waahi.

  • Nga hononga roa.

I te wa e timata ana koe i tetahi kaiwhakarongo hou, me tiaki e koe nga hononga e rere ana i runga i te mea tawhito; mena ka puta nga huringa i nga wa katoa, ka roa nga hononga, me rapu koe mo te taupatupatu. Kia ora, kubernetes ingress on nginx.

  • Nga arowhai hauora kaha.

Mēnā he mātātoa te arowhai hauora, me taki rua i te katoa ki te whirihora hou i mua i te tuku waka. Mena he maha nga awaawa, ka roa te waa. Kia ora haproxy.

Me pehea te whakatau i tenei tonoaMa te utaina o te whirihora, kia rite ki te tauira poka wai, ka taea e koe te wehewehe ki nga waahanga motuhake, kaua e timata ano i te waahanga kaore i rereke. Hei tauira, he kaiwhakarongo, he utu nui ki te whakaara ano me te uaua ka huri.

Hōutuutu tonoa (mai i te kōnae i runga ake nei) e whai ake nei nga hinonga:

  • kaiwhakarongo — kaiwhakarongo e iri ana i runga i te ip/tauranga motuhake
  • kaihautu mariko - kaihautu mariko ma te ingoa rohe
  • ara - ture taurite
  • tautau — he roopu whakarunga me nga tawhā taurite
  • Tuhinga — wāhitau tauira whakarunga

Ko enei hinonga me etahi atu ka taea te whakakii i roto i te hihiri; mo tenei, ka tohua e te whirihoranga te wahitau o te ratonga mai i te waahi ka whakawhiwhia te whirihora. Ko te ratonga he REST, he gRPC ranei, he pai ake te gRPC.

Kua whakaingoatia nga ratonga: LDS, VHDS, RDS, CDS me EDS. Ka taea e koe te whakakotahi i te whirihoranga pateko me te hihiko, me te herenga e kore e taea te tautuhi i te rauemi hihiko i roto i te mea pateko.

Mo te nuinga o nga mahi, he nui ki te whakatinana i nga ratonga whakamutunga e toru, ka kiia ko ADS (Aggregated Discovery Service), mo java ka haere ki reira kua rite te whakatinanatanga o te paparangi raraunga gRPC me whakakiia e koe nga taonga mai i to puna.

Ko te whirihoranga he ahua e whai ake nei:

envoy.yaml whirihoranga hihiri

dynamic_resources:
  ads_config:
    api_type: GRPC
    grpc_services:
      envoy_grpc:
        cluster_name: xds_clr
  cds_config:
    ads: {}
static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address:
        protocol: TCP
        address: 0.0.0.0
        port_value: 10000
    filter_chains:
    - filters:
      - name: envoy.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager
          stat_prefix: ingress_http
          rds:
            route_config_name: local_route
            config_source:
              ads: {}
          http_filters:
          - name: envoy.router
  clusters:
  - name: xds_clr
    connect_timeout: 0.25s
    type: LOGICAL_DNS
    dns_lookup_family: V4_ONLY
    lb_policy: ROUND_ROBIN
    load_assignment:
      cluster_name: xds_clr
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: xds
                port_value: 6565

I te tiimata tonoa me tenei whirihora, ka hono atu ki te rererangi-whakahaere ka ngana ki te tono i te whirihoranga RDS, CDS me EDS. Ka whakaahuahia te ahua o te tukanga taunekeneke konei.

Hei poto, tonoa ka tukuna he tono e tohu ana i te momo rauemi e tonoa ana, te putanga me nga tawhā o te node. Hei whakautu, ka whakawhiwhia he rauemi me tetahi putanga; ki te kore te putanga i runga i te rererangi-whakahaere i rereke, kaore e whakautu.
E 4 nga whiringa taunekeneke:

  • Kotahi te awa gRPC mo nga momo rauemi katoa, ka tukuna te mana katoa o te rauemi.
  • Ko nga awa wehe, he ahua tonu.
  • Kotahi te awa, te ahua piki.
  • Ko nga awa wehe, te ahua piki.

Ko te xDS taapiri ka taea e koe te whakaiti i nga waka i waenga i te rererangi-whakahaere me te tonoa, he mea tika tenei mo nga whirihoranga nui. Engari he whakararu i te taunekeneke; kei roto i te tono he rarangi rauemi mo te whakakore me te ohauru.

Ko ta maatau tauira e whakamahi ana i te ADS - kotahi te awa mo te RDS, CDS, EDS me te aratau kore-apiti. Hei whakahohe i te aratau taapiri, me tohu koe api_type: DELTA_GRPC

I te mea kei roto i te tono nga tawhā node, ka taea e matou te tuku rauemi rereke ki te rererangi-whakahaere mo nga waa rereke tonoa, he watea tenei mo te hanga i te mata ratonga.

Whakamahana

I roto i te tonoa i te tiimatanga, i te wa ka whiwhi whirihoranga hou mai i te rererangi-whakahaere, ka whakarewahia te tukanga whakamahana rauemi. Kua wehea ki te whakamahana kaiwhakarongo me te whakamahana kahui. Ka whakarewahia te tuatahi ina he huringa i roto i te RDS/LDS, te tuarua ka CDS/EDS. Ko te tikanga mena ka huri noa nga awa o runga, karekau te kaiwhakarongo e hanga ano.

I te wa o te whakamahana, ka tumanakohia nga rauemi whakawhirinaki mai i te waka rererangi whakahaere i te wa paunga. Mena ka puta te waahi, kaore e angitu te arawhitinga ka kore te kaiwhakarongo hou e tiimata ki te whakarongo ki te tauranga.
Te raupapa tuatahi: EDS, CDS, tirotiro hauora kaha, RDS, LDS. Ma te kaha o nga arowhai hauora, ka haere nga waka ki runga i muri i te kotahi o te tirotiro hauora angitu.

Mena i hanga ano te kaiwhakarongo, ka uru te mea tawhito ki te ahua DRAIN ka mukua i muri i te katinga o nga hononga katoa, ka pau ranei te waahi. --drain-time-s, taunoa 10 meneti.

Kia haere tonu.

Source: will.com

Tāpiri i te kōrero