Як збалансувати навантаження сайту між GCP і AWS за допомогою Cloudflare?

Розподіл трафіку між AWS та GCP за допомогою Cloudflare Load Balancer

Дізнайтеся, як скористатися можливостями балансувальника навантаження Cloudflare (LB) для ефективного розподілу трафіку між веб-сервісами Amazon (AWS) та хмарною платформою Google (GCP).

Більшість сучасних веб-застосунків потребують розподілу навантаження між різними серверами або службами, які знаходяться в одному центрі обробки даних.

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

Важлива не тільки безперебійна робота, але й інші аспекти.

Наприклад:

  • Необхідність активного-пасивного або активного-активного режиму роботи центрів обробки даних.
  • Наявність надійного плану аварійного відновлення.
  • Використання переваг декількох центрів обробки даних для пришвидшення обробки запитів користувачів, які знаходяться у різних локаціях.
  • Дотримання вимог відповідності.

Cloudflare пропонує рішення для локального та глобального балансування навантаження, які дозволяють ефективно розподіляти трафік між різними центрами обробки даних.

Основні функції Cloudflare LB:

  • Вбудовані перевірки працездатності, що дозволяють швидко вимикати сервери з проблемами.
  • Автоматичне переключення на резервний сервер у випадку збою основного.
  • Зменшення затримки завдяки перенаправленню трафіку на найближчий сервер.
  • Підтримка DNS, HTTP(S), TCP та UDP протоколів.
  • Закріплення сеансу, що гарантує потрапляння запиту на той самий сервер.

Усі ці параметри можна налаштувати через зручну панель керування Cloudflare або за допомогою API.

Інструкції, описані нижче, технічно застосовні до балансування навантаження на будь-якій хмарній платформі, такій як Azure, DigitalOcean, Alibaba та інші. Однак, для наочності я обрав GCP та AWS.

Налаштування AWS та GCP

Для демонстрації я підготував по одному серверу на платформах GCP та AWS:

  • Встановив Nginx.
  • Додав файл index.html зі спеціальним текстом, щоб ідентифікувати, з якого сервера обслуговується сторінка.
  • Запустив Nginx, і сторінка стала доступною з обох серверів.

Тепер перейдемо до Cloudflare для налаштування LB.

Активація Cloudflare Load Balancer

Я використовуватиму свій домен (bloggerflare.com) для цієї демонстрації.

Важливо: Балансувальник навантаження Cloudflare не є безкоштовним. Тарифи починаються від 5 доларів на місяць.

Припускається, що у вас вже є обліковий запис Cloudflare. Якщо ні, зареєструйтесь та додайте свій домен, як я показував у попередніх інструкціях.

  • Увійдіть до Cloudflare та виберіть домен, для якого потрібно ввімкнути балансування навантаження.
  • Перейдіть на вкладку “Трафік” та ввімкніть опцію “Балансування навантаження”.

  • Налаштуйте параметри відповідно до ваших потреб. Я залишу мінімальні налаштування.

Якщо ви хочете перенаправляти запити на найближчий сервер, ввімкніть географічне маршрутування.

  • Підтвердіть підписку та активуйте її.

Як бачите, вартість починається від 5 доларів на місяць за використання двох серверів з перевіркою працездатності кожну хвилину.

Сьогодні ця інфраструктура є дуже доступною. Ще 5 років тому уявити собі хмарний балансувальник навантаження за 5 доларів було важко.

Отже, Cloudflare LB активовано та готовий до налаштування.

Створення Cloudflare LB

Підтвердження підписки займе кілька секунд, після чого вас поверне на сторінку “Трафік”.

  • Натисніть “Створити балансувальник навантаження”.

  • Введіть домен, для якого налаштовується балансування.
  • Розгорніть “Приналежність до сеансу” та оберіть “За Cloudflare Cookie”, якщо потрібне збереження сеансу.

  • Вкажіть назву пулу та вихідні сервери (сервери, на які буде перенаправлено трафік).

  • Далі налаштуйте перевірку працездатності.

Перевірка працездатності є обов’язковою. Cloudflare не буде відправляти трафік на недоступне джерело, якщо перевірка не вдалася.

  • Якщо ваше джерело прослуховує порт 80, оберіть HTTP, для порту 443 – HTTPS.

Cloudflare також дозволяє налаштувати додаткові параметри перевірки працездатності, такі як:

  • Метод GET або HEAD.
  • Очікуваний код відповіді HTTP.
  • Перевірка вмісту тіла відповіді.
  • Кількість спроб до того, як джерело буде вважатись справним чи ні.
  • Перевірка імені заголовка.

І нарешті, збережіть конфігурацію та розгорніть.

  • LB проведе перевірку працездатності, і через декілька секунд ви побачите, що стан джерел – “справний”.

Чудово! Це означає, що балансувальник навантаження Cloudflare готовий отримувати трафік з інтернету та перенаправляти його на налаштовані сервери.

Тестування Load Balancer

Проведемо простий тест, щоб переконатися, що все працює.

  • Спробуйте відкрити ваш домен.

Відмінно!

LB перенаправив запит на віртуальну машину Google Cloud та отримав відповідь. Запит видно у логах Nginx.

162.158.167.174 - - [19/Dec/2017:10:25:41 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
  • Вимкнемо Nginx на GCP та знову спробуємо відкрити сторінку.

  • Як бачите, запитувана сторінка тепер обслуговується з AWS.

Я бачу, що LB виключив GCP з пулу.

За замовчуванням в логах доступу Nginx буде відображатися IP-адреса Cloudflare. Якщо вам потрібно відновити IP-адресу клієнта, ознайомтеся з відповідними інструкціями.

Висновок

Впровадження балансувальника навантаження Cloudflare – це проста задача, яка може зайняти менше 15 хвилин. Якщо вам потрібна висока доступність між кількома центрами обробки даних або вихідними серверами, рекомендую спробувати його в дії.

Сподобалася стаття? Поділіться нею з друзями!