کلاسترها، Load Balancing، Geo DNS، Anycast DNS و Fault Tolerance

آموزش جامع و عملی از مبانی تا پیشرفته — همراه با مثال‌های واقعی، تنظیمات NGINX، HAProxy، BIND، Docker Swarm و AWS Route 53

مبانی کلاسترها در شبکه‌های کامپیوتری

کلاستر (Cluster) به گروهی از سرورها یا سیستم‌ها گفته می‌شود که با هم کار می‌کنند تا عملکرد بهتری نسبت به یک سیستم منفرد فراهم کنند. این سیستم‌ها به گونه‌ای ترکیب می‌شوند که به نظر یک سیستم واحد می‌رسند.

اهداف اصلی کلاسترها شامل افزایش دسترس‌پذیری (Availability)، مقیاس‌پذیری (Scalability) و کارایی (Performance) است. منابع سخت‌افزاری و نرم‌افزاری بین سرورها به اشتراک گذاشته می‌شود تا بار کاری به طور موثر توزیع شود و در صورت خرابی یک سیستم، سایر سیستم‌ها به طور خودکار جایگزین شوند.

انواع کلاسترها

  1. کلاستر دسترس‌پذیری بالا (High Availability - HA): برای تضمین دسترس‌پذیری طراحی شده است. در صورت خرابی یک سرور، سیستم به سرور دیگری منتقل می‌شود تا سرویس قطع نشود.
  2. کلاستر تعادل بار (Load Balancing): بار کاری بین چندین سرور توزیع می‌شود تا کارایی سیستم افزایش یابد.
  3. کلاستر پردازش موازی (High Performance Computing - HPC): برای پردازش‌های محاسباتی پیچیده، مانند شبیه‌سازی‌ها، استفاده می‌شود.
  4. کلاستر هوش مصنوعی (AI Clusters): برای بارهای کاری AI و یادگیری ماشین، مانند تشخیص چهره.
  5. کلاستر توزیع‌شده: در چندین مکان جغرافیایی برای کاهش تأخیر و افزایش دسترس‌پذیری.

معماری کلاستر

کلاستر شامل نودهای متصل از طریق شبکه‌های پرسرعت (مانند InfiniBand) است. الگوهای معماری شامل:

مثال کدنویسی: تنظیم یک کلاستر ساده با Docker Swarm

# مقداردهی اولیه Docker Swarm
docker swarm init

# افزودن نودهای کارگر
docker swarm join --token <WORKER-TOKEN> <MANAGER-IP>:2377

# استقرار سرویس توزیع‌شده
docker service create --name my-app --replicas 3 --publish published=80,target=80 nginx:latest

این دستورات یک کلاستر ساده با Docker Swarm ایجاد می‌کند که ۳ کپی از NGINX را به صورت خودکار در نودهای موجود اجرا و بالانس می‌کند.

معماری کامل یک کلاستر Docker Swarm با Manager و Worker Nodes

flowchart TB subgraph Manager[نودهای مدیر] M1[Manager 1\nLeader] M2[Manager 2\nReplica] M3[Manager 3\nReplica] end subgraph Worker[نودهای کارگر] W1[Worker 1\nTask] W2[Worker 2\nTask] W3[Worker 3\nTask] W4[Worker 4\nTask] end Client[کلاینت] -->|docker service| M1 M1 <-->|Raft Consensus| M2 M1 <-->|Raft Consensus| M3 M1 -->|Scheduling| W1 & W2 & W3 & W4 W1 & W2 & W3 & W4 -->|Overlay Network| W1 style Manager fill:#e8f4fc,stroke:#3498db style Worker fill:#fef9e7,stroke:#f1c40f style Client fill:#d5f5e3,stroke:#27ae60

Load Balancing (تعادل بار)

Load Balancer دستگاه یا نرم‌افزاری است که ترافیک ورودی را بین چندین سرور توزیع می‌کند تا از overload شدن جلوگیری کرده و کارایی را افزایش دهد.

انواع Load Balancer

الگوریتم‌های توزیع

مثال کدنویسی: تنظیم NGINX به عنوان Load Balancer

