Beannachtaí! Is alt gearr é seo a fhreagraíonn na ceisteanna: “cad is toscaire ann?”, “cén fáth a bhfuil gá leis?” agus "cá háit le tosú?".
Cad é seo
Is cothromóir L4-L7 é Toscaire atá scríofa i C++, dírithe ar ardfheidhmíocht agus infhaighteacht. Ar thaobh amháin, is analóg é seo ar bhealach éigin de nginx agus haproxy, atá inchomparáide ó thaobh feidhmíochta leo. Ar an láimh eile, tá sé dírithe níos mó ar ailtireacht microservice agus níl feidhmiúlacht aige níos measa ná java and go balancers, mar shampla zuul nó traefik.
Tábla comparáide haproxy/nginx/toscaire, ní mhaíonn sé gurb é an fhírinne iomlán é, ach tugann sé pictiúr ginearálta.
nginx
haprocsa
toscaire
traefik
réaltaí ar github
11.2k/scáthán
1.1k/scáthán
12.4k
27.6k
scríofa i
C
C
C + +
go
API
aon
soicéad amháin/bhrú
eitleán sonraí/tarraingt
tharraingt
seiceáil sláinte gníomhach
aon
yes
yes
yes
Oscailt rianaithe
breiseán seachtrach
aon
yes
yes
J.W.T.
breiseán seachtrach
aon
yes
aon
síneadh
Lua/C
Lua/C
Lua/C++
aon
Cad le haghaidh
Is tionscadal óg é seo, tá go leor rudaí in easnamh, cuid acu go luath alfa. Ach toscaire, freisin mar gheall ar a óige, ag forbairt go tapa agus cheana féin tá go leor gnéithe suimiúla: cumraíocht dinimiciúil, go leor scagairí réidh-déanta, comhéadan simplí do scríobh do scagairí féin.
Leanann réimsí iarratais uaidh seo, ach ar dtús tá 2 fhrithpatrún:
- Reoil statach.
Is é fírinne an scéil go bhfuil i láthair na huaire i toscaire gan tacaíocht taisce. Tá na guys Google ag baint triail as seo
Go dtí seo, bain úsáid as nginx le haghaidh statach.
- Cumraíocht statach.
Is féidir leat é a úsáid, ach toscaire Ní mar sin a cruthaíodh é. Ní nochtfar gnéithe i gcumraíocht statach. Tá go leor chuimhneacháin ann:
Nuair a bheidh tú ag déanamh eagarthóireachta ar an gcumraíocht in yaml, beidh dul amú ort, cuir an-bhéim ar na forbróirí as briathra agus sílim go bhfuil na cumraíochtaí nginx/haproxy, cé nach bhfuil siad chomh struchtúrtha, níos gonta. Sin é an pointe. Cruthaíodh cumraíocht Nginx agus Haproxy le haghaidh eagarthóireacht de láimh, agus toscaire le haghaidh giniúna ó chód. Tá cur síos ar an chumraíocht iomlán i
Is i gcumraíocht dhinimiciúil amháin a chuirtear cásanna imscartha Chanáracha, b/g agus go leor eile i bhfeidhm de ghnáth. Níl mé ag rá nach féidir é seo a dhéanamh go statach, déanaimid go léir é. Ach le haghaidh seo ní mór duit a chur ar crutches, in aon cheann de na balancers, i toscaire san áireamh.
Tascanna a bhfuil Toscaire fíor-riachtanach ina leith:
- Cothromú tráchta i gcórais chasta agus dhinimiciúla. Áirítear leis seo an mogalra seirbhíse, ach ní gá gurb é an t-aon cheann é.
- An gá atá le feidhmiúlacht rianaithe dáilte, údarú casta nó feidhmiúlacht eile atá ar fáil i toscaire amach as an mbosca nó curtha i bhfeidhm go caothúil, ach i nginx/haproxy ní mór duit a bheith timpeallaithe ag lua agus forlíontáin amhrasacha.
Soláthraíonn an dá cheann, más gá, ardfheidhmíocht.
Conas a oibríonn seo
Ní dhéantar Toscaire a dháileadh i ndénártha ach mar íomhá docker. Tá sampla de chumraíocht statach san íomhá cheana féin. Ach tá suim againn ann ach amháin chun tuiscint a fháil ar an struchtúr.
cumraíocht statach 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
Cumraíocht dhinimiciúil
Cén fhadhb atá á lorg againn le réiteach? Ní féidir leat cumraíocht an chothromóra ualaigh a athlódáil faoi ualach; tiocfaidh fadhbanna “beaga” chun cinn:
- Bailíochtú cumraíochta.
Is féidir leis an config a bheith mór, is féidir é a bheith an-mhór, má táimid ró-ualach ar fad ag an am céanna, an seans earráid a mhéadú áit éigin.
- Naisc fadsaoil.
Agus éisteoir nua á thosú, ní mór duit aire a thabhairt do na naisc atá ag rith ar an seancheann; má tharlaíonn athruithe go minic agus go bhfuil naisc fhadtéarmacha ann, beidh ort comhréiteach a lorg. Dia duit, kubernetes isteach ar nginx.
- Seiceálacha sláinte gníomhacha.
Má tá seiceálacha sláinte gníomhacha againn, ní mór dúinn iad go léir a sheiceáil faoi dhó sa chumraíocht nua sula seolfar trácht. Má tá go leor in aghaidh srutha, tógann sé seo am. Dia duit haproxy.
Conas a réitítear é seo i toscaireTríd an config a luchtú go dinimiciúil, de réir an tsamhail linn snámha, is féidir leat é a roinnt ina chodanna ar leith agus gan an chuid nár athraigh a ath-thionscnamh. Mar shampla, éisteoir, atá costasach le hathinsint agus is annamh a athraíonn.
Cumraíocht toscaire (ón gcomhad thuas) na heintitis seo a leanas:
- éisteoir — éisteoir ar crochadh ar IP/port ar leith
- óstach fíorúil - óstach fíorúil de réir ainm fearainn
- bealach - riail chothromaíochta
- braisle — grúpa réamhtheachtacha le paraiméadair chothromaithe
- críochphointe — seoladh shampla in aghaidh an tsrutha
Is féidir gach ceann de na haonáin seo agus roinnt eile a líonadh isteach go dinimiciúil; chuige seo, sonraíonn an chumraíocht seoladh na seirbhíse óna bhfaighfear an chumraíocht. Is féidir leis an tseirbhís a bheith REST nó gRPC, is fearr gRPC.
Ainmnítear na seirbhísí faoi seach: LDS, VHDS, RDS, CDS agus EDS. Is féidir leat cumraíocht statach agus dhinimiciúil a chomhcheangal, leis an teorainn nach féidir acmhainn dhinimiciúil a shonrú in acmhainn statach.
I gcás fhormhór na dtascanna, is leor na trí sheirbhís dheireanacha a chur i bhfeidhm, tugtar ADS (Seirbhís Fionnachtana Comhiomlánaithe) orthu, le haghaidh
Tá an chumraíocht san fhoirm seo a leanas:
cumraíocht dhinimiciúil envoy.yaml
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
Ag am tosaithe toscaire Leis an gcumraíocht seo, nascfaidh sé leis an eitleán rialaithe agus déanfaidh sé iarracht cumraíocht RDS, CDS agus EDS a iarraidh. Déantar cur síos ar an gcaoi a dtarlaíonn an próiseas idirghníomhaíochta
I mbeagán focal, toscaire cuireann sé iarratas a léiríonn an cineál acmhainne atá á hiarraidh, an leagan agus paraiméadair an nód. Mar fhreagra, faigheann sé acmhainn agus leagan; mura bhfuil an leagan ar an eitleán rialaithe athraithe, ní fhreagraíonn sé.
Tá 4 rogha idirghníomhaíochta ann:
- Sruth amháin gRPC do gach cineál acmhainní, seoltar stádas iomlán na hacmhainne.
- Sruthanna ar leith, riocht iomlán.
- Sruth amháin, staid incriminteach.
- Sruthanna ar leith, staid incriminteach.
Ceadaíonn xDS incriminteach duit trácht a laghdú idir an eitleán rialaithe agus toscaire, tá sé seo ábhartha le haghaidh cumraíochtaí móra. Ach cuireann sé casta ar an idirghníomhaíocht; tá liosta acmhainní san iarratas chun díliostáil agus liostáil.
Úsáideann ár sampla ADS - sruth amháin le haghaidh RDS, CDS, EDS agus modh neamh-incriminteach. Chun mód incriminteach a chumasú, ní mór duit a shonrú api_type: DELTA_GRPC
Ós rud é go bhfuil paraiméadair nód san iarratas, is féidir linn acmhainní éagsúla a sheoladh chuig an eitleán rialaithe le haghaidh cásanna éagsúla toscaire, tá sé seo áisiúil chun mogalra seirbhíse a thógáil.
Te suas
Ar toscaire ag am tosaithe nó nuair a fhaigheann cumraíocht nua ón eitleán rialaithe, seoltar an próiseas téamh acmhainní. Tá sé roinnte ina warmup éisteoir agus warmup braisle. Seoltar an chéad cheann nuair a bhíonn athruithe ar RDS/LDS, agus seoltar an dara ceann nuair a bhíonn CDS/EDS. Ciallaíonn sé seo mura n-athraíonn ach sruthanna in aghaidh srutha, ní athchruthaítear an t-éisteoir.
Le linn an phróisis téimh, táthar ag súil le hacmhainní cleithiúnacha ón eitleán rialaithe le linn an ama istigh. Má tharlaíonn an teorainn ama, ní éireoidh leis an tosaithe agus ní thosóidh an t-éisteoir nua ag éisteacht ar an bport.
Ordú tosaigh: EDS, CDS, seiceáil gníomhach sláinte, RDS, LDS. Agus seiceálacha sláinte gníomhacha cumasaithe, ní rachaidh an trácht in aghaidh an tsrutha ach amháin tar éis seiceáil sláinte rathúil amháin.
Má athchruthaíodh an t-éisteoir, téann an seancheann isteach sa staid DRAIN agus scriosfar é nuair a dhúntar gach nasc nó nuair a théann an t-am istigh in éag --drain-time-s
, réamhshocraithe 10 nóiméad.
Le leanúint.
Foinse: will.com