تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

چگونه Consul را با استفاده از Docker پیکربندی کنیم!


۱۶ اردیبهشت ۱۴۰۴

Consul یک ابزار قدرتمند و چندمنظوره است که در محیط‌های مدرن DevOps کاربرد فراوانی دارد. از این ابزار برای پیدا کردن سرویس‌ها، بررسی سلامت آن‌ها، توزیع بار (Load Balancing) و همچنین به‌عنوان یک پایگاه داده‌ی توزیع‌شده‌ی کلید-مقدار (Key-Value Database) استفاده می‌شود.

پایگاه کلید-مقدار در Consul به شما این قابلیت را می‌دهد که اطلاعاتی مانند تنظیمات پویا، پرچم‌های ویژگی (Feature Flags)، داده‌های محرمانه و فراداده‌ها را در تمامی زیرساخت‌ها به‌شکل مطمئن، پایدار و در‌دسترس ذخیره کنید.

راه‌اندازی Consul با استفاده از Docker باعث می‌شود تا بتوانید خیلی سریع و در یک محیط ایزوله، نمونه‌ای عملیاتی از این ابزار را اجرا کنید. این موضوع، کار توسعه و آزمایش را بسیار ساده‌تر و سریع‌تر می‌کند.

در این آموزش از لیارا، به شما نشان خواهیم داد تا چگونه با کمک Docker، یک پایگاه کلید-مقدار در Consul را راه‌اندازی و پیکربندی کنید. در انتها، نمونه‌ واقعی از Consul را در اختیار خواهید داشت که در آن می‌توانید جفت‌های کلید-مقدار را تعریف و مدیریت کنید. این ساختار برای مدیریت پیکربندی پویا و وضعیت سرویس‌ها در سیستم‌های توزیع‌شده بسیار کاربردی و حیاتی است.

همین الان، بدون کمترین پیچیدگی، هاست Docker خودتون رو در کمتر از چند ثانیه راه‌اندازی کنید!
✅ بدون نیاز به پیکربندی ✅ استقرار آسان ✅ سرعت بالا
خرید هاست Docker

آنچه در ادامه خواهید خواند:

  • الزامات شروع فرآیند Consul با استفاده از Docker
  • مرحله اول: بار‌گذاری تصویر Consul از Docker
  • مرحله دوم: اجرای کانتینر Consul
  • مرحله سوم: تایید نصب Consul
  • مرحله چهارم: پیکربندی فایروال
  • مرحله پنجم: ذخیره سازی جفت های کلید–مقدار (key–value database)
  • مرحله ششم: بازیابی جفت های کلید–مقدار (key–value database)
  • مرحله هفتم: ماندگاری داده ها با استفاده از Volume در داکر
  • مرحله هشتم: خودکار سازی راه‌ اندازی Consul
  • مرحله نهم: پاک‌ سازی محیط
  • سوالات متداول
  • جمع بندی
آموزش نصب Odoo با Docker روی سرور مجازی Ubuntu
نصب Odoo با Docker روی سرور مجازی

Consul را با استفاده از Docker

الزامات شروع فرآیند Consul با استفاده از Docker

قبل از آنکه عملیاتی را شروع کنید، ابتدا مطمئن شوید که موارد زیر را در اختیار داشته باشید.

  • یک حساب کاربری
  • یک سرور با سیستم عامل ubuntu
  • قابلیت کاربر غیر روت (none-root)
  • دسترسیهای لازم از جمله دسترسی‌های sudo
  • فایروال فعال و قابل دسترس
  • نصب دارکر بر روی سرور مجازی اوبونتو
  • شناخت خط فرمان لینوکس
  • شناخت پایه‌ای دستورات داکر و مدیریت کانتینرها

اگر هنوز با خط فرمان لینوکس صمیمی نشدید، وقت آن رسیده است که با آن آشتی کنید!
قبل از آنکه با دستورات Docker وارد میدان بشوید، یاد بگیرید تا چگونه بتوانید در ترمینال لینوکس مانند یک متخصص واقعی حرکت کنید!
آموزش آشنایی با خط فرمان لینوکس

راه‌اندازی Docker Compose از طریق Ansible در اوبونتو
راه‌اندازی Docker Compose

مرحله اول: بارگذاری تصویر Consul از Docker

در این مرحله، بایستی تصویر رسمی Consul را از Docker Hub بارگذاری کنید. این تصویر شامل تمام موارد لازم برای اجرای Consul است که باید تمامی فرآیند‌های مراحل را به صورت دقیق انجام دهید.

