Ro-ràdh
Tha sinn a-staigh
В
Le Istio 1.1, bidh an neach-ionaid ag ithe timcheall air 0,6 vCPU (coraidean brìgheil) gach 1000 iarrtas gach diog.
Airson a’ chiad roinn anns a’ mhogal seirbheis (2 proxies air gach taobh den cheangal), bidh 1200 cores againn dìreach airson an neach-ionaid, aig ìre millean iarrtas gach diog. A rèir àireamhair cosgais Google, tha e ag obrachadh a-mach gu bhith timcheall air $ 40 / mìos / cridhe airson rèiteachadh n1-standard-64
, is e sin, cosgaidh an roinn seo leis fhèin barrachd air 50 mìle dolar gach mìos airson 1 millean iarrtas gach diog.
Ivan Sim (
A rèir coltais, àrdaichidh luachan-istio-test.yaml iarrtasan CPU gu mòr. Ma tha mi air mo matamataigs a dhèanamh ceart, feumaidh tu timcheall air 24 cores CPU airson a’ phannal smachd agus 0,5 CPU airson gach neach-ionaid. Chan eil an uiread sin agam. Nì mi na deuchainnean a-rithist nuair a thèid barrachd ghoireasan a thoirt dhomh.
Bha mi airson faicinn dhomh fhìn dè cho coltach ‘s a tha coileanadh Istio ri mogal seirbheis stòr fosgailte eile:
Stàladh mogal seirbheis
An toiseach, chuir mi a-steach e ann am brabhsair
$ supergloo init
installing supergloo version 0.3.12
using chart uri https://storage.googleapis.com/supergloo-helm/charts/supergloo-0.3.12.tgz
configmap/sidecar-injection-resources created
serviceaccount/supergloo created
serviceaccount/discovery created
serviceaccount/mesh-discovery created
clusterrole.rbac.authorization.k8s.io/discovery created
clusterrole.rbac.authorization.k8s.io/mesh-discovery created
clusterrolebinding.rbac.authorization.k8s.io/supergloo-role-binding created
clusterrolebinding.rbac.authorization.k8s.io/discovery-role-binding created
clusterrolebinding.rbac.authorization.k8s.io/mesh-discovery-role-binding created
deployment.extensions/supergloo created
deployment.extensions/discovery created
deployment.extensions/mesh-discovery created
install successful!
Chleachd mi SuperGloo oir tha e a’ dèanamh bootstrapping mogal na seirbheis gu math nas fhasa. Cha robh agam ri mòran a dhèanamh. Cha bhith sinn a’ cleachdadh SuperGloo ann an cinneasachadh, ach tha e air leth freagarrach airson a leithid de ghnìomh. B’ fheudar dhomh gu litireil òrdugh no dhà a chleachdadh airson gach mogal seirbheis. Chleachd mi dà bhuidheann airson aonaranachd - aon airson Istio agus Linkerd.
Chaidh an deuchainn a dhèanamh air Google Kubernetes Engine. Chleachd mi Kubernetes 1.12.7-gke.7
agus cruinneachadh de nodan n1-standard-4
le sgèileadh nód fèin-ghluasadach (4 aig a’ char as lugha, 16 aig a’ char as àirde).
An uairsin chuir mi a-steach an dà mhogal seirbheis bhon loidhne-àithne.
A 'chiad Linkerd:
$ supergloo install linkerd --name linkerd
+---------+--------------+---------+---------------------------+
| INSTALL | TYPE | STATUS | DETAILS |
+---------+--------------+---------+---------------------------+
| linkerd | Linkerd Mesh | Pending | enabled: true |
| | | | version: stable-2.3.0 |
| | | | namespace: linkerd |
| | | | mtls enabled: true |
| | | | auto inject enabled: true |
+---------+--------------+---------+---------------------------+
An uairsin Istio:
$ supergloo install istio --name istio --installation-namespace istio-system --mtls=true --auto-inject=true
+---------+------------+---------+---------------------------+
| INSTALL | TYPE | STATUS | DETAILS |
+---------+------------+---------+---------------------------+
| istio | Istio Mesh | Pending | enabled: true |
| | | | version: 1.0.6 |
| | | | namespace: istio-system |
| | | | mtls enabled: true |
| | | | auto inject enabled: true |
| | | | grafana enabled: true |
| | | | prometheus enabled: true |
| | | | jaeger enabled: true |
+---------+------------+---------+---------------------------+
Thug an lùb tubaist beagan mhionaidean, agus an uairsin shocraich na pannalan smachd.
(Nòta: Chan eil SuperGloo a’ toirt taic ach do Istio 1.0.x airson a-nis. Rinn mi a-rithist an deuchainn le Istio 1.1.3, ach cha do mhothaich mi diofar sam bith.)
A’ stèidheachadh cleachdadh fèin-ghluasadach Istio
Gus toirt air Istio an sidecar Envoy a chuir a-steach, bidh sinn a’ cleachdadh an inneal-stealladh càr-taobh - MutatingAdmissionWebhook
. Cha bhith sinn a’ bruidhinn mu dheidhinn san artaigil seo. Leig leam dìreach a ràdh gur e rianadair a tha seo a bhios a ’cumail sùil air ruigsinneachd a h-uile pod ùr agus gu dinamach a’ cur sidecar agus initContainer, a tha an urra ri gnìomhan iptables
.
Sgrìobh sinne aig Shopify an rianadair ruigsinneachd againn fhèin gus sidecars a chuir an gnìomh, ach airson a’ shlat-tomhais seo chleachd mi an rianadair a thig le Istio. Bidh an rianadair a’ stealladh sidecars gu bunaiteach nuair a tha ath-ghoirid san namespace istio-injection: enabled
:
$ kubectl label namespace irs-client-dev istio-injection=enabled
namespace/irs-client-dev labeled
$ kubectl label namespace irs-server-dev istio-injection=enabled
namespace/irs-server-dev labeled
A’ stèidheachadh cleachdadh fèin-ghluasadach Linkerd
Gus stèidheachadh Linkerd sidecar a stèidheachadh, bidh sinn a’ cleachdadh notaichean (chuir mi ris le làimh iad tro kubectl edit
):
metadata:
annotations:
linkerd.io/inject: enabled
$ k edit ns irs-server-dev
namespace/irs-server-dev edited
$ k get ns irs-server-dev -o yaml
apiVersion: v1
kind: Namespace
metadata:
annotations:
linkerd.io/inject: enabled
name: irs-server-dev
spec:
finalizers:
- kubernetes
status:
phase: Active
Istio Sgàineadh Tolerance Simulator
Thog sinn simuladair fulangas locht ris an canar Istio gus deuchainn a dhèanamh air trafaic gun samhail dha Shopify. Bha feum againn air inneal gus topology àbhaisteach a chruthachadh a bhiodh a’ riochdachadh cuibhreann sònraichte den ghraf seirbheis againn, air a dhealbhadh gu dinamach gus eallach obrach sònraichte a mhodaladh.
Tha bun-structar Shopify fo luchd trom aig àm reic flash. Aig an aon àm, Shopify
Bha sinn ag iarraidh gum biodh an simuladair fulangas againn a’ modaladh sruthan obrach a tha a rèir na topologies agus na h-uallaichean obrach a tha air a dhol thairis air bun-structar Shopify san àm a dh’ fhalbh. Is e am prìomh adhbhar airson a bhith a’ cleachdadh mogal seirbheis gu bheil feum againn air earbsachd agus fulangas sgàinidhean aig ìre an lìonraidh, agus tha e cudromach dhuinne gum bi am mogal seirbheis a’ dèiligeadh gu h-èifeachdach ri luchdan a chuir dragh air seirbheisean roimhe seo.
Aig cridhe an simuladair fulangas locht tha nód neach-obrach, a tha ag obair mar nód mogal seirbheis. Faodar nód an neach-obrach a rèiteachadh gu statach aig àm tòiseachaidh no gu dinamach tro REST API. Bidh sinn a’ cleachdadh rèiteachadh fiùghantach de nodan luchd-obrach gus sruthan-obrach a chruthachadh ann an cruth deuchainnean ais-tharraing.
Seo eisimpleir de leithid de phròiseas:
- Bidh sinn a’ cur air bhog 10 frithealaichean mar
bar
seirbheis a thilleas freagairt200/OK
às deidh 100 ms. - Bidh sinn a’ cur air bhog 10 teachdaichean - bidh gach fear a’ cur 100 iarrtas gach diog gu
bar
. - Gach 10 diog bidh sinn a’ toirt air falbh 1 frithealaiche agus a’ cumail sùil air mearachdan
5xx
air an neach-dèiligidh.
Aig deireadh an t-sruth-obrach, bidh sinn a’ sgrùdadh nan logaichean agus na meatrach agus a’ dèanamh cinnteach an deach an deuchainn seachad. San dòigh seo bidh sinn ag ionnsachadh mu choileanadh ar mogal seirbheis agus a’ ruith deuchainn ais-tharraing gus ar barailean mu fhulangas lochdan a dhearbhadh.
(Nòta: Tha sinn a’ smaoineachadh mu bhith a’ fosgladh an simuladair fulangas locht Istio gu fosgailte, ach chan eil sinn deiseil airson sin a dhèanamh fhathast.)
Samhlaiche fulangas locht Istio airson slat-tomhais mogal seirbheis
Tha sinn a’ stèidheachadh grunn nodan obrach den simuladair:
irs-client-loadgen
: 3 mac-samhail a chuireas 100 iarrtas gach diog gachirs-client
.irs-client
: 3 mac-samhail a gheibh an t-iarrtas, feitheamh 100ms agus cuir air adhart an t-iarrtas guirs-server
.irs-server
: 3 mac-samhail a thilleas200/OK
às deidh 100 ms.
Leis an rèiteachadh seo, is urrainn dhuinn sruth trafaic seasmhach a thomhas eadar 9 puingean crìochnachaidh. Càraichean taobh a-staigh irs-client-loadgen
и irs-server
faigh 100 iarrtas gach diog, agus irs-client
- 200 (a-steach is a-mach).
Bidh sinn a’ cumail sùil air cleachdadh ghoireasan tro
Toraidhean
Pannalan smachd
An toiseach, rinn sinn sgrùdadh air caitheamh CPU.
Pannal smachd Linkerd ~ 22 millicore
Istio pannal smachd: ~ 750 millicore
Bidh am pannal smachd Istio a’ cleachdadh timcheall air 35 uair barrachd ghoireasan CPUseach Linkerd. Gu dearbh, tha a h-uile càil air a chuir a-steach gu bunaiteach, agus bidh istio-telemetry ag ithe mòran de ghoireasan pròiseasar an seo (faodar a chiorramachadh le bhith a ’dì-chomasachadh cuid de dhleastanasan). Ma bheir sinn air falbh am pàirt seo, gheibh sinn fhathast barrachd air 100 millicores, is e sin 4 uair a bharrachdseach Linkerd.
Sidecar proxy
Rinn sinn deuchainn an uairsin air cleachdadh neach-ionaid. Bu chòir dàimh sreathach a bhith ann leis an àireamh de dh'iarrtasan, ach airson gach taobh-chàr tha beagan os cionn a 'toirt buaidh air an lùb.
Linkerd: ~ 100 millicores airson teachdaiche irs, ~ 50 millicores airson irs-client-loadgen
Tha coltas loidsigeach air na toraidhean, leis gu bheil neach-ionaid an neach-dèiligidh a’ faighinn a dhà uimhir de thrafaig ris an neach-ionaid loadgen: airson gach iarrtas a-mach bho loadgen, tha aon neach a’ tighinn a-steach agus aon a-mach.
Istio / Envoy: ~ 155 millicores airson ir-client, ~ 75 millicores airson iir-client-loadgen
Chì sinn toraidhean co-chosmhail airson sidecars Istio.
Ach san fharsaingeachd, bidh luchd-ionaid Istio/Envoy ag ithe timcheall air 50% barrachd ghoireasan CPUseach Linkerd.
Chì sinn an aon sgeama air taobh an fhrithealaiche:
Linkerd: ~ 50 millicore airson iers-server
Istio / Envoy: ~ 80 millicores airson iers-server
Air taobh an fhrithealaiche, bidh sidecar Istio/Envoy ag ithe timcheall air 60% barrachd ghoireasan CPUseach Linkerd.
co-dhùnadh
Bidh an neach-ionaid Istio Envoy ag ithe 50 +% barrachd CPU na Linkerd air an eallach obrach samhlachail againn. Bidh pannal smachd Linkerd ag ithe mòran nas lugha de ghoireasan na Istio, gu sònraichte airson na prìomh phàirtean.
Tha sinn fhathast a’ beachdachadh air mar as urrainn dhuinn na cosgaisean sin a lughdachadh. Ma tha beachdan agad, feuch an roinn thu!
Source: www.habr.com