Ekele! Nke a bụ akụkọ dị mkpirikpi nke na-aza ajụjụ ndị a: “gịnị bụ onye ozi?”, “Gịnị mere o ji dị ya mkpa?” na "ebee ka ịmalite?".
Kedu ihe bụ nke a
Onye ozi bụ L4-L7 balancer nke edere na C++, lekwasịrị anya na arụmọrụ dị elu yana nnweta. N'otu aka ahụ, nke a bụ n'ụzọ ụfọdụ analogue nke nginx na haproxy, iji tụnyere arụmọrụ ha. N'aka nke ọzọ, ọ na-adabere na ụlọ ọrụ microservice ma nwee ọrụ adịghị njọ karịa java na-aga n'ihu, dị ka zuul ma ọ bụ traefik.
Ntụle tebụl nke haproxy / nginx / envoy, ọ naghị ekwu na ọ bụ eziokwu zuru oke, kama ọ na-enye nkọwa zuru ezu.
nginx
haproxy
zitere
traefik
kpakpando na github
11.2k / mirror
1.1k / mirror
12.4k
27.6k
edere na
C
C
C +
go
API
ọ dịghị
sọket naanị/pịa
ụgbọ elu data/ dọrọ
Dọọ
nlele ahụike na-arụ ọrụ
ọ dịghị
ee
ee
ee
Mepee nchọta
ngwa mgbakwunye mpụga
ọ dịghị
ee
ee
J.W.T.
ngwa mgbakwunye mpụga
ọ dịghị
ee
ọ dịghị
ndọtị
Lua/C
Lua/C
Lua/C++
ọ dịghị
Ntak-a
Nke a bụ ọrụ ntorobịa, enwere ọtụtụ ihe na-efu, ụfọdụ na mbido alfa. Ma zitere, nakwa n'ihi ntorobịa ya, na-etolite ngwa ngwa ma nweelarị ọtụtụ atụmatụ na-adọrọ mmasị: nhazi ike, ọtụtụ ihe nzacha dị njikere, interface dị mfe maka ide ihe nzacha gị.
Mpaghara ngwa na-eso nke a, mana nke mbụ enwere ụzọ mgbochi abụọ:
- Nkwụghachi azụ static.
Nke bụ eziokwu bụ na n'oge a zitere enweghị nkwado caching. Ụmụ okorobịa Google na-anwale nke a
Maka ugbu a, jiri nginx maka statics.
- Nhazi static.
Ị nwere ike iji ya, ma zitere Nke ahụ abụghị ihe e kere ya. Agaghị ekpughe atụmatụ dị na nhazi kwụ ọtọ. Enwere ọtụtụ oge:
Mgbe ị na-edezi nhazi na yaml, ị ga-ehie ụzọ, baara ndị mmepe mba maka ikwu okwu ma chee na nginx/haproxy configs, n'agbanyeghị na ha ahazibeghị ya, dị nkenke. Nke ahụ bụ isi ihe. E mepụtara nhazi nke Nginx na Haproxy maka iji aka dezie, na zitere maka ọgbọ site na koodu. A kọwara nhazi niile n'ime
Canary, b/g ntinye ọnọdụ na ọtụtụ ndị ọzọ ka a na-emejuputa atumatu naanị na nhazi siri ike. Anaghị m ekwu na enweghị ike ịme nke a n'ụzọ ziri ezi, anyị niile na-eme ya. Ma maka nke a, ị ga-etinye na crutches, na nke ọ bụla nke balancers, na zitere gụnyere.
Ọrụ ndị onye nnọchi anya dị mkpa maka:
- Ịhazi okporo ụzọ na usoro mgbagwoju anya na nke siri ike. Nke a gụnyere ntupu ọrụ, mana ọ bụghị naanị ya.
- Mkpa maka ọrụ ịchụ nta nkesa, ikike mgbagwoju anya ma ọ bụ ọrụ ndị ọzọ dị na ya zitere site na igbe ma ọ bụ mejuputa ya nke ọma, mana na nginx/haproxy, ị ga-achọ ka lua na plugins gbara gị gburugburu.
Abụọ, ọ bụrụ na ọ dị mkpa, na-enye ọrụ dị elu.
Olee otú nke a na-arụ ọrụ
A na-ekesa onye ozi na ọnụọgụ abụọ naanị ka onyonyo docker. Onyonyo a enweelarị ihe atụ nke nhazi static. Mana anyị nwere mmasị na ya naanị maka ịghọta usoro ahụ.
envoy.yaml static nhazi
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
Nhazi dị omimi
Kedu nsogbu anyị na-achọ ngwọta ya? Ịnweghị ike ibugharị nhazi nhazi nke ibu n'okpuru ibu; nsogbu "obere" ga-ebili:
- Nkwenye nhazi.
Nhazi ahụ nwere ike buru ibu, ọ nwere ike buru ibu, ọ bụrụ na anyị ebufe ya n'otu oge, ohere nke njehie ebe na-abawanye.
- Njikọ ogologo ndụ.
Mgbe ị na-amalite onye na-ege ntị ọhụrụ, ịkwesịrị ilekọta njikọ ndị na-agba ọsọ na nke ochie; ọ bụrụ na mgbanwe na-eme ugboro ugboro ma enwere njikọ dị ogologo, ị ga-achọ nkwekọrịta. Ndewo, kubernetes ingress na nginx.
- Nyocha ahụike na-arụ ọrụ.
Ọ bụrụ na anyị nwere nlele ahụike na-arụsi ọrụ ike, anyị kwesịrị ịlele ha niile na nhazi ọhụrụ tupu izipu okporo ụzọ. Ọ bụrụ na e nwere ọtụtụ n'elu, nke a na-ewe oge. Ndewo haproxy.
Kedu ka esi edozi nke a zitereSite n'ịkwado nhazi ahụ n'ụzọ dị egwu, dị ka ụdị ọdọ mmiri si dị, ị nwere ike kewaa ya n'ime akụkụ dị iche iche ma ghara ịmaliteghachi akụkụ nke na-agbanwebeghị. Dịka ọmụmaatụ, onye na-ege ntị, nke dị oke ọnụ iji reinitialize na adịkarịghị agbanwe.
Nhazi zitere (site na faịlụ dị n'elu) nwere ihe ndị a:
- na-ege ntị - onye na-ege ntị kwụgidere na otu ip/ọdụ ụgbọ mmiri
- mebere onye ọbịa - mebere ọbịa site na ngalaba aha
- ụzọ - itule iwu
- ụyọkọ - otu nke upstreams nwere itule parameters
- njedebe - adreesị ihe atụ elu
Nke ọ bụla n'ime ụlọ ọrụ ndị a gbakwunyere ụfọdụ ndị ọzọ nwere ike jupụta n'ike n'ike; maka nke a, nhazi ahụ na-akọwapụta adreesị ọrụ site na ebe a ga-enweta nhazi ahụ. Ọrụ ahụ nwere ike ịbụ REST ma ọ bụ gRPC, gRPC ka mma.
Akpọrọ aha ọrụ ndị a otu: LDS, VHDS, RDS, CDS na EDS. Ị nwere ike ijikọta nhazi static na ike dị ike, yana njedebe na enweghị ike ịkọwapụta akụ na-agbanwe agbanwe na nke static.
Maka ọtụtụ ọrụ, o zuru ezu iji mejuputa ọrụ atọ ikpeazụ, a na-akpọ ha ADS (Aggregated Discovery Service), maka
Nhazi ahụ na-ewere ụdị a:
envoy.yaml nhazi ike
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
Na mmalite zitere na nhazi a, ọ ga-ejikọta na ụgbọ elu njikwa wee gbalịa ịrịọ nhazi RDS, CDS na EDS. A kọwara etu usoro mmekọrịta si eme
Na mpempe, zitere na-eziga arịrịọ na-egosi ụdị akụ a na-arịọ, ụdị na paramita nke ọnụ. Na nzaghachi, ọ na-enweta akụrụngwa na ụdị; ọ bụrụ na ụdị dị na ụgbọ elu njikwa agbanwebeghị, ọ naghị azaghachi.
Enwere nhọrọ mmekọrịta 4:
- Otu iyi gRPC maka ụdị akụrụngwa niile, a na-eziga ọkwa zuru oke nke akụrụngwa ahụ.
- iyi dị iche iche, ọnọdụ zuru oke.
- Otu iyi, ọnọdụ mmụba.
- iyi dị iche iche, ọnọdụ agbakwunyere.
Mmụba xDS na-enye gị ohere ibelata okporo ụzọ n'etiti ụgbọ elu njikwa na zitere, nke a dị mkpa maka nnukwu nhazi. Mana ọ na-akpaghasị mmekọrịta ahụ; arịrịọ ahụ nwere ndepụta akụrụngwa maka ịwepu aha na ịdenye aha.
Ihe atụ anyị na-eji ADS - otu iyi maka RDS, CDS, EDS na ọnọdụ anaghị abawanye. Iji mee ka ọnọdụ mgbakwunye, ịkwesịrị ịkọwapụta api_type: DELTA_GRPC
Ebe ọ bụ na arịrịọ ahụ nwere paramita ọnụ ọnụ, anyị nwere ike izipu akụrụngwa dị iche iche na ụgbọ elu njikwa maka oge dị iche iche zitere, nke a dị mma maka iwulite ntupu ọrụ.
Kpoo ahụ ọkụ
Na zitere na mmalite ma ọ bụ mgbe ị na-enweta nhazi ọhụrụ site na njikwa-ụgbọ elu, a na-amalite usoro ikpo ọkụ ihe onwunwe. E kewara ya na ikpo ọkụ na-ege ntị na ikpo ọkụ. Emere nke mbụ mgbe enwere mgbanwe na RDS/LDS, nke abụọ mgbe CDS/EDS. Nke a pụtara na ọ bụrụ naanị n'elu mmiri na-agbanwe, a naghị emepụtaghachi onye na-ege ntị.
N'oge usoro ikpo ọkụ, a na-atụ anya ihe ndị dabere na ụgbọ elu na-achịkwa n'oge oge nkwụsị. Ọ bụrụ na oge agwụla, mmalite agaghị aga nke ọma na onye na-ege ntị ọhụrụ agaghị amalite ige ntị na ọdụ ụgbọ mmiri.
Usoro mmalite: EDS, CDS, nlele ahụike nọ n'ọrụ, RDS, LDS. Site na agbanyere nyocha ahụike na-arụ ọrụ, okporo ụzọ ga-arịgo elu naanị mgbe otu nyocha ahụike na-aga nke ọma.
Ọ bụrụ na emegharịrị onye na-ege ntị, nke ochie na-abanye na steeti DRAIN, a ga-ehichapụ ya ma emechiri njikọ niile ma ọ bụ oge agwụla. --drain-time-s
, ndabara 10 nkeji.
Ka ga-aga n'ihu.
isi: www.habr.com