Ko te tohu tohu kohi CPU mo Istio me Linkerd

Ko te tohu tohu kohi CPU mo Istio me Linkerd

Whakataki

Kei roto tatou Shopify I timata te whakamahi i a Istio hei mahanga ratonga. Ko te tikanga, he pai nga mea katoa, engari mo tetahi mea: he utu nui.

В nga tohu tohu kua whakaputaina mo Istio e kii ana:

Ma te Istio 1.1, ka pau te takawaenga tata ki te 0,6 vCPUs (matua mariko) mo ia 1000 tono mo ia hekona.

Mo te rohe tuatahi i roto i te mata o te ratonga (e rua nga takawaenga i ia taha o te hononga), ka 2 nga matua mo te takawaenga, mo te tere kotahi miriona tono mo ia hekona. E ai ki te tatauranga utu a Google, ka tata ki te $1200/marama/matua mo te whirihoranga. n1-standard-64, ara, ko tenei rohe anake ka nui atu i te 50 mano taara ia marama mo te 1 miriona tono mo ia hekona.

Ivan Sim (Ivan Sim) whakatairite kanohi kua whakaroa te mata o te ratonga i tera tau me te oati ano mo te mahara me te tukatuka, engari kaore i tutuki:

Ko te ahua, ko nga uara-istio-test.yaml ka tino whakanui i nga tono PTM. Mena kua tika taku mahi pangarau, me tata ki te 24 nga waahanga CPU mo te paewhiri mana me te 0,5 PTM mo ia takawaenga. Kaore au i te nui. Ka tukuna ano e ahau nga whakamatautau ka tohatohahia etahi atu rauemi ki ahau.

I pirangi au ki te kite i te ahua o te mahi a Istio ki tetahi atu mahanga ratonga puna tuwhera: Linkerd.

Te whakaurunga mata ratonga

Tuatahi, i whakauruhia e ahau ki roto i te kohinga SuperGloo:

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

I whakamahia e ahau a SuperGloo na te mea ka ngawari ake te tarai i te kupenga ratonga. Kaore au i mahi nui. Kaore matou e whakamahi i te SuperGloo i roto i nga mahi hanga, engari he pai mo tera mahi. Me whakamahi au i nga whakahau e rua mo ia mata ratonga. I whakamahia e ahau nga tautau e rua mo te wehe - kotahi mo Istio me Linkerd.

I whakahaerehia te whakamatautau i runga i te Google Kubernetes Engine. I whakamahia e ahau nga Kubernetes 1.12.7-gke.7 me te poka wai node n1-standard-4 me te whakatauine node aunoa (te 4 iti rawa, te 16 teitei).

Na ka whakauruhia e ahau nga mata ratonga e rua mai i te raina whakahau.

Hononga Tuatahi:

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

Katahi a 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      |
+---------+------------+---------+---------------------------+

He torutoru meneti te roa o te tukinga, katahi ka tau nga paewhiri mana.

(Tuhipoka: Ka tautoko noa a SuperGloo i a Istio 1.0.x mo tenei wa. I tukuna ano e ahau te whakamatautau me Istio 1.1.3, engari kaore i kitea he rereke rereke.)

Te whakatu Istio Tuku Aunoa

Hei whakauru i a Istio te Kaihoko taha, ka whakamahia e matou te injector sidecar − MutatingAdmissionWebhook. E kore matou e korero i tenei tuhinga. Me kii noa ahau he kaiwhakahaere tenei e aro turuki ana i te urunga o nga putunga hou katoa me te taapiri hihiri i te motuka taha me te initContainer, kei a ia te kawenga mo nga mahi. iptables.

I tuhia e matou i Shopify ta matou ake kaiwhakahaere uru ki te whakatinana i nga sidecars, engari mo tenei tohu tohu i whakamahia e ahau te kaiwhakahaere e haere mai ana me Istio. Ka werohia e te kaiwhakahaere nga waka taha taunoa ina he pokatata kei te waahi ingoa 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

Te whakatu i te tukunga Linkerd aunoa

