مقدمة
Consul من HashiCorp أداة متعددة الاستخدامات تؤدي وظائف متعددة في بيئة DevOps حديثة. تُستخدم على نطاق واسع لاكتشاف الخدمات، وفحوصات السلامة، وموازنة الأحمال، والأهم من ذلك، كمخزن موزع للقيم الرئيسية (KV). يُعد مخزن القيم الرئيسية في Consul مناسبًا لتخزين بيانات التكوين الديناميكية، وعلامات الميزات، والأسرار، والبيانات الوصفية بشكل متسق ومتاح بالكامل عبر بنيتك التحتية، بحيث يمكن الوصول إليها ديناميكيًا من قِبل الخدمات في نظام موزع. يتيح استخدام Docker لتكوين مخزن القيم الرئيسية في Consul النشر السريع والبيئات المعزولة، مما يجعله مثاليًا للاختبار والتطوير.
سيرشدك هذا البرنامج التعليمي خلال عملية إعداد وتكوين مخزن KV Consul باستخدام Docker. في النهاية، ستحصل على نسخة وحدة تحكم Docker كاملة الوظائف مع أزواج KV مُهيأة ومتاحة. يُعد هذا الإعداد ضروريًا لتكوين الخدمة الديناميكية وإدارة الحالة في الأنظمة الموزعة.
المتطلبات الأساسية
قبل أن تبدأ، تأكد من أن لديك ما يلي:
- حساب DigitalOcean Cloud.
- خادم يعمل بنظام Ubuntu ومستخدم غير جذر يتمتع بامتيازات sudo وجدار حماية ممكّن.
- تم تثبيت Docker على Droplet Ubuntu الخاص بك.
- مقدمة إلى سطر أوامر لينكس
- المعرفة الأساسية بأوامر Docker وإدارة الحاويات.
الخطوة 1 - سحب صورة Docker Consul
لنأخذ صورة وحدة التحكم الرسمية من Docker Hub. هذه الصورة مُدارة من قِبل HashiCorp، وتتضمن كل ما تحتاجه لتشغيل وحدة التحكم.
قم بتسجيل الدخول إلى وحدة التحكم Ubuntu Droplet الخاصة بك وقم بتشغيل:
docker pull hashicorp/consul:latest
Output
latest: Pulling from hashicorp/consul
c8bcd218a73d: Pull complete
5f1ac8227c2a: Pull complete
c51fd79d429a: Pull complete
91eff479bde6: Pull complete
4dfcc18e51db: Pull complete
3e2a8bf39bf9: Pull complete
bd9ddc54bea9: Pull complete
2054d291fb84: Pull complete
Digest: sha256:e244c64df77ab3586f177f1692e98575086eb40343dc82a6320f5e79543490eb
Status: Downloaded newer image for hashicorp/consul:latest
docker.io/hashicorp/consul:latestالخطوة 2 – تشغيل حاوية Consul
بعد تحميل صورة وحدة التحكم، يمكنك تشغيل حاوية وحدة تحكم جديدة. ستعمل هذه الحاوية كخادم وحدة تحكم، وتتيح لك التفاعل مع متجر KV.
لبدء تشغيل الحاوية، قم بتشغيل:
docker run -d --name=consul-server -e
Output
CONSUL_BIND_INTERFACE=eth0 -p 8500:8500 -p 8600:8600/udp hashicorp/consul
c893b6707686bce8434213975a75c936b834cf25fc84d10b407a11c4fa8ca8baإليك ما يفعله هذا الأمر:
- -d يقوم بتشغيل الحاوية في الوضع المنفصل (في الخلفية).
- --name=consul-server يعين اسمًا للحاوية.
- -e CONSUL_BIND_INTERFACE=eth0 يُحدد واجهة الشبكة التي يجب أن ترتبط بها وحدة التحكم. هذا ضروري لضمان اتصال شبكي سليم.
- -p 8500:8500 تقوم بتعيين واجهة الويب Consul ومنفذ API إلى المضيف.
- -p 8600:8600/udp تقوم بتعيين منفذ خدمة DNS لاكتشاف الخدمة.
هذه الخطوة مهمة جدًا لأنها تبدأ خدمة Consul، التي ستستخدمها لتكوين متجر KV.
الخطوة 3 – تأكيد تثبيت وحدة التحكم
للتأكد من أن وحدة التحكم تعمل بشكل صحيح، تحتاج إلى التحقق من حالة الحاوية والوصول إلى واجهة وحدة التحكم.
أولاً، قم بتشغيل docker ps لإدراج جميع الحاويات قيد التشغيل والتحقق من تشغيل حاوية Consul.
❯ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c893b6707686 hashicorp/consul "docker-entrypoint.s…" 51 seconds ago Up 50 seconds 8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp consul-serverالآن، تحقق من توفر وحدة التحكم، افتح متصفح الويب وانتقل إلى http://localhost:8500. ستظهر لك واجهة Consul.
تعد خطوة التحقق هذه مهمة للتأكد من تشغيل مثيل وحدة التحكم لديك دون أي مشاكل قبل حفظ البيانات في متجر KV (الخطوة 5).
الخطوة 4 – تكوين جدار الحماية (اختياري)
إذا كانت نسخة وحدة التحكم الخاصة بك تتطلب وصولاً خارجيًا (على سبيل المثال، من عقد أخرى في مجموعة)، فيجب عليك تكوين إعدادات جدار الحماية للسماح بحركة المرور على المنافذ الضرورية.
على سبيل المثال، إذا كنت تشغّل Consul على نسخة سحابية، فقد تحتاج إلى السماح بحركة المرور الواردة عبر المنفذين 8500 (HTTP API) و8600 (DNS). تختلف الأوامر المحددة باختلاف حل جدار الحماية المُستخدم (UFW، iptables، إلخ).
تضمن هذه الخطوة إمكانية الوصول إلى مثيل وحدة التحكم الخاصة بك من أجهزة أخرى، وهو أمر ضروري للتكوينات الموزعة.
الخطوة 5 - تخزين أزواج القيمة الرئيسية
مع تشغيل Consul، يمكنك الآن استخدام مخزن KV لتخزين بيانات التكوين. يمكنك إضافة أزواج مفتاح-قيمة باستخدام واجهة سطر أوامر Consul أو واجهة الويب.
لتخزين زوج مفتاح-قيمة عبر CLI، قم بتشغيل:
docker exec -it consul-server consul kv put config/db_host
192.168.1.100
Success! Data written to: config/db_hostdocker exec -it consul-server consul kv put config/db_port 3306
Success! Data written to: config/db_portإليك ما يفعله هذا الأمر:
- -it – يقوم بتشغيل محطة تفاعلية من النظام المحلي إلى الحاوية.
- consul kv put – يقوم الأمر kv put بحفظ البيانات في المسار المحدد.
- config/db_host – المسار لتخزين القيمة.
- 192.168.1.100 – القيمة.
باستخدام واجهة الويب،
- انتقل إلى واجهة مستخدم القنصل (http://localhost:8500).
- انقر فوق علامة التبويب "المفتاح/القيمة".
- قم بإنشاء مفتاح جديد بالنقر فوق "إنشاء".
- أدخل المفتاح (على سبيل المثال، config/db_host) والقيمة (على سبيل المثال، 192.168.1.100).
تخزن هذه الأوامر والإجراءات بيانات التكوين الهامة التي يمكن لخدماتك الوصول إليها بشكل ديناميكي في وقت التشغيل.
الخطوة 6 - استرداد أزواج القيمة الرئيسية
بمجرد حفظ بضعة أزواج KV، قد ترغب في استعادتها للتأكد من حفظها بشكل صحيح.
باستخدام CLI، يمكنك استرداد قيمة باستخدام الأمر التالي:
docker exec -it consul-server consul kv get config/db_host
192.168.1.100باستخدام واجهة الويب،
- انتقل إلى علامة التبويب "المفتاح/القيمة" في واجهة مستخدم Consul.
- ابحث عن المفتاح الذي قمت بإنشائه وانقر فوقه لرؤية القيمة المخزنة.
إن استعادة أزواج KV هي خطوة أساسية للتأكد من تخزين بياناتك بشكل صحيح وإمكانية الوصول إليها.
الخطوة 7 - البيانات المستمرة باستخدام وحدات تخزين Docker
افتراضيًا، حاويات Docker مؤقتة، مما يعني أن أي بيانات مخزنة بداخلها تُفقد في حال حذف الحاوية. للاحتفاظ ببيانات Consul KV، يجب استخدام وحدات تخزين Docker.
إيقاف والخروج من حاوية وحدة التحكم الحالية:
docker stop consul-server
docker rm consul-server الآن، تحقق من الحاويات وسوف تلاحظ أن الكونسيلر لم يعد يعمل.
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESقم بإرفاق حاوية وحدة تحكم جديدة بمجلد Docker:
docker run -d --name=consul-server -e
Output
CONSUL_BIND_INTERFACE=eth0 -p 8500:8500 -p 8600:8600/udp -v consul_data:/consul/data hashicorp/consul
2d2a7d3ff1911c2283e70506d68391a5cbf9c935a2ae447bfb8fa21481989ef1docker ps
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2d2a7d3ff191 hashicorp/consul "docker-entrypoint.s…" 5 seconds ago Up 4 seconds 8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp consul-serverيقوم الخيار -v consul_data:/consul/data بتثبيت وحدة تخزين Docker على الحاوية ويضمن إعادة تشغيل وحدة تخزين KV الخاصة بك عبر الحاوية.
الخطوة 8 – تشغيل وحدة التحكم تلقائيًا (اختياري)
لنشر المنتجات في بيئة الإنتاج، قد ترغب في أتمتة نشر حاوية Consul باستخدام Docker Compose. يُبسط Docker Compose تطبيقات Docker متعددة الحاويات ويُسهّل إدارة الخدمات.
قم بإنشاء ملف docker-compose.yml بالمحتوى التالي:
services:
consul:
image: hashicorp/consul:latest
environment:
- CONSUL_BIND_INTERFACE=eth0
volumes:
- consul_data:/consul/data
ports:
- "8500:8500"
- "8600:8600/udp"
restart: always
volumes:
consul_data:ثم قم بتشغيل:
docker-compose up -d
Output
[+] Running 2/2
✔ Network work_default Created 0.0s
✔ Container consul-server Started 0.1s docker ps
Output
WARN[0000] /Users/anandhkumar/work/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
work-consul-1 hashicorp/consul:latest "docker-entrypoint.s…" consul 40 seconds ago Up 11 seconds 8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udpيقوم هذا الأمر ببدء تشغيل Consul تلقائيًا ويضمن إعادة تشغيله في حالة الفشل، مما يجعله أكثر قوة للاستخدام في الإنتاج.
الخطوة 9 – التنظيف
بعد الانتهاء من مثيل وحدة التحكم الخاصة بك، ستحتاج إلى تنظيف بيئة Docker لتحرير الموارد.
دعونا نتوقف ونزيل حاوية وحدة التحكم:
docker stop consul-server
docker rm consul-server
docker psoutput
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESإذا انتهيت من وحدة التحكم، فيمكنك أيضًا إزالة صورة Docker:
docker rmi hashicorp/consul
output
hashicorp/consul@sha256:e244c64df77ab3586f177f1692e98575086eb40343dc82a6320f5e79543490eb
Deleted: sha256:eff8ccb509560987755a70df8d6c0b9410538d503d99498ae1ea9f48066b0439
Deleted: sha256:b5e6402bbb78eb061d538505a30300ef7f612104eaf0f11b17839a9b29bc5603
Deleted: sha256:1c61ada2ad8074615120d13bd805260d766ae8424cafbda4bded529d6a204d6f
Deleted: sha256:9b36da670e2a59f1d81c6e3c9d55906c576b384df51272977e5a9caea7131e74
Deleted: sha256:8c6e52c441c246f60ca146b71204b7d6511df75fa87a0dc0a0f91141964e8fd9
Deleted: sha256:1fce18208235de2be3c419764ec1d469229af5387447d21649c841632c653cef
Deleted: sha256:68e0a114c9c35b9aa8cac31fa32b27f886361bc85fcc63f34e882e9128f33a14
Deleted: sha256:3da5b888208a9b19694bfeaf8c74a432b50f44542d717c9e1f3ab273e505855a
Deleted: sha256:dea73e9287e6e2f3b7f9fcac4f20767d7badeefa24e52f990f1674e98abfa1a3
Deleted: sha256:201fa22d1f4c7d6e7ec43135c63b2260f303f4864f5eb43569faaa1731628799يساعد التنظيف على إبقاء بيئة التطوير مرتبة ويضمن عدم استهلاك موارد Docker بشكل غير ضروري.
نتيجة
في هذا البرنامج التعليمي، تعلمت كيفية إعداد وتكوين مخزن أصول المعرفة (KV) الخاص بـ Consul باستخدام Docker. تناولت تثبيت Docker، وتشغيل حاوية Consul، وتكوين مخزن أصول المعرفة (KV)، وحفظ البيانات باستخدام وحدات تخزين Docker، وتنظيف بيئتك. باتباع هذه الخطوات، يمكنك الآن استخدام Consul لإدارة بيانات التكوين ديناميكيًا عبر أنظمتك الموزعة، مستفيدًا من قوة Docker لسهولة النشر والإدارة.










