Перейти до вмісту
EuroVPSEuroVPS

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

Web-стеки N+1 з HAProxy, Varnish, nginx і PHP-FPM за плаваючими адресами: відмови вузлів, перезавантаження та патчі PHP, невидимі для ваших відвідувачів.
Blade-шасі HPE c7000 у Digital Realty Athens

Кожен шар вашого сайту існує принаймні двічі: термінація 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 невидимим, чи просто коротким.
  • Ті самі інженери керують мережею, сховищем і стеком, тож ніщо не губиться між командами.

Часті запитання

  1. Чи потрібен нам ще й CDN? Не для доступності. Багато клієнтів додають його для глобального охоплення; стек працює і з ним, і без нього, а ми налаштовуємо Varnish і HAProxy так, щоб вони його враховували.
  2. Скільки триває failover edge? Секунди. Ми вимірюємо його на кожній збірці й даємо вам цифру при передачі.
  3. Чи можна запускати на цьому WordPress, Magento та PrestaShop? Так, разом із Laravel і власним PHP. Кожен сайт отримує власний пул PHP-FPM.
  4. Що відбувається з авторизованими користувачами та оформленням замовлень? Ці запити за задумом оминають кеш і розподіляються по web-рівню. Втрата web-вузла переносить нові запити на вцілілі.
  5. Чи можемо ми розгортати код самостійно? Так. Розгортання потрапляють на адміністративний вузол і реплікуються далі або йдуть через ваш власний pipeline на кожен вузол.

Хочете сайт, який продовжує працювати, поки ми на ньому працюємо? Поговоріть з інженером.

Ваш наступний партнер з інфраструктури

Погляньмо на вашу інфраструктуру.

Розкажіть, що ви запускаєте сьогодні і що потребує покращення. Інженер розгляне ваш запит і допоможе спланувати наступний крок.

+357 222 32280
Інженер EuroVPS несе серверний вузол у залі дата-центру
Розмова з людьми, які доглядатимуть за вашою інфраструктурою.

Почнімо з вашої інфраструктури.

Трохи контексту допомагає нам почати правильну розмову.

Ми використаємо ваші дані, щоб відповісти на ваш запит. Політика конфіденційності