برای بارگذاری تصویر، به سرور Ubuntu خود بروید و دستور زیر را وارد کنید.

docker pull hashicorp/consul:latest

خروجی که به شما نشان می‌دهد باید به صورت زیر باشد.

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

برای استقرار ایمیج (Image) از DockerHub یا ghcr.io می‌توانید از مستندات لیارا استفاده کنید.

مرحله دوم: اجرای کانتینر Consul

زمانی که تصویر شما بارگذاری شد، می‌توانید یک کانتینر جدید را برای Consul راه اندازی کنید. این کانتینر به عنوان سرور Consul عمل می‌کند و به شما این قابلیت را می‌دهد که تا با پایگاه داده کلید–مقدار (key–value database) تعامل داشته باشید.

برای اینکه بتوانید کانتنر را اجرا کنید از دستور زیر که لیارا برای تان آماده کرده است استفاده کنید.

docker run -d --name=consul-server -e CONSUL_BIND_INTERFACE=eth0 -p 8500:8500 -p 8600:8600/udp hashicorp/consul

خروجی که باید به شما نشان بدهد به صورت زیر خواهد بود.

c893b6707686bce8434213975a75c936b834cf25fc84d10b407a11c4fa8ca8ba

نکته و توضیحات قابل توجه:

  • -d کانتینر را در حالت detached اجرا می‌کند.
  • --name=consul-server یک نام به کانتینر اختصاص می‌دهد.
  • -e CONSUL_BIND_INTERFACE=eth0 این دستور مشخص می‌کند که Consul به کدام رابط شبکه متصل شود. این تنظیم برای ارتباط صحیح شبکه بسیار مهم و ضروری است.
  • -p 8500:8500 پورت وب UI و API Consul را به هاست متصل می‌کند.
  • -p 8600:8600/udp پورت سرویس DNS برای کشف سرویس‌ها را متصل می‌کند.

به یاد داشته باشید که این مرحله از مهم‌ترین مرحله‌ها است و اهمیت بسیار زیادی را دارد به این دلیل که سرویس اصلی Consul را راه اندازی می‌کند تا بتوانید از آن برای پیکربندی پایگاه کلید–مقدار (key–value database) استفاده کنید.

آموزش راه‌اندازی اپلیکیشن وب Go با Docker و Nginx در اوبونتو 22.04
وب Go با Docker و Nginx در اوبونتو

مرحله سوم: تایید نصب Consul

در این مرحله ابتدا باید مطمئن شوید که Consul شما به درستی نصب و در حال اجرا باشد، بعد از آن برای اینکه بتوانید وضعیت کانتینر‌های خود را بررسی کنید و به کنسول UI Consul دسترسی پیدا کنید. باید دستور 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

زمانی که دستور را وارد کردید بررسی کنید که آیا Consul شما در دسترس است یا خیر. برای اینکه بتوانید این بررسی مهم را انجام دهید باید مرورگر وب خود را باز کنید و به آدرس http://localhost:8500 بروید. در این قسمت باید رابط کاربری (UI) Consul را مشاهده کنید.

مرحله چهارم: پیکربندی فایروال

اگر نیاز داشتید که از خارج به یک نمونه‌ی Consul دسترسی داشته باشید به عنوان مثال از سایر گره‌ها در یک خوشه، باید تنظیمات فایروال خود را به صورتی تغییر دهید که ترافیک بر روی پورت‌های موردنیاز مجاز شوند.

به‌عنوان نمونه، اگر Consul را بر روی یک سرور ابری اجرا کرده‌اید، امکان دارد که به ترافیک ورودی روی پورت‌های 8500 (برای API مبتنی بر HTTP) و 8600 (برای DNS) را مجاز کنید. البته به یاد داشته باشید که دستورات خاص با توجه به راه حل های فایروال شما مانند UFW یا iptables متفاوت خواهد بود.

این مرحله به شما این اطمینان را می‌دهد که نمونه Consul شما از ماشین‌های دیگر قابل دسترسی باشد که برای پیکربندی‌های توزیع شده بسیار ضروری خواهد بود.

مرحله پنجم: ذخیره سازی جفت های کلید–مقدار (key–value database)

دیگر کنسول شما در حال اجرا می‌باشد، دیگر می‌توانید از پایگاه کلید–مقدار (key–value database) برای ذخیره‌سازی داده‌های پیکربندی استفاده کنید. پیشنهاد ما برای این کار به شما این است که از جفت‌های کلید مقدار از طریق CLI یا رابط کاربری وب (Web UI) استفاده کنید.

برای اینکه بتوانید کلید–مقدار (key–value database) را از طریق CLI ذخیره‌سازی دستور زیر را وارد کنید.

