پیکوسیستم خدمات فنی IT
سرور و هاستینگ

راه اندازی هاست پربازدید با لود بالانسینگ و High Availability

کمپین تبلیغاتی شروع می شود، بازدید چند برابر می شود و اگر هاست پربازدید آماده نکرده باشید، سایت درست در همان ساعت از دسترس خارج می شود. در لود بالانسینگ سرور، ترافیک بین چند سرور تقسیم می شود و معماری طوری طراحی می شود که خرابی یک سرور کل سرویس را متوقف نکند. طراحی را از اندازه واقعی ترافیک و بودجه شما شروع می کنیم.

ابزارها و فناوری ها high-availability
  • HAProxy
  • Nginx
  • Keepalived
  • MariaDB Galera Cluster
  • ProxySQL
  • Redis
  • MinIO
  • k6
  • Prometheus
6بخش کار
4خروجی
4مرحله

هاست پربازدید و HA چیست؟

هاست پربازدید با لود بالانسینگ یعنی معماری ای که ترافیک سایت را بین چند سرور تقسیم می کند تا سایت در اوج بازدید پایدار بماند و خرابی یک سرور کل سرویس را متوقف نکند. این خدمت برای سایتی است که روزهای حراج خطای 503 می دهد، همه چیزش روی یک سرور است یا دیتابیسش زیر بار کوئری ها قفل می شود. پیکوسیستم اول گلوگاه را با لاگ های Nginx و slow query log پیدا می کند، HAProxy را با health check و دو نود Keepalived راه اندازی می کند، رپلیکیشن MySQL یا Galera Cluster را با ProxySQL تنظیم می کند، Redis را برای session و کش به کار می گیرد و با k6 تست بار و با خاموش کردن عمدی یک نود تست خرابی انجام می دهد. نتیجه، نمودار معماری، گزارش تست بار با ظرفیت اندازه گیری شده، Runbook خرابی و مستند پیکربندی است.

چه زمانی به هاست پربازدید و HA نیاز دارید؟

  • روزهای حراج، سایت کند می شود یا خطای 503 می دهد.
  • همه چیز روی یک سرور است و اگر آن خراب شود، کار متوقف می شود.
  • دیتابیس زیر بار کوئری ها قفل می شود.
  • برای ارتقای سرور مجبوریم سایت را چند ساعت ببندیم.

هاست پربازدید و HA شامل چه کارهایی است؟

01

پیدا کردن گلوگاه

تحلیل لاگ های Nginx، slow query log دیتابیس و مصرف منابع تا پیش از اضافه کردن سرور معلوم شود فشار واقعاً کجاست.

02

لود بالانسر

راه اندازی HAProxy یا Nginx با health check، و دو نود بالانسر با Keepalived و IP شناور تا خود بالانسر نقطه تک خرابی نباشد.

03

رپلیکیشن دیتابیس

رپلیکیشن MySQL یا MariaDB به صورت Primary/Replica یا Galera Cluster و هدایت کوئری های خواندنی به Replica با ProxySQL.

04

کش و نشست ها

Redis برای session و object cache، کش صفحه در Nginx یا LiteSpeed و انتقال فایل های استاتیک به CDN.

05

فایل های مشترک

همگام نگه داشتن فایل های آپلودی بین نودها با NFS، GlusterFS یا فضای ذخیره سازی S3 سازگار مثل MinIO.

06

تست بار و تست خرابی

تست بار با k6 یا JMeter و خاموش کردن عمدی یک نود برای اطمینان از اینکه جابه جایی واقعاً کار می کند.

بعد از هاست پربازدید و HA چه چیزی تحویل می گیرید؟

  • نمودار معماری با نقش هر سرور و مسیر ترافیک
  • گزارش تست بار با ظرفیت اندازه گیری شده
  • Runbook برای خرابی نود، جابه جایی دیتابیس و افزودن سرور جدید
  • مستند پیکربندی لود بالانسر، دیتابیس و کش

راهنمای هاست پربازدید و HA

Galera Cluster یا رپلیکیشن Primary/Replica؟

رپلیکیشن Primary/Replica ساده تر است و روی دو سرور اجرا می شود، ولی ناهمزمان است. Replica ممکن است چند ثانیه عقب باشد و مشتری ای که تازه سفارش ثبت کرده، اگر کوئری خواندنی اش به Replica برود، سفارشش را نبیند. جابه جا کردن نقش Primary هنگام خرابی هم به ابزار یا روال مشخصی نیاز دارد.

Galera Cluster همزمان است و هر نود کل داده را دارد، اما برای جلوگیری از split-brain دست کم سه نود یا دو نود همراه garbd لازم دارد. فقط با جدول های InnoDB کار می کند و به تأخیر شبکه حساس است، پس نودها باید در یک دیتاسنتر یا روی لینک کم تأخیر باشند.

HAProxy یا Nginx برای لود بالانسینگ سرور؟

اگر همین حالا Nginx جلوی سایت قرار دارد، تعریف upstream در Nginx ساده ترین قدم اول است. محدودیتش این است که نسخه متن باز Nginx فقط health check غیرفعال دارد و سرور خراب را وقتی کنار می گذارد که درخواست های واقعی کاربران با خطا روبه رو شده اند.

