Що ми робимо · Дані та web: Web-рівні високої доступності, N+1 на кожному шарі

Кожен шар вашого сайту існує принаймні двічі: термінація TLS, кеш сторінок, web-сервер і PHP. Плаваючі адреси переміщуються самі, коли вузол відмовляє, і ми розраховуємо стек так, щоб він працював на повній швидкості без одного вузла на кожному рівні.
Що це: балансування навантаження та кластеризація web-рівнів
Web-платформа для сайтів, які не можуть лежати: новини, e-commerce, видавництва, фронтенди SaaS. Edge термінує TLS і кешує сторінки, web-рівень працює на nginx із PHP-FPM, і все це побудовано так, що втрата вузла, його перезавантаження чи оновлення є тим, чого ваші відвідувачі ніколи не бачать.
Як ми це будуємо
Перехресний edge. Два edge-вузли на кожен ресурс запускають HAProxy для TLS, маршрутизації та перевірок стану, Varnish для кешування повних сторінок і keepalived для плаваючих адрес. Кожен edge є основним для однієї публічної адреси й резервним для іншої, тож обидва несуть трафік увесь час. Скрипт стану понижує edge, чий HAProxy перестає відповідати, і сусід перебирає його адресу за лічені секунди.
Web-рівень без улюбленців. За edge два або більше web-вузлів запускають nginx і PHP-FPM з одним пулом на сайт, з однаковою вагою. Адміністративний шлях закріплений за одним вузлом, який є також джерелом односторонньої реплікації файлів, тож завантаження та зміни плагінів доходять до інших вузлів за лічені секунди без конфліктних видалень.
Кеш, який обслуговує крізь негаразди. Varnish розміщений на all-flash сховищі з підтримкою SAN з обмеженим пулом пам’яті, що дозволяє йому тримати значно більше об’єктів, ніж вмістила б RAM, практично з тією самою швидкістю. Якщо кожен backend нездоровий, Varnish далі віддає останню справну копію кожної сторінки до доби. Інвалідація кешу керується подіями з CMS, тож опублікована стаття з’являється одразу, а не чекає на таймер.
Перезапуски, яких ніхто не бачить. HAProxy повторює й перенаправляє запит, коли backend перезапускається, перевірки стану налаштовані так, що ротація журналів ніколи не викликає flapping, а PHP-FPM можна перезапускати по одному вузлу, поки edge поглинає прогалину.
Dual-homed у fabric. Кожен web-вузол підключений до нашої fabric двома лінками, обидва в роботі; як побудовані bond-з’єднання, описано на сторінці fabric дата-центру.
Від чого це вас захищає
- Відмова або потреба перезавантажити єдиний web-вузол, вузол кешу чи балансувальника.
- Проблема з backend (обслуговування бази даних, завислий пул PHP), що перетворюється на порожню сторінку: читачі далі отримують кешований контент.
- Перезапуски безпеки та оновлення PHP, що дають видимі помилки.
- Сплеск трафіку, що перевантажує PHP, коли більшість запитів можна віддати з кешу.
На практиці
Навантажувальне тестування до запуску. На новій парі edge лайфстайл-видавця ми запустили десятки тисяч віртуальних користувачів на п’ятнадцять хвилин, утримуючи понад десять тисяч запитів на секунду з нулем помилок 503 і нулем збоїв перевірок стану backend.
Оновлення безпеки PHP посеред робочого дня. Ми оновили обидва web-вузли спортивного порталу наживо, по одному вузлу. Origin бачив короткі прогалини перезапуску приблизно по секунді кожна; edge повторив запити й віддав кешований контент, а кількість помилок, які отримали відвідувачі, дорівнювала нулю.
Більше кешу, менше пам’яті. Перенесення пари edge з кешу в RAM на сховище на основі flash звільнило великий обсяг пам’яті для іншої роботи.
Чому EuroVPS
- N+1 на кожному шарі, включно з балансувальниками, а не просто «два web-сервери за одним проксі».
- Failover протестований і виміряний перед передачею.
- Кеш спроєктований так, щоб тримати ваш сайт онлайн, коли backend не працює.
- Ми налаштовуємо перевірки стану, повтори та перенаправлення, тобто деталі, які вирішують, чи буде failover backend невидимим, чи просто коротким.
- Ті самі інженери керують мережею, сховищем і стеком, тож ніщо не губиться між командами.
Часті запитання
- Чи потрібен нам ще й CDN? Не для доступності. Багато клієнтів додають його для глобального охоплення; стек працює і з ним, і без нього, а ми налаштовуємо Varnish і HAProxy так, щоб вони його враховували.
- Скільки триває failover edge? Секунди. Ми вимірюємо його на кожній збірці й даємо вам цифру при передачі.
- Чи можна запускати на цьому WordPress, Magento та PrestaShop? Так, разом із Laravel і власним PHP. Кожен сайт отримує власний пул PHP-FPM.
- Що відбувається з авторизованими користувачами та оформленням замовлень? Ці запити за задумом оминають кеш і розподіляються по web-рівню. Втрата web-вузла переносить нові запити на вцілілі.
- Чи можемо ми розгортати код самостійно? Так. Розгортання потрапляють на адміністративний вузол і реплікуються далі або йдуть через ваш власний pipeline на кожен вузол.
Хочете сайт, який продовжує працювати, поки ми на ньому працюємо? Поговоріть з інженером.
Ваш наступний партнер з інфраструктури
Погляньмо на вашу інфраструктуру.
Розкажіть, що ви запускаєте сьогодні і що потребує покращення. Інженер розгляне ваш запит і допоможе спланувати наступний крок.
+357 222 32280
Почнімо з вашої інфраструктури.
Трохи контексту допомагає нам почати правильну розмову.