docker exec -it consul-server consul kv put config/db_host 192.168.1.100
Success! Data written to: config/db_host
docker exec -it consul-server consul kv put config/db_port 3306
Success! Data written to: config/db_port

این دستور عملیات‌هایی که در ادامه به آن اشاره می‌کنیم را انجام می‌دهد.

  • -it ترمینال تعاملی را از سیستم محلی به کانتینر می‌آورد.
  • consul kv put دستور kv put داده‌ها را در مسیری که در پایگاه داده کلید–مقدار (key–value database) مشخص شده است ذخیره می‌کند.
  • config/db_host مسیری برای ذخیره مقدار را دارد.
  • 192.168.1.100 مقدار ذخیره‌شده را نشان می‌دهد.

نحوه استفاده از Web UI:

  1. به UI Consul در آدرس http://localhost:8500 بروید.
  2. روی تب Key/Value کلیک کنید.
  3. برای ساخت یک کلید (Key) جدید، بر روی Create کلیک کنید.
  4. کلید (به عنوان مثال config/db_host) و مقدار (192.168.1.100) را وارد کنید.

تمامی این دستورات و اقدامات داده‌های پیکربندی مهم را که سرویس‌های شما می‌توانند به صورت پویا و در زمان اجرا به آن‌ها دسترسی داشته باشند را ذخیره می‌کند.

آموزش گام به گام راه‌ اندازی رجیستری خصوصی داکر در اوبونتو
راه‌ اندازی رجیستری خصوصی داکر در اوبونتو

مرحله ششم: بازیابی جفت های کلید–مقدار (key–value database)

بعد از آن که مقدارها ذخیره شدند، باید آن‌ها را بازیابی کنید و مطمئن شوید که داده‌ها به درستی ذخیره شدند.

برای دریافت مقدار از طریق CLI، دستور زیر را اجرا کنید.

docker exec -it consul-server consul kv get config/db_host

خروجی که باید به شما نشان دهد و شما آن را مورد مقایسه قرار دهید به صورت زیر خواهد بود.

192.168.1.100

برای اینکه بتوانید از رابط کاربری وب استفاده کنید.

به تب Key/Value در رابط Consul بروید.

کلیدی را که قبلاً ایجاد کرده‌اید پیدا کرده و روی آن کلیک کنید تا مقدار ذخیره‌شده نمایش داده شود.

همین الان، بدون کمترین پیچیدگی، سرور مجازی خودتون رو در کمتر از ۳۰ ثانیه، راه‌اندازی کنید.
✅ عملکرد پایدار ✅ ترافیک نامحدود ✅ هزینه به‌صرفه
خرید سرور مجازی ابری

مرحله هفتم: ماندگاری داده ها با استفاده از Volume در داکر

کانتیر‌ها به‌صورت پیش‌فرض موقتی هستند و به این معنی است که با حذف کانتینر‌ها، تمام داده‌های درون آن نیز حذف و غیر دسترس خواهند شد. برای اینکه بتوانید از داده‌های Consul خود محافظت کنید، باید از Volume در داکر استفاده کنید.

برای اینکار ابتدا کانتینرهای فعلی Consul را متوقف و حذف کنید.

docker stop consul-server  
docker rm consul-server

با اجرا کردن دستور زیر می‌توانید از اینکه کانتینرهای شما اجرا نمی‌شود مطمئن شوید.

docker ps

خروجی قابل مشاهده شما باید به صورت زیر باشد.

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

بعد از آن یک کانتینر جدید Consul با Volume که به آن متصل شده است راه‌اندازی کنید.

docker run -d --name=consul-server -e CONSUL_BIND_INTERFACE=eth0 -p 8500:8500 -p 8600:8600/udp -v consul_data:/consul/data hashicorp/consul

خروجی دستور شما به این صورت خواهد بود.

2d2a7d3ff1911c2283e70506d68391a5cbf9c935a2ae447bfb8fa21481989ef1

برای اینکه بتوانید بار دیگر بررسی کنید که وضعیت کانتینر جدید شما به چه صورت است از دستور زیر استفاده کنید.

docker ps

خروجی کار شما به صورت زیر خواهد بود.

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 یک Volume داکر را به کانتینر متصل می‌کند تا داده‌ها در صورت راه‌اندازی مجدد کانتینرها محفوظ بمانند.

نصب و استفاده از داکر کامپوز (Docker Compose) در اوبونتو
داکر کامپوز (Docker Compose) در اوبونتو

مرحله هشتم: خودکار سازی راه‌ اندازی Consul