Hei whakarite i te whakaurunga taha taha o Linkerd, ka whakamahia e matou nga korero (i taapirihia e au ma te ringa 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 Fault Tolerance Simulator

I hangaia e matou he simulator whakararu i te he e kiia nei ko Istio hei whakamatautau i nga waka motuhake ki te Shopify. I hiahiatia e matou he taputapu ki te hanga i tetahi topology e whakaatu ana i tetahi waahanga motuhake o to maatau kauwhata ratonga, i whirihora hihiri ki te whakatauira i nga taumahatanga mahi.

Ko te hangahanga a Shopify kei raro i nga kawenga taumaha i te wa e hoko ana nga rama. I te wa ano, Shopify E taunaki ana nga kaihoko ki te pupuri i nga hoko pera i nga wa maha. I etahi wa ka whakatupato nga kaihoko nui mo te hoko rama kua whakaritea. Ko etahi atu ka whakahaere ohorere mo tatou i nga wa katoa o te ao, o te po ranei.

Ko ta matou i hiahia kia whakatauirahia e ta maatau simulator resiliency nga rerenga mahi e rite ana ki nga topologies me nga taumahatanga mahi i raru ai te hangahanga o Shopify i mua. Ko te kaupapa matua o te whakamahi i te mata ratonga ko te hiahia kia pono me te manawanui o te he i te taumata whatunga, a he mea nui ki a maatau kia pai te aro o te mata ratonga ki nga taumahatanga i pakaru nga ratonga i mua.

Kei te ngakau o te simulator whakaahuru he he node kaimahi, e mahi ana hei node mata ratonga. Ka taea te whirihora i te pona kaimahi i te tiimatanga, ma te hihiri ranei ma te REST API. Ka whakamahi matou i te whirihoranga hihiri o nga pona kaimahi ki te hanga rerengamahi i roto i te ahua o nga whakamatautau whakamuri.

Anei tetahi tauira o taua tukanga:

  • Ka whakarewahia e matou nga kaitoro 10 hei bar ratonga e whakahoki mai ana i te whakautu 200/OK i muri i te 100 ms.
  • Ka whakarewahia e matou nga kaihoko 10 - ka tukuna e ia 100 tono mo ia hekona bar.
  • Ia 10 hēkona ka tangohia e matou 1 te tūmau me te aro turuki i nga hapa 5xx i runga i te kiritaki.

I te mutunga o te rerenga mahi, ka tirotirohia e matou nga raarangi me nga inenga ka tirohia mena kua paahitia te whakamatautau. Ma tenei ka ako matou mo te mahi o ta maatau ratonga me te whakahaere i te whakamatautau whakamuri hei whakamatautau i o maatau whakaaro mo te whakaaheitanga he.

(Tuhipoka: Kei te whai whakaaro matou ki te whakatuwhera i te Istio fault tolerance simulator, engari kaore ano kia rite.)

Istio hapa katakí simulator mo te tohu tohu mata ratonga

I whakaturia e matou etahi waahanga mahi o te simulator:

  • irs-client-loadgen: 3 nga tauira e tuku 100 tono mo ia hekona mo ia irs-client.
  • irs-client: 3 nga tauira ka whiwhi i te tono, tatari kia 100ms ka tuku atu te tono ki irs-server.
  • irs-server: 3 nga tauira ka hoki mai 200/OK i muri i te 100 ms.

Ma tenei whirihoranga, ka taea e taatau te ine i te rere o nga waka i waenga i nga pito mutunga e 9. Sidecars i roto irs-client-loadgen и irs-server whiwhi 100 tono mo ia hekona, a irs-client — 200 (taumai me te puta).

Ka aroturuki matou i te whakamahinga rauemi Kui Raraungana te mea karekau he kahui Prometheus.

Результаты

Paewhiri whakahaere

Tuatahi, i tirotirohia e matou te kohi CPU.

Ko te tohu tohu kohi CPU mo Istio me Linkerd
Paewhiri mana hono ~22 millicore

Ko te tohu tohu kohi CPU mo Istio me Linkerd
Paewhiri mana Istio: ~750 millicore

Ko te paewhiri mana Istio e whakamahi tata ana 35 nga wa nui ake nga rauemi CPUnui atu i a Linkerd. Ae ra, kua whakauruhia nga mea katoa ma te taunoa, a ka pau te maha o nga rauemi tukatuka kei konei (ka taea te whakakore ma te whakakore i etahi mahi). Mena ka tangohia e tatou tenei waahanga, ka nui ake i te 100 millicores, ara 4 nga taapiri akenui atu i a Linkerd.

Takawaenga waka taha

I whakamatauria e matou te whakamahinga o te takawaenga. Me noho he hononga raina me te maha o nga tono, engari mo ia motuka taha kei reira etahi o runga ka pa ki te pihi.

Ko te tohu tohu kohi CPU mo Istio me Linkerd
Linkerd: ~100 millicores mo irs-kiritaki, ~50 millicores mo irs-client-loadgen

He arorau te ahua o nga hua, na te mea ka whiwhi te takawaenga o te kiritaki e rua te nui ake o te hokohoko mai i te takawaenga utauta: mo ia tono puta mai i te loadgen, kotahi te taumai me te putanga mai.

Ko te tohu tohu kohi CPU mo Istio me Linkerd
Istio/Kaiwhakahaere: ~155 millicores mo irs-kiritaki, ~75 millicores mo irs-client-loadgen

Ka kite matou i nga hua rite mo Istio sidecars.

Engari i te nuinga o te waa, ka pau nga kaiwawao a Istio/Envoy tata ki te 50% atu nga rauemi CPUnui atu i a Linkerd.

Ka kite tatou i te kaupapa ano i te taha o te tūmau:

Ko te tohu tohu kohi CPU mo Istio me Linkerd
Linkerd: ~50 millicore mo te irs-server

Ko te tohu tohu kohi CPU mo Istio me Linkerd
Istio/Kaiwhakahaere: ~80 millicore mo te irs-server

I te taha tūmau, ka pau te sidecar Istio/Envoy tata ki te 60% atu nga rauemi CPUnui atu i a Linkerd.

mutunga

Ko te takawaenga Istio Envoy e pau ana i te 50+% te nui ake o te PTM atu i a Linkerd i runga i a maatau kawenga mahi. He iti ake nga rauemi a te paewhiri mana Linkerd i a Istio, ina koa mo nga waahanga matua.

Kei te whakaaro tonu matou me pehea te whakaiti i enei utu. Mena kei a koe nga whakaaro, tena koa tohatoha!

Source: will.com

Tāpiri i te kōrero