HAProxy در نسخه رایگان health check فعال روی آدرسی مثل /health انجام می دهد، صفحه آمار لحظه ای دارد و در حالت TCP می تواند جلوی MySQL یا Redis هم قرار بگیرد. در معماری های چندلایه معمولاً HAProxy توزیع ترافیک را انجام می دهد و Nginx روی هر نود کش و فایل های استاتیک را مدیریت می کند.

اشتباهات رایج در راه اندازی کلاستر سرور

health check که فقط باز بودن پورت 80 را بررسی کند، نودی را که خطای 500 می دهد سالم می داند و همچنان ترافیک به آن می فرستد. آدرس health check باید به دیتابیس و کش هم سر بزند. کارهای زمان بندی شده هم دردسر می سازند. وقتی cron روی همه نودها اجرا شود، ایمیل ها دو یا سه بار ارسال و گزارش ها چند بار ساخته می شوند.

اشتباه دیگر قرار دادن همه نودها روی یک سرور فیزیکی یا یک هاست مجازی است، که خرابی همان هاست کل کلاستر را از کار می اندازد. قاعده anti-affinity در hypervisor یا انتخاب سرورها در zoneهای متفاوت این ریسک را کم می کند.

High Availability و Disaster Recovery چه فرقی دارند؟

High Availability خرابی یک جزء را در همان محل پوشش می دهد، مثل خاموش شدن یک نود یا از کار افتادن دیسک. Disaster Recovery برای وقتی است که کل دیتاسنتر، خود داده ها یا حساب ارائه دهنده ابر از دست برود. کلاستری که هر سه نودش در یک دیتاسنتر است، در برابر قطعی آن دیتاسنتر یا حذف اشتباهی داده محافظتی ندارد.

برنامه ریزی DR با دو عدد شروع می شود: RPO یعنی حداکثر داده ای که از دست دادنش قابل تحمل است، و RTO یعنی مدتی که سرویس می تواند متوقف بماند. همین دو عدد تعیین می کنند که بکاپ خارج از سایت کافی است یا به یک سایت دوم آماده نیاز دارید.

مراحل هاست پربازدید و HA

  1. 01

    اندازه گیری

    ترافیک فعلی، الگوی اوج بازدید و گلوگاه ها را اندازه می گیریم تا معلوم شود مشکل از کجاست.

  2. 02

    طراحی

    معماری را با تعداد سرور، هزینه و میزان تحمل خرابی پیشنهاد می کنیم. گاهی بهینه سازی همان سرور فعلی کافی است.

  3. 03

    اجرای مرحله ای

    اجزا یکی یکی اضافه می شوند و هر مرحله پیش از مرحله بعد تست می شود، بدون اینکه کل سایت یک باره جابه جا شود.

  4. 04

    تست و تحویل

    تست بار و تست خرابی انجام می شود، نتایج را گزارش می کنیم و Runbook را به تیم شما تحویل می دهیم.

سؤالات متداول درباره هاست پربازدید و HA

رپلیکیشن دیتابیس MySQL جای بکاپ را می گیرد؟

خیر. رپلیکیشن هر تغییری را، از جمله حذف اشتباهی یک جدول، فوراً روی سرور دوم هم اعمال می کند. برای برگشت از خطای انسانی یا باج افزار همچنان بکاپ مستقل و نسخه دار لازم است.

کلاستر سرور چیست و سایت پربازدید حتماً به آن نیاز دارد؟

کلاستر سرور یعنی چند سرور که یک سرویس را با هم اجرا می کنند تا بار تقسیم شود و خرابی یکی، سرویس را متوقف نکند. همیشه لازم نیست. در بسیاری از سایت ها کش درست، بهینه سازی کوئری ها و تنظیم PHP-FPM ظرفیت همان سرور را به طور محسوسی بالا می برد. کلاستر وقتی لازم می شود که یک سرور به سقف ظرفیتش رسیده باشد یا حتی قطعی کوتاه برای کسب و کار قابل قبول نباشد.

این معماری روی سرورهای ابری ایرانی قابل اجراست؟

بله. HAProxy، Keepalived و رپلیکیشن دیتابیس روی سرور مجازی و ابری اجرا می شوند. فقط برای IP شناور باید پشتیبانی دیتاسنتر یا ارائه دهنده ابر را بررسی کنیم و گاهی لود بالانسر خود ارائه دهنده انتخاب مناسب تری است.

هزینه High Availability چطور برآورد می شود؟

هزینه دو بخش دارد: سرورهای اضافه و کار طراحی و اجرا. بعد از اندازه گیری، دو یا سه گزینه با میزان تحمل خرابی متفاوت پیشنهاد می دهیم تا بتوانید هزینه را با ریسک مقایسه کنید.

جست وجوهای مرتبط

  • کلاستر سرور
  • راه اندازی HAProxy
  • High Availability Server
  • High Availability Load Balancer
  • High Availability Cluster
  • هاست پربازدید ایران

استعلام

کارتان را بگویید، مسیر و هزینه را می گوییم

چند خط درباره وضعیت فعلی و چیزی که می خواهید بنویسید. یک مهندس خودش تماس می گیرد، نه واحد فروش.

  1. 01درخواست را می خوانیم و اگر ابهامی بود تماس می گیریم.
  2. 02در صورت نیاز، بررسی اولیه ریموت یا بازدید انجام می شود.
  3. 03پیشنهاد مکتوب با دامنه کار، زمان بندی و هزینه می فرستیم.

اطلاعات شما فقط برای پاسخ به همین درخواست استفاده می شود.