System Design

طراحی هوشمند هدایت ترافیک جهانی

با گسترش برنامه‌ها از استقرار در یک منطقه به حضور جهانی، چالش از مدیریت ظرفیت سرورها به مدیریت فاصله جغرافیایی تغییر می‌کند. تعادل‌بخشی بار جهانی سرورها (GSLB) لایه حیاتی‌ای است که تضمین می‌کند کاربران به نزدیک‌ترین و سالم‌ترین مرکز داده متصل شوند، صرف‌نظر از موقعیت فیزیکی آن‌ها. این سیستم صرفاً یک تعادل‌بخش بار نیست؛ بلکه مغز متفکر زیرساخت توزیع‌شده شماست.

مکانیسم اصلی: DNS Anycast و حل آدرس

برخلاف تعادل‌بخش‌های بار محلی که در لایه ۴ یا ۷ با استفاده از آدرس‌های IP عمل می‌کنند، GSLB عمدتاً در لایه DNS فعالیت می‌کند. وقتی کاربری یک URL را وارد می‌کند، رزولور محلی او از سرور DNS مرجع درخواست آدرس IP برنامه را می‌کند. در یک تنظیمات GSLB، این درخواست توسط یک موتور GSLB متوقف و پردازش می‌شود.

این موتور IP مبدأ درخواست را برای تعیین موقعیت جغرافیایی کاربر تحلیل می‌کند. سپس با مراجعه به داده‌های پایش سلامت بلادرنگ خود، تصمیم می‌گیرد کدام مرکز داده باید درخواست را پردازش کند. پاسخ، یک رکورد A یا AAAA خاص است که به منطقه بهینه اشاره می‌کند. این فرآیند برای کاربر نامرئی است، اما برای عملکرد حیاتی است.

پایش سلامت و منطق انتقال بار (Failover)

هدایت هوشمند به دید بلادرنگ از سلامت زیرساخت نیاز دارد. گره‌های GSLB معمولاً پروب‌های فعالی را اجرا می‌کنند که در فواصل منظم (مثلاً هر ۵ ثانیه) نقاط پایانی هدف را بررسی می‌کنند. اگر منطقه اصلی از کار بیفتد، GSLB باید ترافیک را به‌صورت بی‌درنگ به منطقه ثانویه منتقل کند.

سناریویی را در نظر بگیرید که در آن مرکز داده اصلی US-East شما با یک تقسیم شبکه (network partition) مواجه می‌شود. GSLB از طریق بررسی‌های سلامت TCP/HTTP از این خرابی آگاه می‌شود. سپس پاسخ DNS برای کاربران مبتنی بر ایالات متحده را به‌گونه‌ای به‌روزرسانی می‌کند که به US-West اشاره کند. با این حال، به دلیل وجود کش DNS (TTL)، این جابه‌جایی آنی نیست. بنابراین، معماران باید مقادیر TTL را متعادل کنند: TTLهای پایین‌تر (مثلاً ۶۰ ثانیه) انتقال بار سریع‌تری را ممکن می‌سازند اما بار DNS را افزایش می‌دهند؛ TTLهای بالاتر (مثلاً ۳۰۰ ثانیه) بار را کاهش می‌دهند اما زمان بازیابی را کندتر می‌کنند.

نمونه کد: پیکربندی AWS Global Accelerator

اگرچه بسیاری از سازمان‌ها با استفاده از ابزارهایی مانند Nominum یا Infoblox راه‌حل‌های GSLB سفارشی می‌سازند، اما سرویس‌های مدیریت‌شده مانند AWS Global Accelerator یا Cloudflare Spectrum انتزاعاتی قوی ارائه می‌دهند. در زیر یک قطعه مفهومی Terraform آمده است که نشان می‌دهد چگونه یک Global Accelerator با دو نقطه پایانی بین‌منطقه‌ای تعریف می‌شود:

resource "aws_globalaccelerator_accelerator" "app" {
  name                = "global-app-accel"
  enable_health_checks = true
  static_ip_address_policy = "IPV4"
}

resource "aws_globalaccelerator_listener" "http" {
  accelerator  = aws_globalaccelerator_accelerator.app.id
  protocol     = "TCP"
  port_ranges {
    from_port = 443
    to_port   = 443
  }
}

resource "aws_globalaccelerator_endpoint_group" "us_east" {
  listener_endpoint_group_id = aws_globalaccelerator_listener.http.id
  region                     = "us-east-1"

  endpoint_config {
    endpoint_id = "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/prod-elb/50dc6c495c0c9188"
    weight      = 100
  }
  
  health_monitor {
    port           = 443
    protocol       = "HTTPS"
    resource_path  = "/healthz"
    interval_seconds = 5
    threshold      = 2
  }
}

در این پیکربندی، مانیتور سلامت به‌طور فعال به نقطه پایانی /healthz پینگ می‌زند. اگر زمان پاسخ‌دهی از آستانه تعیین‌شده بیشتر شود یا کد وضعیت غیر از 2xx برگردانده شود، Global Accelerator وزن این نقطه پایانی را به صفر کاهش می‌دهد و به‌طور مؤثر ترافیک را به سایر مناطق در دسترس که در گروه‌های نقطه پایانی دیگر تعریف شده‌اند، هدایت می‌کند.

راهبردهای پیشرفته: Anycast در مقابل هدایت مبتنی بر DNS

تفکیک بین GSLB مبتنی بر DNS و مسیریابی Anycast بسیار حیاتی است. هدایت مبتنی بر DNS به زمان حل DNS و TTL وابسته است و در نتیجه مستعد ناسازگاری‌های کش می‌باشد. از سوی دیگر، Anycast همان آدرس IP را از چندین مکان فیزیکی اعلام می‌کند. پروتکل دروازه مرزی (BGP) اینترنت به‌طور خودکار ترافیک کاربر را در لایه شبکه به نزدیک‌ترین گره هدایت می‌کند.

Anycast انتقال بار سریع‌تری (ثانیه در مقابل دقیقه) ارائه می‌دهد زیرا به انتشار DNS وابسته نیست. با این حال، این روش به فضای قابل توجهی از آدرس‌های IP و اعلام‌های BGP پیچیده نیاز دارد. بسیاری از معماری‌های مدرن از یک رویکرد ترکیبی استفاده می‌کنند: Anycast برای دسترسی جهانی و تأخیر کم، همراه با آگاهی از لایه برنامه برای تعیین سرویس بک‌اند صحیح بر اساس موقعیت جغرافیایی IP ورودی.

نتیجه‌گیری

پیاده‌سازی GSLB یک کار یک‌سایز-برای-همه نیست. این کار نیازمند درک عمیقی از انتشار DNS، توپولوژی شبکه و سلامت برنامه است. با ترکیب بررسی‌های سلامت فعال، راهبردهای بهینه‌سازی TTL و به‌احتمال زیاد مسیریابی Anycast، می‌توانید سیستمی طراحی کنید که بدون توجه به محل قرارگیری کاربران، مقاوم و کارآمد باقی بماند. با رشد زیرساخت شما، در نظر گرفتن GSLB به عنوان یک مؤلفه معماری درجه یک برای حفظ اهداف سطح سرویس جهانی ضروری است.

Share: