أوركسترا بدوي بديل على سطح المكتب

يرتبط تزامن الحاوية حاليًا في المقام الأول بالكوربونيت. لكن هذا ليس هو الخيار الوحيد الممكن. هناك أدوات تزامن بديلة ، مثل nomad ، مطور HashiCorp (المعروف باسم مطور Vagrant الظاهري).

اتقان العمل مع orchestration عادة ما يكون صعبا ، ل ليس كل شخص لديه حق الوصول إلى البنية التحتية من العديد من الخوادم ذات الوصول إلى الجذر ، وبالتالي ، في منشور سابق
نقوم بنشر Kubernetes على سطح المكتب في بضع دقائق مع MicroK8s وصفنا عملية نشر بيئة Kubernetes على سطح المكتب باستخدام تطبيق الويب Django كمثال. في البداية ، خططت لمواصلة وصف استغلال قاعدة البيانات في بيئة MicroK8s. لكنني اعتقدت بعد ذلك أنه سيكون من المثير للاهتمام مواصلة العمل باستخدام أداة تنظيم بدوية مريحة على قدم المساواة. لن أعطي الألمانية لمقارنة أنظمة مختلفة من تزامن. الشيء الوحيد الذي لاحظته بالنسبة لأولئك الذين يشكون في أن البدو أسهل في التثبيت من MicroK8s ، لأنه للقيام بذلك ، ما عليك سوى نسخ الملفين القابلين للتنفيذ (البدو والقنصل) من خادم المطور.

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

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

لذلك ، تحتاج أولاً إلى إنشاء ملف التكوين البدوي. يمكن تشغيل البدوي في وضع الخادم أو في وضع العميل ، وكذلك في نفس الوقت في كلا الوضعين (غير مستحسن في الإنتاج). للقيام بذلك ، يجب وضع قسم الخادم أو قسم العميل أو كلا القسمين في ملف التكوين:

bind_addr = "127.0.0.1" data_dir = "/tmp/nomad" advertise { http = "127.0.0.1" rpc = "127.0.0.1" serf = "127.0.0.1" } server { enabled = true bootstrap_expect = 1 } client { enabled = true options = { "driver.raw_exec.enable" = "1" } } consul { address = "127.0.0.1:8500" } 

يتم تشغيل Nomad بواسطة أمر يشير إلى المسار إلى ملف التكوين الذي تم إنشاؤه:

 nomad agent --config nomad/nomad.conf 

في القسم الأخير من التكوين ، يتم تحديد العنوان الذي سيعمل فيه القنصل. يمكن أن يعمل القنصل أيضًا في وضع الخادم وفي وضع العميل وفي كل من وضع الخادم والعميل:

 consul agent -server -client 127.0.0.1 -advertise 127.0.0.1 -data-dir /tmp/consul -ui -bootstrap 

بعد تنفيذ هذه الأوامر ، يمكنك فتحها في المتصفح (http: // localhost: 4646) - هذا هو UI nomad و (http: // localhost: 8500) - هذا هو قنصل واجهة المستخدم.

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

 FROM python:3-slim LABEL maintainer="apapacy@gmail.com" WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt RUN django-admin startproject mysite /app \ && echo "\nALLOWED_HOSTS = ['*']\n" >> /app/mysite/settings.py EXPOSE 8000 STOPSIGNAL SIGINT ENTRYPOINT ["python", "manage.py"] CMD ["runserver", "0.0.0.0:8000"] 

بعد بناء الحاوية:

 docker build django/ -t apapacy/tut-django:1.0.1 

من الضروري إنشاء مهمة يتم فيها إنشاء العدد المطلوب من النسخ المتماثلة لحاويات Django (nomad / django.conf):

 job "django-job" { datacenters = ["dc1"] type = "service" group "django-group" { count = 3 restart { attempts = 2 interval = "30m" delay = "15s" mode = "fail" } ephemeral_disk { size = 300 } task "django-job" { driver = "docker" config { image = "apapacy/tut-django:1.0.1" port_map { lb = 8000 } } resources { network { mbits = 10 port "lb" {} } } service { name = "django" tags = ["urlprefix-/"] port = "lb" check { name = "alive" type = "http" path = "/" interval = "10s" timeout = "2s" } } } } } 

جميع المعلمات من هذا التكوين مفهومة تماما بناء على أسمائهم. الشيء الوحيد الذي أود فك تشفيره هو سطر واحد: port "lb" {} ، مما يعني أن المنافذ سيتم تعيينها ديناميكيًا بواسطة البيئة (يمكنك أيضًا تعيينها بشكل ثابت).

يتم بدء المهمة بواسطة الأمر:

 nomad job run nomad/django.conf 

الآن ، من خلال بدل واجهة المستخدم (http: // localhost: 4646) ، يمكنك رؤية حالة وظيفة django-job ، ومن خلال قنصل واجهة المستخدم (http: // localhost: 8500) ، يمكنك الاطلاع على حالة خدمة django وأيضًا عناوين IP والمنافذ التي تعمل بها كل نسخة طبق الأصل من خدمة django. تتوفر الخدمات الآن من خلال عناوين IP هذه ، ولكن فقط داخل شبكة البدو ، ولا يمكن الوصول إليها من الخارج. من أجل نشر الخدمات للوصول الخارجي ، يمكنك استخدام عدد من الميزات. على سبيل المثال ، من خلال haproxy ، ولكن أسهل طريقة للقيام بذلك هي من خلال وحدة (ثالثة بعد البدو والقنصل) من HashiCorp - فابيو.

لن تحتاج إلى تنزيله أيضًا - يمكنك تقديم هذه الحالة البدوية ، والتي ، كما ذكرت في بداية الرسالة ، يمكن أن تعمل ليس فقط مع حاويات السفن ، ولكن أيضًا مع أي ملفات قابلة للتنفيذ. للقيام بذلك ، قم بإنشاء مهمة أخرى (nomad / fabio.conf):

 job "fabio-job" { datacenters = ["dc1"] type = "system" update { stagger = "60s" max_parallel = 1 } group "fabio-group" { count = 1 task "fabio-task" { driver = "raw_exec" artifact { source = "https://github.com/fabiolb/fabio/releases/download/v1.5.4/fabio-1.5.4-go1.9.2-linux_amd64" } config { command = "fabio-1.5.4-go1.9.2-linux_amd64" } resources { cpu = 100 # 500 MHz memory = 128 # 256MB network { mbits = 10 port "lb" { static = 9999 } port "admin" { static = 9998 } } } } } } 

يستخدم برنامج driver = "raw_exec" لإكمال هذه المهمة. لا يتم تحميل جميع برامج التشغيل بشكل افتراضي ، لذلك في تهيئة البدو قدمنا ​​هذه الميزة:

 client { enabled = true options = { "driver.raw_exec.enable" = "1" } } 

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

يتم بدء المهمة بواسطة الأمر:

 nomad job run nomad/fabio.conf 

بعد ذلك ، يتوفر فابيو واجهة المستخدم في المتصفح على العنوان (http: // localhost: 9998). وعلى العنوان (http: // localhost: 9999) سيتم نشر خدمة django.

يمكن العثور على رمز التكوينات المعروضة في المنشور في المستودع .

روابط مفيدة

1.dvps.blog/minimalnoie-sravnieniie-swarm-kubernetes-mesos-nomad-rancher

papacy@gmail.com
20 فبراير 2019

Source: https://habr.com/ru/post/ar440956/


All Articles