Балансування навантажень

Завдання

  • Створіть 2 або 3 інстанси в такий самий спосіб, як в попередніх лабораторних роботах: Ubuntu 22.04, доступ до метаданих та user data в якій міститься скріпт для налаштування. Не забудьте вказати для них правильні Security groups, які б дозволяли вхідні ssh-з’єднання з вашої IP-адреси та HTTP+HTTPS звідусюди.

img

  • В розділі Load balancing -> Target groups створіть нову Target group з наступними параметрами:
  • Target type: Instances
  • Target group name: TCP-targets
  • Protocol:Port: TCP:80
  • IP address type: IPv4

img

  • В розділі Load balancing -> Load balancers створіть новий Load balancer з наступними парамертами:
  • Load balancer types: Network Load Balancer
  • Load balancer name: NLB
  • Scheme: Internet-facing
  • Load balancer IP address type: IPv4

img

  • Перевірте свою роботу і переконайтесь що балансувальник працює. Для цього перейдіть на його DNS name з декількох пристроїв та/або браузерів. В результаті цих дій ви маєте побачити різні сторінки з різних пристроїв.

img

img

img

Тепер налаштуємо наступний вид балансувальника - Application load balancer.

  • Створіть нову Target group.

    • Target type: Instances
    • Target group name: HTTP-targets
    • Protocol:Port: HTTP:80
    • IP address type: IPv4

Решту налаштувань залиште стандарними. Так само додайте в цю групу всі інстанси з першого кроку.

img

  • Створіть новий Load balancer.

    • Load balancer types: Application Load Balancer
    • Load balancer name: ALB
    • Scheme: Internet-facing
    • Load balancer IP address type: IPv4

Так само, як і для попереднього балансувальника, вкажіть для нього вашу VPC та її підмережі. Додайте в Listener Target group з попереднього кроку.

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

Тепер перевіримо curl’ом img

Тепер ми детальніше розглянемо балансування з застосуванням додаткових правил.

  • Під’єднайтеся до ваших інстансів через ssh та створіть нову директорію з унікальним іменем всередині директорії /var/www/html/. Наприклад, /var/www/html/rick/ та /var/www/html/morty/. Для цього кроку вистачить максимум двох інстансів, щоб не довелося робити багато зайвої роботи.

  • Скопіюйте в ці директорії index.html з /var/www/html/. Відредагуйте його, додавши якийсь напис, який допоможе ідентифікувати цей інстанс і шлях на ньому. Наприклад “I’m Rick! I live in /rick/”

img

  • Для кожного з інстансів, на який ви додали нову директорію створіть по одній Target group. Назвіть її зрозумілою назвою і додайте в неї лише відповідний їй інстанс.

img

  • Створіть нове правило (Add rule).

img

  • Далі вкажіть дію (Action), яка буде відбуватися при виконанні умови. В цьому випадку потрібно переспрямувати запит на таргет групу. В якості таргет групи виберіть ту, в якій “живе” єдиний інстанс, на якому є каталог, вказаний в умові.

img

  • Перевірте за собою роботу. Спробуйте перейти на DNS name балансувальника ALB, вказавши додатково шляхи до каталогів.

img


Завдання з зірочкою (опціональне)

  • Змоделюйте та налаштуйте таку інфраструктуру, в якій інстанси не матимуть публічних IP-адрес і отримуватимуть всі вхідні запити виключно через балансувальник. Також подбайте про те, щоб вони могли виходити в інтернет, наприклад за завантаженнями оновлень.

Для цього в налаштуваннях інстансу => Виключаємо Auto-Assign Public IP

img

Для перевірки створимо ще targets на SSH

img

Створюєм NLB з відкритим портом 22

img

Перевіряєм

img