Як здійснити маршрутизацію на основі шляху за допомогою Application Load Balancer?

pic

При створенні масштабованих додатків у вас можуть бути різні сервіси, які обробляють різні шляхи URL (наприклад, /api/*, /images/*). Application Load Balancer (ALB) в AWS дозволяє здійснювати маршрутизацію на основі шляху, направляючи трафік до конкретних цільових груп залежно від шляху URL, запитаного користувачем. Це особливо корисно для архітектури мікросервісів, де різні сервіси обробляють різні частини програми.

У цьому блозі ми проведемо вас через процес налаштування маршрутизації на основі шляху за допомогою ALB, на прикладі маршрутизації трафіку до різних інстансів EC2 залежно від шляхів URL.

Крок 1: Запустіть EC2 інстанси

Перейдіть до панелі EC2: Якщо у вас немає EC2 інстансів, запустіть хоча б 2 EC2 інстанси для нашого прикладу:

  • Сервіс 1: Обробляє запити до /api/*.
  • Сервіс 2: Обробляє запити до /images/*.

Налаштуйте групи безпеки:

  • Дозвольте вхідний трафік на HTTP (порт 80) або HTTPS (порт 443) для програми.

Крок 2: Створіть цільові групи для кожного сервісу

Кожен сервіс (представлений інстансом EC2 або набором інстансів EC2) потребує своєї власної Цільової групи.

Перейдіть до панелі EC2, і в розділі Load Balancing натисніть на Target Groups.

Створіть цільову групу для Сервісу 1:

  • Тип цілі: Виберіть Instances.
  • Протокол: Виберіть HTTP.
  • Порт: Виберіть 80.
  • Перевірка здоров’я: Використовуйте налаштування за замовчуванням або налаштуйте конкретний шлях для перевірки здоров’я (наприклад, /api/health).
  • Зареєструвати цілі: Виберіть ваші EC2 інстанси, які обробляють перший сервіс, і додайте їх до цільової групи.

Створіть цільову групу для Сервісу 2:

  • Тип цілі: Виберіть Instances.
  • Протокол: Виберіть HTTP.
  • Порт: Виберіть 80.
  • Перевірка здоров’я: Використовуйте налаштування за замовчуванням або налаштуйте конкретний шлях для перевірки здоров’я (наприклад, /images/health).
  • Зареєструвати цілі: Виберіть ваші EC2 інстанси, які обробляють другий сервіс, і додайте їх до цільової групи.

Крок 3: Створіть Application Load Balancer

Перейдіть до панелі EC2, і в розділі Load Balancing натисніть на Load Balancers.

Натисніть на Create Load Balancer і виберіть Application Load Balancer.

  • Назва: Дайте вашому ALB ім'я (наприклад, MyApp-ALB).
  • Схема: Виберіть Internet-facing, щоб зробити його доступним для публіки.
  • Прослуховувачі: Виберіть HTTP (порт 80) або HTTPS (порт 443) залежно від ваших потреб.
  • VPC: Виберіть VPC, де працюють ваші EC2 інстанси.

Налаштуйте групи безпеки:

  • Виберіть або створіть групу безпеки, яка дозволяє HTTP (порт 80) або HTTPS (порт 443) трафік.

Перевірка і створення: Перевірте всі налаштування і натисніть Create, щоб створити ALB.

Крок 4: Налаштуйте маршрутизацію на основі шляху

Тепер, коли ALB та цільові групи створені, ми налаштуємо маршрутизацію на основі шляху.

Перейдіть до налаштувань Load Balancer в AWS Management Console.

Редагуйте прослуховувач:

  • У вкладці Listeners натисніть View/edit rules біля прослуховувача (наприклад, HTTP:80).

pic

Додайте правило для маршрутизації на основі шляху:

  • Натисніть Add Rule, щоб визначити нове правило для маршрутизації на основі шляху.
  • Умова: Виберіть Path як тип умови.
  • Шлях: Введіть шлях URL, який ви хочете маршрутизувати до конкретної цільової групи.
    Наприклад:
  • /api/* має маршрутизуватися до Цільової групи для Сервісу 1.
  • /images/* має маршрутизуватися до Цільової групи для Сервісу 2.

pic

Налаштуйте дії:

  • Дія: Виберіть Forward to та виберіть відповідну цільову групу (Сервіс 1 або Сервіс 2).

Збережіть правило: Після налаштування умов і дій натисніть Save, щоб застосувати зміни.

Крок 5: Перевірте налаштування

Отримайте DNS ALB: Після налаштування ALB ви отримаєте DNS-ім’я (наприклад, myapp-alb-12345678.us-west-2.elb.amazonaws.com).

pic

Перевірте маршрутизацію на основі шляху:

  • Перейдіть за DNS ALB з шляхом /api/: Наприклад, http://myapp-alb-12345678.us-west-2.elb.amazonaws.com/api/.
  • Запит має бути направлений до Сервісу 1 (Цільової групи для /api/*).
  • Перейдіть за DNS ALB з шляхом /images/: Наприклад, http://myapp-alb-12345678.us-west-2.elb.amazonaws.com/images/.
  • Запит має бути направлений до Сервісу 2 (Цільової групи для /images/*).

Перевірте відмову: Спробуйте зупинити один із EC2 інстансів у Сервісі 1 або Сервісі 2, щоб перевірити, чи буде трафік перенаправлений на здорові інстанси.

Перекладено з: How to Perform Path-Based Routing Using Application Load Balancer?

Leave a Reply

Your email address will not be published. Required fields are marked *