http {
    upstream backend {
        least_conn;  # الگوریتم Least Connections
        server backend1.example.com weight=3;
        server backend2.example.com weight=2;
        server backend3.example.com weight=1 backup;
    }

    server {
        listen 80;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
}

معماری Load Balancer با Health Check و Automatic Failover

flowchart LR C[کلاینت‌ها] --> LB[Load Balancer\nHAProxy / NGINX / ELB] LB -->|HTTP 200| A[سرور A\nفعال] LB -->|HTTP 200| B[سرور B\nفعال] LB -->|HTTP 502| C[سرور C\nخراب] LB -->|اگر همه خراب شوند| D[سرور Backup\nخودکار فعال] A & B & D --> DB[(دیتابیس مشترک)] style C fill:#e74c3c,color:white style D fill:#f39c12,color:white style LB fill:#3498db,color:white style A fill:#27ae60,color:white style B fill:#27ae60,color:white

Geo DNS (هدایت جغرافیایی DNS)

Geo DNS پاسخ‌های DNS را بر اساس موقعیت جغرافیایی کاربر سفارشی می‌کند. به جای یک IP ثابت، IP سروری نزدیک به کاربر برگردانده می‌شود.

مثال کدنویسی: تنظیم Geo DNS با BIND

// named.conf
acl "europe" { 185.0.0.0/8; 2a00::/12; };   // مثال ساده
acl "asia"   { 1.0.0.0/8; 103.0.0.0/8; };

view "europe" {
    match-clients { europe; };
    zone "example.com" {
        type master;
        file "/var/lib/bind/db.example.com.eu";
    };
};

view "asia" {
    match-clients { asia; };
    zone "example.com" {
        type master;
        file "/var/lib/bind/db.example.com.asia";
    };
};

// db.example.com.eu
example.com. IN A 185.12.34.56

// db.example.com.asia
example.com. IN A 103.45.67.89

Anycast DNS (دی‌ان‌اس انی‌کست)

Anycast DNS روشی است که در آن یک آدرس IP واحد به چندین سرور DNS در مکان‌های جغرافیایی مختلف اختصاص داده می‌شود. پروتکل BGP درخواست‌ها را به نزدیک‌ترین سرور هدایت می‌کند.

مزایا و معایب

Fault Tolerance (تحمل خطا)

Fault Tolerance توانایی سیستم برای ادامه کار در صورت خرابی یک یا چند جزء است.

مثال کدنویسی: HAProxy با Health Check و Failover

frontend http_front
    bind *:80
    default_backend web_servers

backend web_servers
    balance roundrobin
    option httpchk GET /health
    server web1 192.168.1.11:80 check inter 2000 rise 2 fall 3
    server web2 192.168.1.12:80 check backup inter 2000 rise 2 fall 3

ترکیب همه فناوری‌ها: معماری GSLB جهانی

معماری کامل Global Server Load Balancing با Anycast + Geo DNS + Regional LB + Fault Tolerance

flowchart TD subgraph Users[کاربران جهانی] U1[تهران] --> DNS U2[لندن] --> DNS U3[نیویورک] --> DNS U4[سنگاپور] --> DNS end DNS[Anycast DNS\nIP یکسان در همه قاره‌ها] -->|BGP Routing| R1[دیتاسنتر اروپا] DNS -->|BGP Routing| R2[دیتاسنتر آسیا] DNS -->|BGP Routing| R3[دیتاسنتر آمریکا] R1 --> LB1[Regional LB + Health Check] R2 --> LB2[Regional LB + Health Check] R3 --> LB3[Regional LB + Health Check] LB1 --> S1[سرور ۱] & S2[سرور ۲] LB2 --> S3[سرور ۳] & S4[سرور ۴] LB3 --> S5[سرور ۵] & S6[سرور ۶] style Users fill:#d6eaf8,stroke:#3498db style DNS fill:#f9e79f,stroke:#f1c40f style R1 fill:#eafaf1,stroke:#27ae60 style R2 fill:#fad7ac,stroke:#e67e22 style R3 fill:#f5b7b1,stroke:#c0392b

معماری کامل CDN جهانی (Content Delivery Network)

نحوه کار CDN با Anycast، Edge Locations، Origin Shield و Cache Hit/Miss

flowchart TD User[کاربر تهران] -->|DNS Query| CDN[CDN Anycast DNS] CDN --> EdgeTH[Edge تهران\nCache Hit → 3ms] CDN --> EdgeLN[Edge لندن\nCache Miss] CDN --> EdgeNY[Edge نیویورک\nCache Miss] EdgeLN --> ShieldEU[Origin Shield اروپا] EdgeNY --> ShieldUS[Origin Shield آمریکا] EdgeTH -.->|Cache Miss نادر| ShieldEU ShieldEU --> Origin[Origin Server اصلی\nایران یا AWS] ShieldUS --> Origin style User fill:#ffebcc,stroke:#e67e22 style EdgeTH fill:#d5f5e3,stroke:#27ae60 style ShieldEU fill:#f8c471,stroke:#e67e22 style Origin fill:#e74c3c,color:white

مفاهیم پیشرفته

در سطوح پیشرفته، تمرکز بر موارد زیر است:

کاربردها

مزایا و معایب

مزایا

معایب