مقدمه
Consul by HashiCorp یک ابزار همه کاره است که چندین عملکرد را در یک محیط DevOps مدرن انجام می دهد. این به طور گسترده برای کشف خدمات، بررسی های سلامت، تعادل بار، و، به ویژه، به عنوان یک فروشگاه ارزش کلیدی توزیع شده (KV) استفاده می شود. فروشگاه KV در Consul برای ذخیره دادههای پیکربندی پویا، پرچمهای ویژگی، اسرار و ابردادهها به شیوهای کاملاً در دسترس و سازگار در زیرساخت شما مناسب است، به طوری که میتوان به صورت پویا توسط سرویسها در یک سیستم توزیعشده به آن دسترسی داشت. استفاده از Docker برای پیکربندی فروشگاه KV Consul، امکان راه اندازی سریع و محیط های ایزوله را فراهم می کند و آن را برای آزمایش و توسعه ایده آل می کند.
این آموزش شما را در فرآیند راه اندازی و پیکربندی فروشگاه KV Consul با استفاده از Docker راهنمایی می کند. در پایان، یک نمونه کنسول کاملاً کاربردی در داکر خواهید داشت که جفتهای KV پیکربندی شده و در دسترس هستند. این تنظیم برای پیکربندی سرویس پویا و مدیریت وضعیت در سیستم های توزیع شده ضروری است.
پیش نیازها
قبل از شروع، اطمینان حاصل کنید که موارد زیر را دارید:
- یک حساب DigitalOcean Cloud.
- سروری که اوبونتو را اجرا می کند و کاربر غیر ریشه ای با امتیازات sudo و فایروال فعال.
- Docker روی قطره اوبونتو شما نصب شده است.
- آشنایی با خط فرمان لینوکس
- دانش اولیه دستورات داکر و مدیریت کانتینر.
مرحله 1 – کشیدن تصویر Consul Docker
بیایید تصویر رسمی کنسول را از داکر هاب برداریم. این تصویر توسط 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 Container
اکنون که تصویر کنسول بارگیری شده است، می توانید یک کانتینر جدید کنسول را راه اندازی کنید. این کانتینر به عنوان سرور کنسول شما عمل می کند و به شما امکان تعامل با فروشگاه 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 یا رابط کاربری وب اضافه کنید.
برای ذخیره یک جفت کلید-مقدار از طریق 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 داده ها را در مسیر داده شده ذخیره می کند.
- config/db_host – مسیر ذخیره مقدار.
- 192.168.1.100 – value.
با استفاده از رابط کاربری وب،
- به Consul UI (http://localhost:8500) بروید.
- بر روی تب “Key/Value” کلیک کنید.
- با کلیک بر روی “ایجاد” یک کلید جدید ایجاد کنید.
- کلید (به عنوان مثال، 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
با استفاده از رابط کاربری وب،
- به برگه «Key/Value» در Consul UI بروید.
- کلیدی را که ایجاد کرده اید پیدا کنید و روی آن کلیک کنید تا مقدار ذخیره شده را ببینید.
بازیابی جفتهای 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 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
2d2a7d3ff1911c2283e70506d68391a5cbf9c935a2ae447bfb8fa21481989ef1
docker 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 ps
output
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 به طور غیر ضروری مصرف نمی شوند.
نتیجه
در این آموزش، نحوه راه اندازی و پیکربندی Consul’s KV store با استفاده از Docker را یاد گرفتید. شما نصب Docker، اجرای کانسیلر Consul، پیکربندی KV store، تداوم داده ها با حجم های Docker و تمیز کردن محیط خود را پوشش داده اید. با این مراحل، اکنون می توانید از Consul برای مدیریت پویا داده های پیکربندی در سیستم های توزیع شده خود استفاده کنید و از قدرت Docker برای استقرار و مدیریت آسان استفاده کنید.