إعداد مجموعة دوكر سوارم على أوبونتو

إعداد دوكر سوارم أوبونتو

مقدمة

في عالم التدوير بالحاويات، برز Docker كواحدة من التقنيات الرئيسية التي غيرت كيفية تطوير التطبيقات ونقلها ونشرها. من بين ميزاته المختلفة، يتميز Docker Swarm كأداة قوية لتنظيم وإدارة مجموعات من حاويات Docker. يتيح لك إعداد مجموعة Docker Swarm على Ubuntu الاستفادة الكاملة من هذه الأداة التنظيمية، مما يوفر لك بيئة قوية وقابلة للتوسيع ومرنة للتعافي من الفشل لتطبيقاتك المعبأة في حاويات.

فهم Docker و Docker Swarm

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

من ناحية أخرى، يعد Docker Swarm أداة التجميع والتنظيم الأصلية لـ Docker. يتيح لك تحويل مجموعة من مضيفي Docker إلى محرك Docker افتراضي واحد. باستخدام Docker Swarm، يمكنك نشر وإدارة وتوسيع التطبيقات المعبأة في حاويات عبر عقد متعددة، مما يضمن توفرًا عاليًا ومرونة في التعافي من الفشل.

المتطلبات الأساسية لـ Docker Swarm على Ubuntu

قبل الغوص في عملية الإعداد، تأكد من توفر العناصر التالية:

  • Ubuntu 18.04 أو أحدث: يمكن تثبيت Docker Swarm على أي إصدار حديث من Ubuntu.
  • مستخدم ذو صلاحيات sudo: يتطلب التثبيت وتكوين Docker وصولًا إداريًا.
  • عدة أجهزة Ubuntu: على الرغم من أنه يمكنك إعداد عقدة Swarm واحدة، فإن وجود عدة أجهزة يتيح لك الاستفادة الكاملة من قدرات Docker Swarm.
  • اتصال شبكة مستقر: تحتاج العقد إلى التواصل بشكل موثوق لكي يعمل Swarm بشكل صحيح.

تثبيت Docker على Ubuntu

الخطوة الأولى في إعداد مجموعة Docker Swarm هي تثبيت Docker على جميع عقد Ubuntu. اتبع هذه الخطوات:

  1. قم بتحديث قاعدة بيانات الحزم الخاصة بك:
$ sudo apt-get update
  1. قم بتثبيت الحزم الأساسية:
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
  1. أضف مفتاح GPG الرسمي لـ Docker:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  1. أضف مستودع Docker الرسمي:
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
  1. قم بتحديث قاعدة بيانات الحزم مرة أخرى:
$ sudo apt-get update
  1. قم بتثبيت Docker:
$ sudo apt-get install docker-ce
  1. تحقق من التثبيت:
$ sudo systemctl status docker

تكوين Docker للوضع Swarm

مع تثبيت Docker، الخطوة التالية هي تكوينه للوضع Swarm. يتضمن ذلك تهيئة Swarm على عقدة المدير ثم إضافة عقد العمل.

إعداد أول عقدة

  1. تهيئة Swarm على عقدة المدير:
$ sudo docker swarm init --advertise-addr <IP-MANAGER>

استبدل <IP-MANAGER> بعنوان IP الخاص بعقدة المدير.

  1. احفظ أمر الانضمام: سيقوم Docker بعرض أمر يجب على عقد العمل استخدامه للانضمام إلى Swarm. يشبه هذا الأمر:
$ docker swarm join --token <TOKEN-SWARM> <IP-MANAGER>:2377

إنشاء والانضمام لعقد إضافية

  1. على كل عقدة عمل، نفذ أمر الانضمام:
$ sudo docker swarm join --token <TOKEN-SWARM> <IP-MANAGER>:2377

استبدل <TOKEN-SWARM> و <IP-MANAGER> بالقيم من الخطوة السابقة.

  1. تحقق من أن العقد جزء من Swarm على عقدة المدير:
$ sudo docker node ls

نشر الخدمات

مع تكوين مجموعة Swarm الخاصة بك، يمكنك الآن نشر الخدمات. يستخدم Docker Swarm نموذج خدمة تصريحي، حيث تحدد الحالة المرغوبة، ويتأكد Swarm من أن الكتلة تتطابق مع هذه الحالة.

إنشاء خدمة في Docker Swarm

  1. إنشاء خدمة بسيطة:
$ sudo docker service create --name hello-world --replicas 3 alpine ping docker.com

تنشئ هذه الأمر خدمة باسم hello-world مع ثلاث نسخ تستخدم صورة alpine.

  1. تحقق من الخدمة:
$ sudo docker service ls
  1. تحقق من المهام المرتبطة بالخدمة:
$ sudo docker service ps hello-world

إدارة الخدمات في Docker Swarm

  1. توسيع أو تقليل الخدمة:
$ sudo docker service scale hello-world=5

يؤدي هذا الأمر إلى توسيع خدمة hello-world إلى 5 نسخ.

  1. تحديث الخدمة:
$ sudo docker service update --image alpine:latest hello-world
  1. إزالة الخدمة:
$ sudo docker service rm hello-world

الشبكات في Docker Swarm

يوفر Docker Swarm العديد من خيارات الشبكات لتسهيل الاتصال بين الحاويات عبر العقد المختلفة.

شبكة التراكب

  1. إنشاء شبكة تراكب:
$ sudo docker network create -d overlay my-overlay
  1. نشر خدمة على شبكة التراكب:
$ sudo docker service create --name my-service --network my-overlay alpine ping docker.com

شبكة المدخل

يتم استخدام شبكة المدخل لتوجيه حركة المرور الخارجية إلى الخدمة المناسبة في Swarm.

  1. نشر خدمة على منفذ محدد:
$ sudo docker service create --name web-service --publish published=80,target=80 nginx
  1. تحقق من أن الخدمة قابلة للوصول: قم بالوصول إلى عنوان IP لعقدة المدير على المنفذ 80 في متصفح الويب الخاص بك.

توسيع الخدمات

يسهل Docker Swarm توسيع خدماتك للتعامل مع زيادة الحمل.

زيادة وتقليل نسخ الخدمة

  1. توسيع الخدمة:
$ sudo docker service scale web-service=10
  1. تقليل الخدمة:
$ sudo docker service scale web-service=2

موازنة الحمل

يقوم Docker Swarm تلقائيًا بتوزيع الحمل بين نسخ الخدمة.

  1. تحقق من موازنة الحمل: قم بالوصول إلى خدمتك عدة مرات عبر عنوان IP لعقدة المدير لمشاهدة حركة المرور الموزعة بين النسخ المختلفة.

التعامل مع الفشل

تم تصميم Docker Swarm للتعامل مع فشل العقد بشكل سلس، مما يضمن بقاء خدماتك متاحة.

التوفر العالي

يمكن لـ Docker Swarm الحفاظ على توفر الخدمات عن طريق إعادة توزيع المهام من العقد الفاشلة إلى العقد السليمة.

  1. محاكاة فشل عقدة: قم بإيقاف تشغيل عقدة العمل وراقب كيفية إعادة تعيين Docker Swarm لمهامها.
  2. تحقق من حالة الخدمة:
$ sudo docker service ps web-service

التحديثات التدريجية

يتيح لك Docker Swarm تحديث الخدمات بأقل وقت توقف.

  1. تحديث خدمة:
$ sudo docker service update --image nginx:latest web-service
  1. راقب التحديث:
$ sudo docker service ps web-service

اعتبارات الأمان

الأمان هو جانب أساسي لأي بيئة إنتاجية. يقدم Docker Swarm ميزات مختلفة لتأمين مجموعتك.

تأمين الاتصال

  1. تمكين تشفير TLS: يستخدم Docker Swarm تشفير TLS لتأمين الاتصال بين العقد بشكل افتراضي.
  2. التحقق من شهادات TLS:
$ sudo docker info | grep -i "tls"

إدارة الوصول للمستخدمين

  1. إنشاء مستخدم Docker Swarm:
$ sudo useradd -m dockeruser
  1. إضافة المستخدم إلى مجموعة Docker:
$ sudo usermod -aG docker dockeruser

المراقبة والصيانة

تعتبر المراقبة والصيانة الدورية ضرورية للتشغيل السلس لمجموعة Docker Swarm الخاصة بك.

أدوات المراقبة

  1. استخدام أدوات المراقبة المدمجة في Docker:
$ sudo docker stats
  1. دمج أدوات طرف ثالث: فكر في أدوات مثل Prometheus و Grafana للمراقبة المتقدمة والتصور.

ممارسات الصيانة الدورية

  1. تحديث Docker وخدماتك بانتظام:
$ sudo apt-get update && sudo apt-get upgrade
$ sudo docker service update --image <new-image> <service-name>
  1. تنظيف الموارد غير المستخدمة:
