Fa'afetai! O se tala puupuu lea e tali ai fesili: "O le a le avefeʻau?", "Aisea e manaʻomia ai?" ma "o fea e amata ai?".
O le a lenei mea
O le avefe'au o se paleni L4-L7 na tusia i le C ++, e taulaʻi i le maualuga o le faʻatinoga ma le avanoa. I le tasi itu, o se mea lea o se faʻatusa o nginx ma haproxy, faʻatusatusa i le faʻatinoga ia i latou. I le isi itu, e sili atu le faʻaogaina i le microservice architecture ma e leai se mea e sili atu le leaga nai lo java ma alu paleni, pei o le zuul poʻo le traefik.
Faʻatusatusa laulau o haproxy / nginx / envoy, e le o fai mai o le mea moni atoatoa, ae tuʻuina atu se ata lautele.
nginx
haproxy
auina
traffik
fetu ile github
11.2k/fa'ata
1.1k/fa'ata
12.4k
27.6k
tusia i totonu
C
C
C ++
go
API
leai
na'o le socket/uomi
vaalele / toso
toso
toaga siaki soifua maloloina
leai
ioe
ioe
ioe
Tatala su'ega
fa'apipi'i fafo
leai
ioe
ioe
Ua ta'ua e J.W.T.
fa'apipi'i fafo
leai
ioe
leai
faʻaseʻe
Lua/C
Lua/C
Lua/C++
leai
O le a mo
O se poloketi talavou lenei, e tele mea o loʻo misi, o nisi i le amataga o le alpha. Ae auina, faʻapea foʻi ona o lona talavou, o loʻo faʻatupuina vave ma ua uma ona i ai le tele o mea mataʻina: faʻatulagaina faʻamalosi, tele filiga saunia, se faʻaoga faigofie mo le tusiaina o au lava filiga.
O vaega o le talosaga e mulimuli mai i lenei, ae muamua e 2 antipatterns:
- Toe solomuli.
O le mea moni e faapea i le taimi nei i totonu auina leai se fesoasoani fa'apipi'i. O lo'o taumafai tagata Google i lenei mea
Mo le taimi nei, faʻaaoga le nginx mo statics.
- Fa'atonu tulaga.
E mafai ona e faʻaaogaina, ae auina E le o le mea lena na foafoaina ai. E le fa'aalia uiga o lo'o i totonu o se fa'atonuga. E tele taimi:
Pe a faʻasaʻo le faʻatulagaga i le yaml, o le a e sese, otegia le au atiaʻe mo le tautala ma mafaufau o le nginx / haproxy configs, e ui ina itiiti le faʻatulagaina, e sili atu ona puʻupuʻu. O le manatu lena. O le faʻatulagaina o Nginx ma Haproxy na faia mo le faʻasaʻoina e lima, ma auina mo tupulaga mai le code. O loʻo faʻamatalaina atoa le faʻatulagaga i totonu
Canary, b/g deployment scenario ma le tele o isi mea e masani ona faʻatinoina i se faʻatulagaga malosi. Ou te le o fai atu e le mafai ona faia lenei mea, tatou te faia uma lava. Ae mo lenei mea e tatau ona e tuʻu i luga o tootoo, i soʻo se paleni, i totonu auina aofia ai.
Galuega e mana'omia ai le Avefe'au:
- Fa'apaleni ta'avale i faiga lavelave ma le malosi. E aofia ai le 'au'aunaga mesh, ae e le na'o le tasi.
- Le mana'omia mo le tufatufaina atu o galuega faatino, fa'atagaga lavelave po'o isi galuega o lo'o avanoa i totonu auina i fafo o le atigipusa poʻo le faʻatinoina lelei, ae i le nginx / haproxy e tatau ona e siosiomia e lua ma faʻalavelave faʻapipiʻi.
O mea uma e lua, pe a manaʻomia, tuʻuina atu faʻatinoga maualuga.
E faapefea e lenei galuega
E tufatufaina atu le avefeau i binaries na o se ata docker. O le ata ua uma ona i ai se faʻataʻitaʻiga o se faʻatulagaina faʻamau. Ae matou te fiafia i ai mo na o le malamalama i le fausaga.
envoy.yaml static configuration
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
Fa'atonuga malosi
O le a le faafitauli o loo tatou sailia mo se fofo? E le mafai ona e toe faʻapipiʻiina le faʻatulagaina o le paleni o uta i lalo o le uta; "laʻi" faʻafitauli o le a tulaʻi mai:
- Fa'amautu fa'amaonia.
O le config e mafai ona tele, e mafai ona telē tele, afai tatou te faʻateleina uma i le taimi e tasi, e faʻateleina le avanoa o se mea sese i se mea.
- So'oga umi.
Pe a amataina se tagata faʻalogo fou, e tatau ona e vaʻaia fesoʻotaʻiga o loʻo faʻaogaina i luga o le mea tuai; afai e tupu soo suiga ma e iai ni fesoʻotaʻiga umi, e tatau ona e suʻeina se maliega. Talofa, kubernetes ingress i le nginx.
- Su'ega fa'alesoifua maloloina.
Afai e iai a matou siaki fa'alesoifua maloloina, e mana'omia ona siaki fa'alua uma i le config fou a'o le'i tu'uina atu ta'avale. Afai e tele alia i luga, e umi se taimi. Talofa haproxy.
E faapefea ona foia lenei mea i auinaE ala i le faʻapipiʻiina o le config dynamically, e tusa ai ma le faʻataʻitaʻiga vaitaele, e mafai ona e vaevaeina i ni vaega eseese ma e le toe amataina le vaega e leʻi suia. Mo se faʻataʻitaʻiga, o se faʻalogo, lea e taugata e toe faʻafouina ma e seasea ona suia.
Fetuunaiga auina (mai le faila i luga) o loʻo i ai faʻalapotopotoga nei:
- faʻalogo - tagata fa'alogologo o lo'o tautau i luga o se ip/taulaga fa'apitoa
- 'au fa'akomepiuta - host virtual ile igoa ole igoa
- auala - tulafono paleni
- fuifui - o se vaega o alia'e i luga ma fa'atatau paleni
- pito i luga - tuatusi fa'ata'ita'iga i luga
O nei faʻalapotopotoga taʻitasi faʻatasi ai ma isi e mafai ona faʻatumu ma le malosi; mo lenei mea, o le faʻatulagaga e faʻamaonia ai le tuatusi o le tautua mai le mea o le a maua ai le config. O le tautua e mafai ona REST po'o gRPC, gRPC e sili.
E ta'u igoa o auaunaga: LDS, VHDS, RDS, CDS ma EDS. E mafai ona e tu'ufa'atasia le fa'atulagaina ma le fa'amalosi, fa'atasi ai ma le fa'atapula'aina e le mafai ona fa'ailoa mai se puna'oa malosi i se mea fa'amau.
Mo le tele o galuega, ua lava le faʻatinoina o auaunaga mulimuli e tolu, e taʻua o le ADS (Aggregated Discovery Service), mo
O le fa'atulagaga e fai le fomu nei:
envoy.yaml fa'atulagaina fa'amalosi
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 le amataga auina faatasi ai ma lenei config, o le a fesootai i le pulea-vaalele ma taumafai e talosagaina le RDS, CDS ma EDS faatulagaga. O loʻo faʻamatalaina pe faʻafefea ona tupu le faʻagasologa o fegalegaleaiga
I se faapuupuuga, auina auina atu se talosaga e faailoa mai ai le ituaiga o punaoa o loʻo talosagaina, le faʻasologa ma faʻamaufaʻailoga o le node. I le tali atu, na te mauaina se punaoa ma se faʻamatalaga; afai e leʻi suia le faʻasologa i luga o le vaʻalele faʻatonutonu, e le tali mai.
E 4 avanoa fa'afeso'ota'i:
- Tasi le gRPC stream mo ituaiga uma o punaoa, o le tulaga atoa o le punaoa e auina atu.
- Vaitafe eseese, tulaga atoatoa.
- Tasi alia, tulaga fa'aopoopo.
- Vaitafe eseese, tulaga fa'aopoopo.
Faʻaopoopoga xDS faʻatagaina oe e faʻaitiitia feoaiga i le va o le vaʻalele faʻatonutonu ma auina, e talafeagai lenei mo faʻasalalauga tetele. Ae e faʻalavelaveina le fegalegaleaiga; o le talosaga o loʻo i ai se lisi o punaoa mo le unsubscribe ma le lesitala.
O la matou fa'ata'ita'iga e fa'aogaina le ADS - tasi le vaitafe mo RDS, CDS, EDS ma le le fa'aopoopoina. Ina ia mafai ona faʻatupuina faʻaopoopoga, e tatau ona e faʻamaonia api_type: DELTA_GRPC
Talu ai o le talosaga o loʻo i ai faʻamaufaʻailoga node, e mafai ona matou auina atu punaoa eseese i le vaʻalele faʻatonutonu mo tulaga eseese auina, e faigofie lenei mo le fausiaina o se masini tautua.
Faamasani mai
i auina i le amataga poʻo le taimi e maua ai se faʻatulagaga fou mai le vaʻalele faʻatonutonu, e faʻalauiloa le faagasologa o le mafanafana o punaoa. Ua vaevaeina i le mafanafana o le tagata faalogologo ma le mafanafana o le fuifui. O le muamua e fa'alauiloa pe a iai suiga ile RDS/LDS, ole lona lua ile CDS/EDS. O lona uiga afai e na'o le pito i luga e sui, e le toe faia le tagata fa'alogologo.
I le faagasologa o le mafanafana, o punaoa faʻalagolago e faʻamoemoeina mai le vaʻalele faʻatonutonu i le taimi e malolo ai. A o'o mai le taimi fa'agata, o le a le manuia le amataga ma o le tagata fa'alogo fou o le a le amata ona fa'alogo i luga o le uafu.
Poloaiga amata: EDS, CDS, siaki soifua maloloina malosi, RDS, LDS. A fa'agaoioi su'esu'ega fa'alesoifua maloloina, e fa'ato'a alu le ta'avale i luga pe a mae'a se siaki fa'alesoifua maloloina manuia.
Afai na toe faia le tagata fa'alogologo, e alu le mea tuai i le DRAIN state ma o le a tapeina pe a uma ona tapunia uma feso'ota'iga pe muta le taimi --drain-time-s
, fa'aletonu 10 minute.
Ia toe faauau.
puna: www.habr.com