Lumelang! Ena ke sengoloa se sekhuts'oane se arabang lipotso tse reng: "Essay ke eng?", "Hobaneng e hlokahala?" le "ho qala kae?".
Ke eng
Envoy ke L4-L7 balancer e ngotsoeng ka C ++, e shebaneng le ts'ebetso e phahameng le ho fumaneha. Ka lehlakoreng le leng, ena ka tsela e itseng ke analogue ea nginx le haproxy, e ka bapisoang le ts'ebetso ea bona. Ka lehlakoreng le leng, e shebane le meralo ea microservice mme ha e na ts'ebetso e mpe ho feta java and go balancers, joalo ka zuul kapa traefik.
Tafole ea papiso ea haproxy / nginx / moemeli, ha e bolele hore ke 'nete e feletseng, empa e fana ka setšoantšo se akaretsang.
nginx
boitumelo
o ile a romela
Metsoako
linaleli ho github
11.2k/seipone
1.1k/seipone
12.4k
27.6k
ngotsoe ka
C
C
C ++
go
API
ha ho
socket only/ push
dataplane/ hula
Hula
tlhahlobo ea bophelo bo botle
ha ho
e
e
e
Tsela e bulehileng
plugin ea kantle
ha ho
e
e
J.W.T.
plugin ea kantle
ha ho
e
ha ho
katoloso
Lua/C
Lua/C
Lua/C++
ha ho
Hobaneng
Ona ke morero o monyane, ho na le lintho tse ngata tse sieo, tse ling li le alpha ea pele. Empa o ile a romela, hape ka lebaka la bocha ba eona, e ntse e tsoela pele ka potlako 'me e se e ntse e e-na le likarolo tse ngata tse thahasellisang: tlhophiso e matla, li-filters tse ngata tse lokiselitsoeng, sebopeho se bonolo sa ho ngola li-filters tsa hau.
Likarolo tsa ts'ebeliso li latela ho tsoa ho sena, empa pele ho na le li-antipattern tse 2:
- Ho tsieleha ho tsitsitseng.
'Nete ke hore ka nako eo ka o ile a romela ha ho ts'ehetso ea caching. Bashanyana ba Google ba leka sena
Hajoale, sebelisa nginx bakeng sa statics.
- Tlhophiso e tsitsitseng.
U ka e sebelisa, empa o ile a romela Ha se seo e se etselitsoeng. Likarolo tsa tlhophiso e tsitsitseng li ke ke tsa pepesoa. Ho na le linako tse ngata:
Ha o hlophisa tlhophiso ho yaml, o tla fosa, o khalemele bahlahisi bakeng sa lentsoe mme o nahane hore li-nginx/haproxy configs, leha li sa hlophisoa hantle, li khuts'oane haholoanyane. Ke eona taba eo. Tlhophiso ea Nginx le Haproxy e entsoe bakeng sa ho hlophisoa ka letsoho, le o ile a romela bakeng sa moloko ho tloha khoutu. Tlhophiso eohle e hlalositsoe ho
Canary, b/g maemo a deployment le tse ling tse ngata hangata li sebelisoa feela ka tlhophiso e matla. Ha ke re taba ena e ke ke ea etsoa statically, kaofela rea e etsa. Empa bakeng sa sena o hloka ho roala lithupa, leha e le efe ea li-balancers, ho o ile a romela ho kenyeletsa.
Mesebetsi eo Moemeli e leng oa bohlokoa ho eona:
- Ho leka-lekanya sephethephethe tsamaisong e rarahaneng le e matla. Sena se kenyelletsa mesh ea lits'ebeletso, empa ha se eona feela.
- Tlhokahalo ea ts'ebetso ea ts'ebetso e ajoang, tumello e rarahaneng kapa ts'ebetso e 'ngoe e fumanehang ho o ile a romela ho tsoa ka lebokoseng kapa ho sebelisoa ka mokhoa o bonolo, empa ho nginx/haproxy o hloka ho pota-potiloe ke lua le li-plugins tse belaetsang.
Ka bobeli, ha ho hlokahala, fana ka ts'ebetso e phahameng.
Joang mosebetsing ona
Envoy e ajoa ka li-binary feela joalo ka setšoantšo sa docker. Setšoantšo se se se ntse se na le mohlala oa tlhophiso e tsitsitseng. Empa re e thahasella feela bakeng sa ho utloisisa sebopeho.
envoy.yaml static tlhophiso
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
Phetoho e matla
Re batla tharollo ea bothata bofe? U ke ke ua kenya feela tlhophiso ea balancer ea mojaro tlas'a mojaro; mathata a "manyane" a tla hlaha:
- Netefatso ya tlhophiso.
Sebopeho se ka ba seholo, se ka ba seholo haholo, haeba re ka se jara kaofela ka nako e le 'ngoe, menyetla ea phoso kae-kae ea eketseha.
- Likhokahano tsa nako e telele.
Ha o qala momameli e mocha, o hloka ho hlokomela likhokahano tse sebetsang ho ea khale; haeba liphetoho li etsahala khafetsa 'me ho na le likhokahano tsa nako e telele, u tla tlameha ho batla ho sekisetsa. Lumela, kubernetes ingress ho nginx.
- Litlhahlobo tse sebetsang tsa bophelo bo botle.
Haeba re na le litlhahlobo tse sebetsang tsa bophelo bo botle, re hloka ho li hlahloba habeli ka har'a tlhophiso e ncha pele re romella sephethephethe. Haeba ho na le makhasi a mangata, sena se nka nako. Hello haproxy.
Sena se rarolloa joang ka o ile a romelaKa ho kenya config ka matla, ho latela mohlala oa letamo, u ka e arola ka likarolo tse arohaneng 'me u se ke ua qala hape karolo e sa kang ea fetoha. Ka mohlala, momameli, e leng theko e boima ho reinitialize le ka seoelo liphetoho.
Moralo o ile a romela (ho tsoa faeleng e ka holimo) e na le mekhatlo e latelang:
- momameli — momameli o leketlile ho ip/port e itseng
- moamoheli oa sebele - moamoheli ea fumanehang ka lebitso la domain
- tseleng - molao oa ho leka-lekanya
- lesihla - sehlopha sa libaka tse holimo tse nang le litekanyetso tsa ho leka-lekanya
- qetello - aterese ea mohlala e holimo
E 'ngoe le e' ngoe ea likarolo tsena hammoho le tse ling e ka tlatsoa ka matla; bakeng sa sena, tlhophiso e totobatsa aterese ea ts'ebeletso moo tlhophiso e tla amoheloa teng. Ts'ebeletso e ka ba REST kapa gRPC, gRPC e ka khethoa.
Litšebeletso li bitsoa ka ho latellana: LDS, VHDS, RDS, CDS le EDS. U ka kopanya tlhophiso e tsitsitseng le e matla, ka moeli oa hore mohloli o matla o ke ke oa hlalosoa ka mokhoa o tsitsitseng.
Bakeng sa mesebetsi e mengata, ho lekane ho kenya tšebetsong lits'ebeletso tse tharo tsa ho qetela, li bitsoa ADS (Aggregated Discovery Service),
Sebopeho se etsoa ka mokhoa o latelang:
envoy.yaml tlhophiso e matla
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
Qalong o ile a romela ka tlhophiso ena, e tla hokela sefofaneng sa taolo ebe o leka ho kopa tlhophiso ea RDS, CDS le EDS. Mokhoa oa tšebelisano 'moho o hlalosoa joang
Ka bokhutšoane, o ile a romela e romella kopo e bonts'ang mofuta oa sesebelisoa se kopuoang, mofuta le liparamente tsa node. Ho arabela, e fumana sesebelisoa le mofuta; haeba mofuta oa sefofane sa taolo o sa fetoha, ha o arabe.
Ho na le likhetho tse 4 tsa puisano:
- Molapo o le mong oa gRPC bakeng sa mefuta eohle ea lisebelisoa, boemo bo felletseng ba sesebelisoa bo romelloa.
- Melapo e arohaneng, boemo bo tletseng.
- Molapo o le mong, boemo bo ntseng bo eketseha.
- Melapo e arohaneng, boemo bo ntseng bo eketseha.
Keketseho ea xDS e u lumella ho fokotsa sephethephethe lipakeng tsa sefofane sa taolo le o ile a romela, sena se bohlokoa bakeng sa litlhophiso tse kholo. Empa e thatafatsa tšebelisano; kopo e na le lethathamo la lisebelisoa bakeng sa ho ingolisa le ho ingolisa.
Mohlala oa rona o sebelisa ADS - molapo o le mong bakeng sa RDS, CDS, EDS le mokhoa o sa eketseng. Ho nolofalletsa mokhoa oa ho eketsa, o hloka ho hlakisa api_type: DELTA_GRPC
Kaha kopo e na le li-parameter tsa node, re ka romela lisebelisoa tse fapaneng ho sefofane sa taolo bakeng sa maemo a fapaneng o ile a romela, sena se loketse ho haha mesh ea tšebeletso.
Iphuthumatsa
mabapi le o ile a romela ha u qala kapa ha u fumana tlhophiso e ncha ho tloha sefofaneng sa taolo, ts'ebetso ea ho futhumatsa lisebelisoa e qala. E arotsoe ka mofuthu oa bamameli le mofuthu oa lihlopha. Ea pele e qalisoa ha ho na le liphetoho ho RDS/LDS, ea bobeli ke CDS/EDS. Sena se bolela hore haeba feela melapo e ka holimo e fetoha, momameli ha a bōptjoe bocha.
Nakong ea ts'ebetso ea ho futhumatsa, lisebelisoa tse itšetlehileng ka tsona li lebeletsoe ho tloha sefofaneng sa taolo nakong ea nako. Haeba nako e felile, ho qala ho ke ke ha atleha mme momameli e mocha a ke ke a qala ho mamela boema-kepe.
Taelo ea ho qala: EDS, CDS, tlhahlobo e sebetsang ea bophelo bo botle, RDS, LDS. Ha tlhahlobo ea bophelo bo botle e lumelletsoe, sephethephethe se tla nyoloha feela ka mor'a tlhahlobo e le 'ngoe e atlehileng ea bophelo bo botle.
Haeba momameli a ne a bōpiloe bocha, ea khale e ea sebakeng sa DRAIN 'me e tla hlakoloa ka mor'a hore likhokahano tsohle li koaloe kapa nako ea nako e felile. --drain-time-s
, metsotso e 10 ea kamehla.
E tla ntšetsoa pele.
Source: www.habr.com