Tagarmharc tomhaltais LAP do Istio agus Linkerd

Tagarmharc tomhaltais LAP do Istio agus Linkerd

Réamhrá

Tá muid isteach Shopify thosaigh sé ag úsáid Istio mar mhogalra seirbhíse. I bprionsabal, tá gach rud go breá, ach amháin i gcás rud amháin: tá sé daor.

В tagarmharcanna foilsithe do Istio a deir:

Le Istio 1.1, ídíonn an seachvótálaí tuairim is 0,6 vCPU (croíláir fhíorúla) in aghaidh 1000 iarratas in aghaidh an tsoicind.

Don chéad réigiún sa mhogalra seirbhíse (2 sheachvótálaí ar gach taobh den nasc), beidh 1200 croí againn díreach don seachfhreastalaí, ag ráta milliún iarratas in aghaidh an tsoicind. De réir áireamhán costais Google, oibríonn sé amach a bheith thart ar $40/month/core le haghaidh cumraíochta n1-standard-64, is é sin, cosnóidh an réigiún seo amháin níos mó ná 50 míle dollar in aghaidh na míosa dúinn le haghaidh 1 milliún iarratas in aghaidh an tsoicind.

Ivan Sim (Ivan Sim) amhairc i gcomparáid moilleanna mogaill seirbhíse anuraidh agus gheall sé a leithéid don chuimhne agus don phróiseálaí, ach níor oibrigh sé amach:

De réir dealraimh, méadóidh luachanna-istio-test.yaml iarratais LAP go mór. Má tá mo chuid matamaitice déanta agam i gceart, beidh thart ar 24 croíleacan LAP uait don phainéal rialaithe agus 0,5 LAP do gach seachfhreastalaí. Níl an oiread sin agam. Déanfaidh mé na trialacha arís nuair a leithdháilfear níos mó acmhainní dom.

Bhí mé ag iarraidh a fheiceáil dom féin cé chomh cosúil agus atá feidhmíocht Istio le mogalra seirbhíse foinse oscailte eile: Linkerd.

Suiteáil mogalra seirbhíse

Gcéad dul síos, shuiteáil mé é i mbraisle SárGloo:

$ 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!

Bhain mé úsáid as SuperGloo mar go ndéanann sé bootstrapping an mogalra seirbhíse i bhfad níos éasca. Ní raibh orm mórán a dhéanamh. Ní úsáidimid SuperGloo i dtáirgeadh, ach tá sé oiriúnach do thasc den sórt sin. Bhí orm cúpla ordú a úsáid go litriúil do gach mogalra seirbhíse. Bhain mé úsáid as dhá bhraisle le haghaidh aonrú - ceann an ceann do Istio agus Linkerd.

Rinneadh an turgnamh ar Google Kubernetes Engine. Bhain mé úsáid as Kubernetes 1.12.7-gke.7 agus linn de nóid n1-standard-4 le scálú nód uathoibríoch (íosmhéid 4, uasmhéid 16).

Ansin shuiteáil mé an dá mhogalra seirbhíse ón líne ordaithe.

An Chéad Nascóir:

$ 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 |
+---------+--------------+---------+---------------------------+

Ansin 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      |
+---------+------------+---------+---------------------------+

Thóg an lúb tuairteála cúpla nóiméad, agus ansin chobhsaigh na painéil rialaithe.

(Nóta: Ní thacaíonn SuperGloo ach le Istio 1.0.x faoi láthair. Rinne mé an turgnamh le Istio 1.1.3 arís, ach níor thug mé faoi deara aon difríocht shuntasach.)

Imscaradh Uathoibríoch Istio a shocrú

Chun an Toscaire taobhcharr a shuiteáil, bainimid úsáid as an injector taobhcharr - MutatingAdmissionWebhook. Ní bheidh muid ag caint faoi san Airteagal seo. Lig dom a rá gur rialtóir é seo a dhéanann monatóireacht ar rochtain gach pod nua agus go gcuireann sé taobhcharr agus initContainer leis, atá freagrach as tascanna iptables.