برای اینکه بتوانید در محیط تولید استقرار را انجام دهید، می‌توانید از راه‌اندازی خودکار کانتینر Consul با استفاده از Docker Compose این عملیت را انجام دهید. Docker Compose مدیریت سرویس‌های چندکانتینری را ساده‌تر می‌کند.

فایلی با نام 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

خروجی که باید مشاهده کنید.

[+] Running 2/2
 ✔ Network work_default     Created                                                                                                           0.0s 
 ✔ Container consul-server  Started                                                                                                           0.1s 

برای بررسی دوباره وضعیت کانتینرها از دستور زیر استفاده کنید.

docker ps

خروجی شما باید به صورت زیر باشد.

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 را به صورت خودکار انجام می‌دهد و در صورت بروز هر خطایی آن را مجددا راه‌اندازی می‌کند، که این موضوع برای محیط‌های تولیدی بسیار ضروری است.

مرحله نهم: پاک‌ سازی محیط

بعد از پایان کار با سرویس Consul، بهتر است که محیط داکر را پاک‌سازی کنید تا منابع سیستم آزاد شوند.

برای اینکه بتوانید این کانتینر‌ها را حذف و متوقف کنید، از دستور زیر استفاده کنید.

docker stop consul-server
docker rm consul-server

خروجی شما.

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

در صورتی که دیگر به Consul نیازی نداشتید، می‌توانید تصویر مربوط به داکر‌تان را حذف کنید.

docker rmi hashicorp/consul

خروجی کار.

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

پاک‌سازی محیط، به نظم در فضای توسعه کمک می‌کند و مانع از اشغال غیر ضروی منابع در داکر می‌شود.

آموزش نصب داکر روی اوبونتو 22.04
نصب داکر روی اوبونتو

سوالات متداول

در ادامه به سوالاتی که امکان دارد در این زمینه برای شما بدون پاسخ بماند، جواب‌های کوتاه اما مفیدی داده‌ایم که با استفاده از آن می‌توانید به سوال خود پاسخ صحیحی را بدهید.

Consul چیست و چه کاربردی دارد؟

ابزاری متن‌باز برای یافتن سرویس، مدیریت پیکربندی و سلامت‌یابی سرویس‌ها در سیستم‌های توزیع‌شده از ان استفاده می‌شود.

چرا از Consul در Docker استفاده می‌ شود؟

برای راه‌اندازی سریع، مدیریت ساده و ادغام آسان با سایر کانتینرها از ان استفاده می‌شود.

آیا اطلاعات Consul بعد از حذف کانتینر باقی می‌ ماند؟

تنها در صورت استفاده از Volume در Docker، داده‌ها به‌صورت دائمی ذخیره می‌شوند.

آیا رابط وب Consul برای مدیریت داده‌ ها قابل استفاده است؟

بله، در آدرس http://localhost:8500 می‌توانید این فعالیت‌ها را انجام دهید.

برای دسترسی سایر سرورها به Consul چه پورت‌ هایی باید باز باشد؟

پورت 8500 برای HTTP و پورت 8600 برای DNS باید در فایروال باز باشد.

مزیت استفاده از Docker Compose در اجرای Consul چیست؟

  • اجرای خودکار
  • پیکربندی آسان
  • اطمینان از راه‌اندازی مجدد در صورت خطا

برای پاک‌ سازی محیط پس از کار با Consul چه باید کرد؟

برای اینکه بتوانید کانتینرها را حذف کنید از docker stop و در صورت نیاز حذف تصویر با docker rmi استفاده کنید.

نحوه حذف ایمیج (image)، کانتینر (container) و والیوم (volume) در داکر Docker در سرور مجازی
حذف ایمیج (image)، کانتینر (container) و والیوم (volume) در داکر Docker

جمع بندی

در این آموزش از لیارا، نحوه راه‌اندازی و پیکربندی پایگاه داده کلید–مقدار (key–value database) سرویس Consul با استفاده از Docker را آموزش دیده‌اید. در این مسیر، مراحل نصب Docker، اجرای کانتینر Consul، نگهداری اطلاعات با استفاده از Volumeهای Docker و در نهایت پاک‌سازی محیط به‌صورت کامل بررسی شدند. با انجام این مراحل، اکنون امکان استفاده از Consul برای مدیریت پویای داده‌های پیکربندی در سامانه‌های توزیع‌شده برای شما فراهم شده و می‌توانید با استفاده از قابلیت‌های Docker، استقرار و مدیریت این سرویس را به‌سادگی انجام دهید.

به اشتراک بگذارید