پیدا کردن گلوگاه
تحلیل لاگ های Nginx، slow query log دیتابیس و مصرف منابع تا پیش از اضافه کردن سرور معلوم شود فشار واقعاً کجاست.
شروع و ارزیابی
ارزیابی رایگان 5مشکل فوری
خدمات فوری 4پشتیبانی مستمر
قرارداد پشتیبانی 5پروژه ها
سرور و هاستینگ 6 شبکه و مجازی سازی 9 دواپس و اتوماسیون 5 امنیت و بازیابی 5 تجهیزات و لایسنس 2بدون هزینه بفهمید وضعیت سرور، امنیت، بکاپ و سرعت سیستم هایتان چطور است.
سرور یا شبکه قطع است، سایت هک شده یا اطلاعات از دست رفته؟ همین حالا تماس بگیرید.
پشتیبانی و نگهداری ماهانه شبکه و سرور با زمان پاسخ مشخص در قرارداد.
نصب، کانفیگ، مدیریت و انتقال سرورهای لینوکس، ویندوز، کنترل پنل ها و ایمیل سرور.
طراحی و اجرای شبکه، میکروتیک، ویپ، اتصال شعب، مجازی سازی و ابر خصوصی.
شبکه و ارتباطات
مجازی سازی و ابر
کانتینر، کوبرنتیز، استقرار خودکار، زیرساخت به عنوان کد و مانیتورینگ پیشرفته.
امن سازی سرور، فایروال، بکاپ و DR، بازیابی از باج افزار و بررسی حملات.
مشاوره، تأمین و نصب سرور و تجهیزات شبکه، و لایسنس اورجینال نرم افزارهای سازمانی.
شروع و ارزیابی
مشکل فوری
پشتیبانی مستمر
پروژه ها
کمپین تبلیغاتی شروع می شود، بازدید چند برابر می شود و اگر هاست پربازدید آماده نکرده باشید، سایت درست در همان ساعت از دسترس خارج می شود. در لود بالانسینگ سرور، ترافیک بین چند سرور تقسیم می شود و معماری طوری طراحی می شود که خرابی یک سرور کل سرویس را متوقف نکند. طراحی را از اندازه واقعی ترافیک و بودجه شما شروع می کنیم.
هاست پربازدید با لود بالانسینگ یعنی معماری ای که ترافیک سایت را بین چند سرور تقسیم می کند تا سایت در اوج بازدید پایدار بماند و خرابی یک سرور کل سرویس را متوقف نکند. این خدمت برای سایتی است که روزهای حراج خطای 503 می دهد، همه چیزش روی یک سرور است یا دیتابیسش زیر بار کوئری ها قفل می شود. پیکوسیستم اول گلوگاه را با لاگ های Nginx و slow query log پیدا می کند، HAProxy را با health check و دو نود Keepalived راه اندازی می کند، رپلیکیشن MySQL یا Galera Cluster را با ProxySQL تنظیم می کند، Redis را برای session و کش به کار می گیرد و با k6 تست بار و با خاموش کردن عمدی یک نود تست خرابی انجام می دهد. نتیجه، نمودار معماری، گزارش تست بار با ظرفیت اندازه گیری شده، Runbook خرابی و مستند پیکربندی است.
تحلیل لاگ های Nginx، slow query log دیتابیس و مصرف منابع تا پیش از اضافه کردن سرور معلوم شود فشار واقعاً کجاست.
راه اندازی HAProxy یا Nginx با health check، و دو نود بالانسر با Keepalived و IP شناور تا خود بالانسر نقطه تک خرابی نباشد.
رپلیکیشن MySQL یا MariaDB به صورت Primary/Replica یا Galera Cluster و هدایت کوئری های خواندنی به Replica با ProxySQL.
Redis برای session و object cache، کش صفحه در Nginx یا LiteSpeed و انتقال فایل های استاتیک به CDN.
همگام نگه داشتن فایل های آپلودی بین نودها با NFS، GlusterFS یا فضای ذخیره سازی S3 سازگار مثل MinIO.
تست بار با k6 یا JMeter و خاموش کردن عمدی یک نود برای اطمینان از اینکه جابه جایی واقعاً کار می کند.
رپلیکیشن Primary/Replica ساده تر است و روی دو سرور اجرا می شود، ولی ناهمزمان است. Replica ممکن است چند ثانیه عقب باشد و مشتری ای که تازه سفارش ثبت کرده، اگر کوئری خواندنی اش به Replica برود، سفارشش را نبیند. جابه جا کردن نقش Primary هنگام خرابی هم به ابزار یا روال مشخصی نیاز دارد.
Galera Cluster همزمان است و هر نود کل داده را دارد، اما برای جلوگیری از split-brain دست کم سه نود یا دو نود همراه garbd لازم دارد. فقط با جدول های InnoDB کار می کند و به تأخیر شبکه حساس است، پس نودها باید در یک دیتاسنتر یا روی لینک کم تأخیر باشند.
اگر همین حالا 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 برای وقتی است که کل دیتاسنتر، خود داده ها یا حساب ارائه دهنده ابر از دست برود. کلاستری که هر سه نودش در یک دیتاسنتر است، در برابر قطعی آن دیتاسنتر یا حذف اشتباهی داده محافظتی ندارد.
برنامه ریزی DR با دو عدد شروع می شود: RPO یعنی حداکثر داده ای که از دست دادنش قابل تحمل است، و RTO یعنی مدتی که سرویس می تواند متوقف بماند. همین دو عدد تعیین می کنند که بکاپ خارج از سایت کافی است یا به یک سایت دوم آماده نیاز دارید.
ترافیک فعلی، الگوی اوج بازدید و گلوگاه ها را اندازه می گیریم تا معلوم شود مشکل از کجاست.
معماری را با تعداد سرور، هزینه و میزان تحمل خرابی پیشنهاد می کنیم. گاهی بهینه سازی همان سرور فعلی کافی است.
اجزا یکی یکی اضافه می شوند و هر مرحله پیش از مرحله بعد تست می شود، بدون اینکه کل سایت یک باره جابه جا شود.
تست بار و تست خرابی انجام می شود، نتایج را گزارش می کنیم و Runbook را به تیم شما تحویل می دهیم.
خیر. رپلیکیشن هر تغییری را، از جمله حذف اشتباهی یک جدول، فوراً روی سرور دوم هم اعمال می کند. برای برگشت از خطای انسانی یا باج افزار همچنان بکاپ مستقل و نسخه دار لازم است.
کلاستر سرور یعنی چند سرور که یک سرویس را با هم اجرا می کنند تا بار تقسیم شود و خرابی یکی، سرویس را متوقف نکند. همیشه لازم نیست. در بسیاری از سایت ها کش درست، بهینه سازی کوئری ها و تنظیم PHP-FPM ظرفیت همان سرور را به طور محسوسی بالا می برد. کلاستر وقتی لازم می شود که یک سرور به سقف ظرفیتش رسیده باشد یا حتی قطعی کوتاه برای کسب و کار قابل قبول نباشد.
بله. HAProxy، Keepalived و رپلیکیشن دیتابیس روی سرور مجازی و ابری اجرا می شوند. فقط برای IP شناور باید پشتیبانی دیتاسنتر یا ارائه دهنده ابر را بررسی کنیم و گاهی لود بالانسر خود ارائه دهنده انتخاب مناسب تری است.
هزینه دو بخش دارد: سرورهای اضافه و کار طراحی و اجرا. بعد از اندازه گیری، دو یا سه گزینه با میزان تحمل خرابی متفاوت پیشنهاد می دهیم تا بتوانید هزینه را با ریسک مقایسه کنید.
جست وجوهای مرتبط
سرور و هاستینگ
سرور و هاستینگ استعلام
چند خط درباره وضعیت فعلی و چیزی که می خواهید بنویسید. یک مهندس خودش تماس می گیرد، نه واحد فروش.