تجربة تنفيذ شبكة الخدمة على Nomad و Consul

في هذه المقالة ، سنصف كيف قمنا بنشر Service Mesh ، وحل بعض المشكلات في بنية الخدمات الصغيرة ، وخفض الحمل على المطورين ومهندسي البنية التحتية.


لماذا نحتاج إلى شبكة خدمة


تكتسب شبكة الخدمة شعبية. أعتقد أنه ليس من المنطقي مرة أخرى تحديد ووصف كل شيء قد يكون مفيدًا. إذا كنت لا تعرف ما يدور حوله ، ولكن لدى شركتك العديد من الفرق أو الخدمات ، أو ستقوم بمشاركة مجموعة متجانسة ، فيجب عليك التعرف على هذا الموضوع. يمكنك البدء بترجمة مقال كتبه منشئ مشروع شبكة الخدمة الأولى ، وليام مورجان.


خلال العام الماضي ، زاد عدد فرق المنتجات في الشركة 1.5 مرة. في وقت كتابة هذه السطور ، كان لدينا أكثر من 20 فريقًا ، وكل شخص تقريبًا لديه مطورين. مع زيادة عددهم ، لم يكن تطوير المونوليث أسهل ، لذلك بدأنا في التحرك بنشاط أكبر نحو بنية الخدمات الصغيرة. بينما نحن بالأحرى في بداية رحلتنا ، ومع ذلك ، قبل 3-4 سنوات بالفعل ، بدأت الخدمات لأغراض مختلفة تتكاثر بسرعة لائقة.


بالطبع ، كلما زادت الخدمات ، كلما كان من الصعب تتبعها ، زادت صعوبة إدارتها وتكوين البنية التحتية. قد يكون هذا صعبًا بشكل خاص في النظام التقليدي الذي يوجد فيه جدار بين المطورين والإداريين. لذلك ، بالتزامن مع إنشاء الخدمات الدقيقة ، بدأنا في إعطاء معظم المسؤولية عن إطلاق وتشغيل الخدمة للمطورين ، مما يوفر فحص Ops كخدمة. ومع ذلك ، فإن المطورين بالطبع لا يعرفون كل التفاصيل الدقيقة لإنشاء البنية التحتية.


تجمع Service Mesh بنجاح كبير مع الملخصات من المطورين مثل:


  • اكتشاف الخدمة
  • تتبع الموزعة ؛
  • كسر الدائرة / إعادة المحاولة / المهلات ؛
  • تفاعلات المراقبة / القياس عن بعد وغيرها الكثير.

, , Docker-. Nomad, Consul. , Kubernetes , Nomad .


, Kubernetes, , HashiCorp-.


Nomad Docker- ( QEMU, raw/isolated fork/exec Java). Consul Service Discovery DNS-.



Nomad- Consul-. - ( ), .


Nomad Consul . Consul , (node), healthcheck . (TCP, HTTP, gRPC, script). Nomad key-value Consul Vault, , -. Nomad consul-template.


Nomad, Consul HTTP API, , , Nomad , — ip-port - healthcheck. , k8s Pod, Allocation, .


, , operations engineer. , , : , , .


HashiCorp-, . Service Mesh , Redis .


Service Mesh


Service Mesh : (data plane control plane). Data plane , - . control plane, . .


— sidecar ( Pod’e/). , .


Service Mesh . Linkerd linkerd-proxy, Consul Connect Istio third-party . Envoy Lyft. open source , .



, :


  • Service Mesh 2018 . , .
  • .
  • control plane .


control plane


control plane — , Service Mesh . , , . , , .


Service Mesh , Mesh, . Envoy , , , .


Envoy data plane


Envoy sidecar- . sidecar-, . . (ingress) Consul, (egress) -. , , , .


: Nomad .



Service Discovery


Service Discovery? , ? sidecar, control plane agent, control plane API, API Consul API Envoy. endpoint discovery (EDS). «» - Consul. Envoy , .




Prometheus. Envoy , , Circuit Breaker - . :



, , Vizceral Netflix:




— , . , - . , Envoy Distributed tracing Zipkin/Jaeger (X-b3-headers).



, , Jaeger Elastic APM (Application Performance Management). — Kibana, . Elastic , , , Jaeger, , APM Distributed tracing. Jaeger-, Envoy, , , , Elastic APM. Jaeger, Elastic APM , HTTP- trace-id . Jaeger , Elastic , .



Service Mesh . — . HTTP/1, TCP Redis. Mesh , . , . , Service Mesh.


Ops- Mesh: , , Canary, . , Istio .


Service Mesh


, Service Mesh:


  • — .
  • Service Discovery , - . c-plane 10‌  , , , , . , . Envoy 150 RAM, . , 100 RPS, 30 .
  • . 2–3 .
  • — , .

:


  • , .
  • - Envoy, .
  • , ( , ).

All Articles