استفاده از Traefik v1 به‌عنوان Reverse Proxy برای کانتینرهای Docker در Ubuntu 20.04

مقدمه

وقتی تعداد کانتینرهای Docker در یک سرور بیشتر می‌شود، مدیریت دسترسی به آن‌ها از طریق دامنه‌ها و پورت‌های مختلف می‌تواند پیچیده شود. در چنین شرایطی استفاده از یک Reverse Proxy راهکار بسیار مناسبی است.

Traefik یکی از محبوب‌ترین Reverse Proxyهای مدرن محسوب می‌شود که به‌صورت خودکار سرویس‌های Docker را شناسایی می‌کند و بدون نیاز به تنظیمات پیچیده، درخواست‌ها را به کانتینر مناسب هدایت می‌کند.

در این آموزش یاد می‌گیرید چگونه Traefik v1 را روی Ubuntu 20.04 راه‌اندازی کنید تا به‌عنوان Reverse Proxy برای کانتینرهای Docker عمل کند.


Traefik چیست؟

Traefik یک Load Balancer و Reverse Proxy متن‌باز است که برای محیط‌های مدرن مانند:

  • Docker
  • Kubernetes
  • Swarm
  • Mesos

طراحی شده است.

برخلاف Nginx یا Apache، نیازی نیست هر بار که سرویس جدیدی اضافه می‌کنید فایل‌های کانفیگ را دستی ویرایش کنید. Traefik سرویس‌های جدید را به‌صورت خودکار شناسایی می‌کند.


پیش‌نیازها

قبل از شروع به موارد زیر نیاز دارید:

  • یک سرور Ubuntu 20.04
  • دسترسی کاربر دارای sudo
  • نصب Docker
  • نصب Docker Compose
  • یک دامنه معتبر که به IP سرور اشاره کند

مرحله اول: ساخت شبکه Docker

ابتدا یک شبکه اختصاصی برای Traefik و سرویس‌های وب ایجاد کنید:

docker network create web

این شبکه باعث می‌شود Traefik بتواند با سایر کانتینرها ارتباط برقرار کند.


مرحله دوم: ساخت پوشه پروژه

یک پوشه برای تنظیمات Traefik ایجاد کنید:

mkdir ~/traefik
cd ~/traefik

مرحله سوم: ایجاد فایل docker-compose

فایل زیر را ایجاد کنید:

nano docker-compose.yml

سپس محتوای زیر را داخل آن قرار دهید:

version: "3"

services:
  traefik:
    image: traefik:v1.7
    container_name: traefik
    restart: always

    command:
      - --docker
      - --docker.domain=example.com
      - --docker.watch
      - --web

    ports:
      - "80:80"
      - "8080:8080"

    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

    networks:
      - web

networks:
  web:
    external: true

توضیح تنظیمات

فعال‌سازی Docker Provider

- --docker

این گزینه باعث می‌شود Traefik کانتینرهای Docker را مانیتور کند.


مانیتور کردن تغییرات

- --docker.watch

هر زمان کانتینر جدیدی ایجاد یا حذف شود، Traefik به‌صورت خودکار تنظیمات را به‌روزرسانی می‌کند.


تنظیم دامنه پیش‌فرض

- --docker.domain=example.com

دامنه اصلی پروژه را مشخص می‌کند.


داشبورد مدیریتی

- --web

داشبورد Traefik را فعال می‌کند.

پس از اجرا از طریق آدرس زیر قابل مشاهده خواهد بود:

http://SERVER-IP:8080

مرحله چهارم: اجرای Traefik

کانتینر را اجرا کنید:

docker-compose up -d

بررسی وضعیت:

docker ps

باید کانتینر Traefik در لیست مشاهده شود.


مرحله پنجم: اجرای یک سرویس نمونه

برای تست، یک کانتینر Nginx اجرا می‌کنیم.

فایل جدیدی ایجاد کنید:

mkdir ~/nginx-test
cd ~/nginx-test

سپس:

nano docker-compose.yml

محتوا:

version: "3"

services:
  nginx:
    image: nginx

    labels:
      - "traefik.frontend.rule=Host:test.example.com"
      - "traefik.port=80"

    networks:
      - web

networks:
  web:
    external: true

توضیح Labelها

تعریف دامنه

traefik.frontend.rule=Host:test.example.com

هر درخواست به این دامنه به کانتینر Nginx هدایت می‌شود.


پورت داخلی کانتینر

traefik.port=80

مشخص می‌کند Traefik باید درخواست‌ها را به پورت 80 کانتینر ارسال کند.


اجرای سرویس

docker-compose up -d

مرحله ششم: تنظیم DNS

در پنل مدیریت دامنه یک رکورد A بسازید:

test.example.com -> SERVER_IP

پس از انتشار DNS، با باز کردن آدرس زیر باید صفحه پیش‌فرض Nginx را ببینید:

http://test.example.com

مشاهده داشبورد Traefik

به آدرس زیر بروید:

http://SERVER-IP:8080

در داشبورد می‌توانید موارد زیر را مشاهده کنید:

  • Frontends
  • Backends
  • Routes
  • Health Status

اضافه کردن چندین سرویس

یکی از مزیت‌های اصلی Traefik این است که برای هر سرویس فقط کافی است Labelهای مناسب را اضافه کنید.

مثال:

labels:
  - "traefik.frontend.rule=Host:api.example.com"
  - "traefik.port=3000"

یا:

labels:
  - "traefik.frontend.rule=Host:blog.example.com"
  - "traefik.port=8080"

Traefik به‌صورت خودکار ترافیک هر دامنه را به سرویس مربوطه هدایت می‌کند.


مزایای استفاده از Traefik

  • پیکربندی خودکار سرویس‌ها
  • یکپارچگی عالی با Docker
  • داشبورد مدیریتی داخلی
  • پشتیبانی از Load Balancing
  • قابلیت استفاده از SSL و Let’s Encrypt
  • حذف نیاز به تنظیم دستی Virtual Hostها

جمع‌بندی

Traefik v1 یک Reverse Proxy قدرتمند برای محیط‌های Docker است که مدیریت سرویس‌ها را بسیار ساده می‌کند. با اتصال Traefik به Docker، هر کانتینر جدید به‌صورت خودکار شناسایی می‌شود و تنها با چند Label می‌توانید دامنه‌های مختلف را به سرویس‌های خود متصل کنید.

از همراهی شما با پارمین کلود سپاسگزاریم.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *