معرفی
«ترافیک» (Traefik) یک «پراکسی معکوس» (Reverse Proxy) و «متعادلکننده بار» (Load Balancer) متنباز است که درخواستهای ورودی را به سرویس مناسب هدایت میکند. تفاوت مهم آن با پراکسیهایی که به پیکربندی ثابت نیاز دارند، این است که میتواند سرویسها و مسیرها را در محیطهای پویا، مانند داکر و کوبرنتیز، بهصورت خودکار شناسایی کند.
مهندسان دواپس و تیمهای بکاند از Traefik برای مدیریت ارتباط با سرویسها و توزیع درخواستها استفاده میکنند. کاربردهای اصلی آن عبارتاند از:
انتشار چند سرویس از طریق یک دامنه
توزیع بار میان نمونههای مختلف یک سرویس
مدیریت گواهیهای «TLS»
تعریف قواعدی مانند تغییر مسیر، احراز هویت و محدودسازی نرخ درخواست
در Traefik، مسیریابی درخواستها با «روتر» (Router) انجام میشود. روترها میتوانند درخواستها را بر اساس نام دامنه، مسیر «URL»، هدر یا روش «HTTP» به سرویس مناسب هدایت کنند.
«میانافزار» (Middleware) نیز لایهای است که پیش از ارسال درخواست به سرویس مقصد، عملیاتی مانند افزودن هدر، انتقال درخواست از HTTP به HTTPS یا محدودسازی نرخ درخواست را انجام میدهد.
Traefik برای معماری میکروسرویس و محیطهای کانتینری مناسب است، زیرا در این محیطها تعداد کانتینرها و نشانی آنها ممکن است به طور مداوم تغییر کند.
چه زمانی Traefik انتخاب مناسبی است؟
اگر سرویسهای شما در داکر با چند برچسب تعریف شدهاند، تعداد سرویسها یا نمونههای آنها مرتب تغییر میکند یا برای کوبرنتیز به یک Ingress Controller نیاز دارید، قابلیت کشف خودکار سرویسها در Traefik میتواند نیاز به پیکربندی دستی را کاهش دهد. در این شرایط، مزیت اصلی Traefik زمانی مشخص میشود که روترها، سرویسها و سیاستهای مشترک با تغییرات محیط بهروزرسانی شوند.
برای انتخاب میان Traefik و Nginx و Caddy، به نیازهای پروژه توجه کنید:
Nginx: برای یک یا چند وبسایت ثابت با مسیرهای محدود مناسب است، بهویژه اگر سرو فایلهای استاتیک یا کنترل جزئیات پیکربندی وبسرور اهمیت داشته باشد.
Caddy: برای راهاندازی ساده وبسایت و فعالسازی خودکار HTTPS در سرورهای کوچک میتواند گزینه کمدردسرتری باشد.
Traefik: برای محیطهایی مناسب است که سرویسها و نمونههای آنها مرتب تغییر میکنند و به کشف خودکار سرویسها و بهروزرسانی قواعد مسیریابی نیاز دارند.
اگر سرویسها ثابت باشند و تغییرات کمی داشته باشند، پیچیدگی اتصال Traefik به ارائهدهندهها، مدیریت برچسبها و کنترل دسترسی به داشبورد ممکن است ارزش نگهداری آن را نداشته باشد.
برای راهاندازی امن Traefik، باید با شبکه، DNS و گواهیهای TLS آشنا باشید و دسترسی به داشبورد و API آن را با دقت کنترل کنید. نسخه متنباز Traefik Proxy رایگان است و محصولات تجاری جداگانهای نیز برای نیازهای سازمانی ارائه میشوند.
ویژگیهای کلیدی
در ادامه، مهمترین موارد این بخش به تفکیک معرفی شدهاند.
-
کشف خودکار سرویسها
Traefik میتواند اطلاعات سرویسها را از ارائهدهندههایی مانند Docker و Kubernetes و Consul و تنظیمات فایل دریافت کرده و با ایجاد یا حذف سرویسها، مسیرها را بهروزرسانی کند.
-
مسیریابی مبتنی بر قانون
روترها میتوانند درخواست را بر اساس دامنه، مسیر، هدر، روش HTTP یا ترکیب آنها به سرویس مقصد بفرستند. برای نمونه، مسیر «/api» به بکاند و «/» به فرانتاند هدایت شود.
-
تعادل بار داخلی
وقتی سرویسی چند نمونه دارد، Traefik درخواستها را میان آنها توزیع میکند. در ضمن میتواند بررسی سلامت سرویس را نیز در پیکربندی در نظر بگیرد.
-
مدیریت گواهی TLS با ACME
Traefik میتواند با استفاده از پروتکل ACME، دریافت و تمدید گواهیهای TLS را از سرویسهایی مانند Let's Encrypt بهصورت خودکار انجام دهد. البته این قابلیت به تنظیم درست DNS و دسترسی به پورتهای عمومی نیاز دارد.
-
میانافزارهای قابل ترکیب
میانافزارها امکان تغییر مسیر، افزودن یا حذف هدر، احراز هویت پایه، محدودسازی نرخ، فشردهسازی و اعمال سیاستهای مشترک پیش از رسیدن درخواست به سرویس را فراهم میکنند.
-
پشتیبانی از Kubernetes Ingress و CRD
در Kubernetes میتوان از Traefik بهعنوان کنترل کننده ورودی استفاده کرد و با منابع Ingress یا تعریفهای منبع سفارشی (CRD)، قواعد مسیریابی و میانافزارهای جزئیتری تعریف کرد.
-
متریک برای پایش ترافیک
Traefik میتواند متریکهای درخواست، پاسخ و تاخیر را برای Prometheus منتشر کند. تیم میتواند این دادهها را در Grafana نمایش دهد و خطاها یا افزایش تاخیر مسیرها را بررسی کند.
کاربردها
موارد زیر تصویری کلی از این بخش برای این ابزار ارائه میکنند.
-
انتشار چند سرویس Docker پشت دامنه
تجمیع و مدیریت دسترسی به چندین کانتینر مختلف از طریق یک آدرس وب واحد
-
ورودی Kubernetes برای سرویسهای وب
هدایت ترافیک خارجی به داخل خوشههای کوبرنتیز با استفاده از کنترلرهای استاندارد
-
HTTPS خودکار برای محیطهای کوچک و متوسط
تامین امنیت ارتباطات وبسایتها بدون نیاز به دخالت دستی در مدیریت گواهیها
-
اعمال سیاست مشترک در ورودی API
مدیریت یکپارچه دسترسیها، محدودیتها و هدرها در دروازه ورود به سیستم
-
مسیردهی تدریجی میان نسخههای سرویس
انتقال کنترل شده کاربران به نسخههای جدید برنامهای برای تست و بهروزرسانی
-
پایش ترافیک ورودی با Prometheus و Grafana
اتصال به ابزارهای مانیتورینگ برای نمایش لحظهای وضعیت عملکرد پراکسی
ابزارهای جایگزین
در کنار ترافیک، ابزارهای مشابه زیر نیز در دسترس هستند.
پرسشهای رایج درباره ترافیک
اگر درباره این ابزار پرسشی دارید، ممکن است پاسخ آن را در میان موارد زیر پیدا کنید.
ترافیک چه تفاوتی با Nginx دارد؟
هر دو ابزار میتوانند بهعنوان پراکسی معکوس استفاده شوند. Traefik برای شناسایی خودکار سرویسها در Docker و Kubernetes طراحی شده است. در مقابل، Nginx در پیکربندی دستی، ارائه فایلهای استاتیک و مدیریت وبسایتهای سنتی، سابقه و انعطاف گستردهای دارد. انتخاب میان این دو ابزار به میزان تغییرات زیرساخت و نیازهای تیم بستگی دارد.
آیا برای استفاده از Traefik باید Kubernetes بلد باشم؟
خیر. میتوانید Traefik را با Docker یا فایل پیکربندی نیز اجرا کنید. اما برای استفاده از آن در Kubernetes، باید مفاهیمی مانند Service و Ingress و Namespace و منابع سفارشی Kubernetes را بدانید.
آیا Traefik جایگزین Docker یا Kubernetes است؟
خیر. Docker برای اجرای کانتینر و Kubernetes برای ارکستراسیون کانتینرها است. Traefik ترافیک ورودی را به سرویسهای اجرا شده در این محیطها مسیریابی میکند.
آیا Traefik گواهی TLS را خودکار میگیرد؟
بله، این ابزار با پشتیبانی از پروتکل ACME میتواند گواهینامههای رایگان امنیتی را به صورت خودکار دریافت و تمدید کند.
آیا داشبورد Traefik را میتوان روی اینترنت عمومی باز گذاشت؟
خیر، به دلیل اطلاعات حساسی که در داشبورد نمایان است، باز گذاشتن آن بدون احراز هویت و امنیت کافی خطرات امنیتی به همراه دارد.