Scríobh muid ag Shopify ár rialtóir rochtana féin chun sidecars a chur i bhfeidhm, ach don tagarmharc seo d'úsáid mé an rialtóir a thagann le Istio. Instealladh an rialtóir taobhcharranna de réir réamhshocraithe nuair a bhíonn aicearra san ainmspás 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

Imscaradh uathoibríoch Linkerd a shocrú

Chun leabú Linkerd sidecar a shocrú, úsáidimid nótaí (chuir mé leis iad de láimh trí 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 Insamhlóir Caoinfhulaingt Locht

Thógamar insamhlóir lamháltais locht ar a dtugtar Istio chun triail a bhaint as trácht atá uathúil do Shopify. Bhí uirlis ag teastáil uainn chun topology saincheaptha a chruthú a léireodh cuid ar leith dár ngraf seirbhíse, agus é cumraithe go dinimiciúil chun ualaí oibre sonracha a shamhaltú.

Tá bonneagar Shopify faoi ualach trom le linn díolacháin splanc. Ag an am céanna, Shopify molann díoltóirí díolacháin den sórt sin a shealbhú níos minice. Tugann custaiméirí móra rabhadh uaireanta faoi dhíolachán splanc atá beartaithe. Déanann daoine eile iad a iompar ar ár son gan choinne ag am ar bith den lá nó den oíche.

Theastaigh uainn go ndéanfadh ár n-insamhlóir athléimneachta samhail ar shreafaí oibre a mheaitseálann na topologies agus na hualaí oibre a sháraigh bonneagar Shopify san am atá caite. Is é an príomhchuspóir a bhaineann le mogalra seirbhíse a úsáid ná go dteastaíonn iontaofacht agus lamháltas lochtanna ag leibhéal an líonra, agus tá sé tábhachtach dúinn go ndéileálann an mogalra seirbhíse go héifeachtach leis na hualaí a chuir isteach ar sheirbhísí roimhe seo.

Ag croílár an Insamhlóir lamháltais locht tá nód oibrithe, a fheidhmíonn mar nód mogalra seirbhíse. Is féidir an nód oibrithe a chumrú go statach ag am tosaithe nó go dinimiciúil trí API REST. Bainimid úsáid as cumraíocht dhinimiciúil nóid oibrithe chun sreafaí oibre a chruthú i bhfoirm tástálacha cúlchéimnithe.

Seo sampla de phróiseas den sórt sin:

  • Seolaimid 10 bhfreastalaí mar bar seirbhís a thugann freagra ar ais 200/OK tar éis 100 ms.
  • Seolaimid 10 gcliant - seolann gach ceann acu 100 iarratas in aghaidh an tsoicind chuig bar.
  • Gach 10 soicind bainimid 1 fhreastalaí agus déanaimid monatóireacht ar earráidí 5xx ar an gcliant.

Ag deireadh an tsreafa oibre, déanaimid scrúdú ar na logaí agus na méadrachtaí agus seiceáil an ritheadh ​​an tástáil. Ar an mbealach seo foghlaimímid faoi fheidhmíocht ár n-mhogaill seirbhíse agus reáchtálaimid tástáil aischéimnithe chun ár dtoimhdí faoi lamháltas lochtanna a thástáil.

(Nóta: Táimid ag smaoineamh ar fhoinsiú oscailte a dhéanamh ar an Insamhlóir lamháltais locht Istio, ach nílimid réidh é sin a dhéanamh go fóill.)

Istio Insamhlóir lamháltais locht le haghaidh tagarmharcáil mogalra seirbhíse

Táimid ag bunú roinnt nóid oibre den insamhlóir:

  • irs-client-loadgen: 3 mhacasamhail a sheolann 100 iarratas in aghaidh an tsoicind in aghaidh an irs-client.
  • irs-client: 3 mhacasamhail a fhaigheann an t-iarratas, fan 100ms agus cuir an t-iarratas ar aghaidh chuig irs-server.
  • irs-server: 3 macasamhail a fhilleann 200/OK tar éis 100 ms.

Leis an gcumraíocht seo, is féidir linn sreabhadh tráchta cobhsaí a thomhas idir 9 gcríochphointe. Taobhcharranna isteach irs-client-loadgen и irs-server 100 iarratas a fháil in aghaidh an tsoicind, agus irs-client - 200 (isteach agus amach).

Rianaimid úsáid acmhainní tríd Madra Sonraítoisc nach bhfuil cnuasach Prometheus againn.

Torthaí

Painéil rialaithe

Ar dtús, scrúdaíomar an tomhaltas LAP.

Tagarmharc tomhaltais LAP do Istio agus Linkerd
Painéal rialaithe Linkerd ~ 22 millicore

Tagarmharc tomhaltais LAP do Istio agus Linkerd
Painéal rialaithe: ~ 750 millicore

Úsáideann an painéal rialaithe Istio thart 35 uair níos mó acmhainní LAPná Linkerd. Ar ndóigh, tá gach rud suiteáilte de réir réamhshocraithe, agus ídíonn istio-teileiméadracht a lán acmhainní LAP anseo (is féidir é a dhíchumasú trí roinnt feidhmeanna a dhíchumasú). Má bhainimid an comhpháirt seo, gheobhaimid níos mó ná 100 millicear fós, .i 4 uair níos móná Linkerd.

seachfhreastalaí taobhcharr

Rinneamar tástáil ansin ar úsáid seachfhreastalaí. Ba cheart go mbeadh caidreamh líneach le líon na n-iarratas, ach le haghaidh gach taobhcharr tá roinnt lastuas a théann i bhfeidhm ar an gcuar.

Tagarmharc tomhaltais LAP do Istio agus Linkerd
Linkerd: ~ 100 millicores le haghaidh cliant-eirí, ~ 50 millicores le haghaidh ieir-cliant-loadgen

Tá cuma loighciúil ar na torthaí, toisc go bhfaigheann seachfhreastalaí an chliaint dhá oiread tráchta agus an seachfhreastalaí loadgen: i gcás gach iarratais amach ó loadgen, bíonn cliant amháin isteach agus ceann amach.

Tagarmharc tomhaltais LAP do Istio agus Linkerd
Toscaire/Toscaire: ~ 155 millicéar le haghaidh cliant-eirí, ~ 75 millicear le haghaidh ieir-client-loadgen

Feicimid torthaí comhchosúla do sidecars Istio.

Ach go ginearálta, ídíonn seachvótálaithe Istio/Toscaire thart ar 50% níos mó acmhainní LAPná Linkerd.

Feicimid an scéim chéanna ar thaobh an fhreastalaí:

Tagarmharc tomhaltais LAP do Istio agus Linkerd
Linkerd: ~50 millicore le haghaidh ir-freastalaí

Tagarmharc tomhaltais LAP do Istio agus Linkerd
Toscaire/Toscaire: ~80 millicear le haghaidh seachfhreastalaí

Ar thaobh an fhreastalaí, ídíonn taobhcharr Istio/Envoy thart ar 60% níos mó acmhainní LAPná Linkerd.

Conclúid

ídíonn seachfhreastalaí Istio Toscaire 50+% níos mó LAP ná Linkerd ar ár n-ualach oibre insamhlaithe. ídíonn an painéal rialaithe Linkerd i bhfad níos lú acmhainní ná Istio, go háirithe do na comhpháirteanna lárnacha.

Táimid fós ag smaoineamh ar conas na costais seo a laghdú. Má tá smaointe agat, le do thoil a roinnt!

Foinse: will.com

Add a comment