$ sudo docker system prune

التكوين المتقدم

للمستخدمين المتقدمين، يقدم Docker Swarm خيارات تكوين مختلفة لتكييف المجموعة مع احتياجات محددة.

استخدام Docker Compose مع Docker Swarm

  1. إنشاء ملف docker-compose.yml:
version: '3'
services:
   web:
      image: nginx
      deploy:
      replicas: 3
      update_config:
         parallelism: 2
         delay: 10s
  1. نشر الكومة:
$ sudo docker stack deploy -c docker-compose.yml mystack

التخزين الدائم مع Docker Swarm

  1. إنشاء وحدة تخزين Docker:
$ sudo docker volume create my-volume
  1. استخدام وحدة التخزين في خدمة:
$ sudo docker service create --name my-service --mount source=my-volume,target=/app nginx

استكشاف المشكلات الشائعة وإصلاحها

على الرغم من متانته، قد تواجه مشكلات مع Docker Swarm. إليك كيفية استكشاف المشكلات الشائعة وإصلاحها.

مشاكل الاتصال

  1. التحقق من حالة الشبكة:
$ sudo docker network ls
  1. فحص شبكة محددة:
$ sudo docker network inspect <network-name>

مشاكل تخصيص الموارد

  1. التحقق من استخدام الموارد:
$ sudo docker stats
  1. تعديل موارد الخدمة:
$ sudo docker service update --limit-cpu 0.5 --limit-memory 512M <service-name>

الخلاصة

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

الأسئلة الشائعة

كيف يمكنني تحديث خدمة في Docker Swarm؟

لتحديث خدمة في Docker Swarm، استخدم الأمر docker service update. على سبيل المثال، لتحديث صورة خدمة، يمكنك تشغيل:

$ sudo docker service update --image <new-image> <service-name>

سيؤدي هذا الأمر إلى إجراء تحديث تدريجي، مما يضمن أقل وقت توقف.

ما هي فوائد استخدام Docker Swarm؟

يوفر Docker Swarm العديد من الفوائد، بما في ذلك التنظيم المبسط للحاويات، التوفر العالي، القابلية للتوسع، وموازنة الحمل. يتيح لك إدارة مجموعة من محركات Docker ككيان واحد، مما يسهل نشر وإدارة الخدمات.

هل يمكن لـ Docker Swarm التعامل مع عمليات النشر الكبيرة؟

نعم، تم تصميم Docker Swarm للتعامل مع عمليات النشر الكبيرة. يمكنه إدارة آلاف العقد والحاويات، مما يضمن توفر عالي ومرونة في التعافي من الفشل. تتيح معمارية Swarm توسيع فعال واستخدام أمثل للموارد.

كيف يضمن Docker Swarm توفر الخدمة؟

يضمن Docker Swarm توفر الخدمة من خلال آلياته للتوفر العالي ومرونة التعافي من الفشل. يعيد توزيع المهام تلقائيًا من العقد الفاشلة إلى العقد السليمة ويستخدم موازنة الحمل لتوزيع حركة المرور بين نسخ الخدمة.

هل Docker Swarm آمن للبيئات الإنتاجية؟

نعم، يعد Docker Swarm آمنًا للبيئات الإنتاجية. يستخدم تشفير TLS لتأمين الاتصال بين العقد ويقدم ميزات أمان مختلفة مثل التحكم في الوصول القائم على الأدوار وإدارة الأسرار.

كيف يمكنني مراقبة مجموعة Docker Swarm؟

يمكنك مراقبة مجموعة Docker Swarm باستخدام أدوات Docker المدمجة مثل docker stats و docker service ls. للمراقبة المتقدمة، يمكنك دمج أدوات طرف ثالث مثل Prometheus و Grafana لجمع وتصوير المقاييس من مجموعة Swarm الخاصة بك.

الروابط الداخلية والخارجية

الروابط الداخلية:

الروابط الخارجية:

من خلال اتباع هذه الخطوات الكاملة واستخدام الميزات القوية لـ Docker Swarm، يمكنك التأكد من أن تطبيقاتك المعبأة في حاويات يتم إدارتها بكفاءة وتكون متاحة بشكل عالي. يوفر Docker Swarm على Ubuntu حلاً موثوقًا وقابلًا للتوسع لنشر التطبيقات الحديثة، مما يجعله أداة أساسية للمطورين ومسؤولي النظام.

LEAVE A COMMENT