arrow_back

Налаштування розподілювачів навантаження для мережі й HTTP

Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Налаштування розподілювачів навантаження для мережі й HTTP

Lab 1 година universal_currency_alt 1 кредит show_chart Початковий
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP007

Логотип Google Cloud Self-Paced Labs

Огляд

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

Розподіляти навантаження в Google Cloud можна кількома способами. Під час цієї практичної роботи ви навчитеся налаштовувати такі розподілювачі навантаження:

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

Чого ви навчитесь

  • Налаштувати розподілювач навантаження мережі.
  • Налаштувати розподілювач навантаження HTTP.
  • На практиці з’ясувати, чим відрізняються розподілювачі навантаження мережі й HTTP.

Налаштування й вимоги

Перш ніж натиснути кнопку Start Lab (Почати практичну роботу)

Ознайомтеся з наведеними нижче вказівками. На виконання практичної роботи відводиться обмежений час, і її не можна призупинити. Щойно ви натиснете Start Lab (Почати практичну роботу), з’явиться таймер, який показуватиме, скільки часу для роботи з ресурсами Google Cloud у вас залишилося.

Ви зможете виконати практичну роботу в дійсному робочому хмарному середовищі (не в симуляції або демонстраційному середовищі). Для цього на час виконання практичної роботи вам надаються тимчасові облікові дані для реєстрації і входу в Google Cloud.

Щоб виконати цю практичну роботу, потрібно мати:

  • стандартний веб-переглядач, наприклад Chrome (рекомендовано)
Примітка. Виконуйте практичну роботу в режимі анонімного перегляду. Так ви уникнете додаткової плати, що може стягуватися з вашого особистого облікового запису внаслідок його конфліктів з обліковим записом для навчання.
  • достатню кількість часу, оскільки почавши практичну роботу, ви не зможете призупинити її
Примітка. Якщо ви маєте особистий обліковий запис або проект Google Cloud, не використовуйте їх для доступу до цієї практичної роботи. Так ви уникнете додаткових стягнень з вашого облікового запису.

Як почати виконувати практичну роботу й увійти в Google Cloud Console

  1. Натисніть кнопку Start Lab (Почати практичну роботу). Якщо за практичну роботу необхідно заплатити, відкриється спливаюче вікно, де ви зможете обрати спосіб оплати. Ліворуч розміщено панель Lab Details (Відомості про практичну роботу) з такими даними:

    • кнопка Open Google Console (Відкрити Google Console);
    • час до закінчення;
    • тимчасові облікові дані, які потрібно використовувати для доступу до цієї практичної роботи;
    • інша необхідна для виконання цієї практичної роботи інформація.
  2. Натисніть Open Google Console (Відкрити Google Console). Завантажаться необхідні ресурси. Потім відкриється нова вкладка зі сторінкою Sign in (Вхід).

    Порада. Упорядковуйте вкладки в окремих вікнах, розміщуючи їх поруч.

    Примітка. Якщо з’явиться вікно Choose an account (Виберіть обліковий запис), натисніть Use Another Account (Увійти в інший обліковий запис).
  3. За потреби скопіюйте Username (Ім’я користувача) з панелі Lab Details (Відомості про практичну роботу) і вставте його у вікні Sign in (Вхід). Натисніть Next (Далі).

  4. Скопіюйте Password (Пароль) з панелі Lab Details (Відомості про практичну роботу) і вставте його у вікні Welcome (Привітання). Натисніть Next (Далі).

    Важливо. Обов’язково використовуйте облікові дані з панелі ліворуч. Не використовуйте облікові дані Google Cloud Skills Boost. Примітка. Якщо ввійти у власний обліковий запис Google Cloud, може стягуватися додаткова плата.
  5. Виконайте наведені нижче дії.

    • Прийміть Умови використання.
    • Не додавайте способи відновлення та двохетапну перевірку (оскільки це тимчасовий обліковий запис).
    • Не реєструйте безкоштовні пробні версії.

Через кілька секунд Cloud Console відкриється в новій вкладці.

Примітка. Ви можете переглянути меню зі списком продуктів і сервісів Google Cloud, натиснувши меню навігації вгорі ліворуч. Значок меню навігації

Як активувати Cloud Shell

Cloud Shell – це віртуальна машина з попередньо завантаженими інструментами для розробників. Вона містить головний каталог обсягом 5 ГБ постійної пам’яті й працює в середовищі Google Cloud. Cloud Shell надає доступ до ресурсів Google Cloud через командний рядок.

  1. Угорі консолі Google Cloud натисніть Activate Cloud Shell (Активувати Cloud Shell) Значок активації Cloud Shell.

Щойно ви підключитеся, вас буде автентифіковано, а проект отримає ваш PROJECT_ID (ІДЕНТИФІКАТОР ПРОЕКТУ). Вивід міститиме рядок зі значенням PROJECT_ID (ІДЕНТИФІКАТОР ПРОЕКТУ) для цього сеансу:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud – це інструмент командного рядка для Google Cloud. Він входить у пакет Cloud Shell і підтримує функцію автозавершення клавішею TAB.

  1. (Необов’язково) Щоб вивести поточне ім’я облікового запису, введіть таку команду:
gcloud auth list
  1. Натисніть Authorize (Авторизувати).

  2. Вихідні дані матимуть такий вигляд:

Вивід:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Необов’язково) Щоб вивести ідентифікатор проекту, введіть таку команду:
gcloud config list project

Вивід:

[core] project = <project_ID>

Приклад виводу:

[core] project = qwiklabs-gcp-44776a13dea667a6 Примітка. Щоб знайти повну документацію щодо gcloud, перегляньте посібник з інтерфейсу командного рядка gcloud у Google Cloud.

Завдання 1. Налаштуйте регіон і зону за умовчанням для всіх ресурсів

  1. Налаштуйте регіон за умовчанням:

    gcloud config set compute/region {{{project_0.default_region | Region}}}
  2. Налаштуйте зону за умовчанням у Cloud Shell:

    gcloud config set compute/zone {{{project_0.default_zone | Zone}}}

    Щоб дізнатися більше про вибір зон і регіонів, перегляньте цю документацію Compute Engine.

Завдання 2. Створіть кілька екземплярів веб-серверів

Створіть три екземпляри віртуальних машин Compute Engine для цього сценарію розподілу навантаження й установіть на них Apache. Потім додайте правило брандмауера, що дозволяє трафік HTTP до екземплярів.

За вказаним кодом буде налаштовано зону . У полі tags можна вказати налаштування, як-от правило брандмауера, що застосовуватимуться до всіх екземплярів. Крім того, ці команди встановлюють на кожному екземплярі Apache й створюють для кожного екземпляра унікальну головну сторінку.

  1. Створіть віртуальну машину www1 у зоні за умовчанням за допомогою такого коду:

    gcloud compute instances create www1 \ --zone={{{project_0.default_zone | Zone}}} \ --tags=network-lb-tag \ --machine-type=e2-small \ --image-family=debian-11 \ --image-project=debian-cloud \ --metadata=startup-script='#!/bin/bash apt-get update apt-get install apache2 -y service apache2 restart echo "

    Web Server: www1

    " | tee /var/www/html/index.html'
  2. Створіть віртуальну машину www2 в зоні за умовчанням за допомогою такого коду:

    gcloud compute instances create www2 \ --zone={{{project_0.default_zone | Zone}}} \ --tags=network-lb-tag \ --machine-type=e2-small \ --image-family=debian-11 \ --image-project=debian-cloud \ --metadata=startup-script='#!/bin/bash apt-get update apt-get install apache2 -y service apache2 restart echo "

    Web Server: www2

    " | tee /var/www/html/index.html'
  3. Створіть віртуальну машину www3 в зоні за умовчанням.

    gcloud compute instances create www3 \ --zone={{{project_0.default_zone | Zone}}} \ --tags=network-lb-tag \ --machine-type=e2-small \ --image-family=debian-11 \ --image-project=debian-cloud \ --metadata=startup-script='#!/bin/bash apt-get update apt-get install apache2 -y service apache2 restart echo "

    Web Server: www3

    " | tee /var/www/html/index.html'
  4. Створіть правило для брандмауера, що дозволяє зовнішній трафік до екземплярів віртуальних машин:

    gcloud compute firewall-rules create www-firewall-network-lb \ --target-tags network-lb-tag --allow tcp:80

Тепер потрібно отримати зовнішні IP-адреси екземплярів і перевірити, чи вони запущені.

  1. Виконайте наведену нижче команду, щоб переглянути список екземплярів. Їх ІР-адреси з’являться в стовпці EXTERNAL_IP.

    gcloud compute instances list
  2. Виконайте наведену нижче команду curl, щоб перевірити, чи запущено кожен екземпляр (для кожного екземпляра замініть [IP_ADDRESS] на ІР-адресу відповідної віртуальної машини).

    curl http://[IP_ADDRESS]

    Щоб підтвердити створення групи веб-серверів, натисніть Підтвердити виконання.

    Створіть кілька екземплярів веб-серверів

Завдання 3. Налаштуйте сервіс розподілу навантаження

Після налаштування сервісу розподілу навантаження ваші екземпляри віртуальних машин отримуватимуть пакети, призначені для статичної зовнішньої IP-адреси, яку ви налаштували. Екземпляри, створені за допомогою образу Compute Engine, автоматично налаштовані на обробку цієї ІР-адреси.

Примітка. Щоб дізнатись, як налаштувати розподіл навантаження мережі, перегляньте посібник із зовнішніх розподілювачів навантаження мережі TCP/UDP.
  1. Створіть статичну зовнішню IP-адресу для розподілювача навантаження:

    gcloud compute addresses create network-lb-ip-1 \ --region {{{project_0.default_region | Region}}}

    Вивід:

    Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-03-xxxxxxxxxxx/regions/{{{project_0.startup_script.project_region}}}/addresses/network-lb-ip-1].
  2. Додайте застарілий ресурс для перевірки стану HTTP:

    gcloud compute http-health-checks create basic-check
  3. Додайте цільовий пул у регіоні, де розташовано ваші екземпляри. Виконайте наведену нижче команду, щоб створити цільовий пул і використати перевірку стану, без якої сервіс не функціонуватиме.

    gcloud compute target-pools create www-pool \ --region {{{project_0.default_region | Region}}} --http-health-check basic-check
  4. Додайте екземпляри в пул:

    gcloud compute target-pools add-instances www-pool \ --instances www1,www2,www3
  5. Додайте правило переадресування:

    gcloud compute forwarding-rules create www-rule \ --region {{{project_0.default_region | Region}}} \ --ports 80 \ --address network-lb-ip-1 \ --target-pool www-pool

    Щоб підтвердити створення розподілювача навантаження мережі L4, що вказує на веб-сервери, натисніть Підтвердити виконання.

    Налаштуйте сервіс розподілу навантаження

Завдання 4. Спрямуйте трафік до екземплярів

Сервіс розподілу навантаження налаштовано, тож можна почати спрямовувати трафік до правила переадресування – ви побачите, як трафік розподіляється між різними екземплярами.

  1. Введіть наведену нижче команду, щоб переглянути зовнішню IP-адресу правила переадресування www-rule, що використовується розподілювачем навантаження.

    gcloud compute forwarding-rules describe www-rule --region {{{project_0.default_region | Region}}}
  2. Щоб отримати доступ до зовнішньої IP-адреси, виконайте таку команду:

    IPADDRESS=$(gcloud compute forwarding-rules describe www-rule --region {{{project_0.default_region | Region}}} --format="json" | jq -r .IPAddress)
  3. Щоб відобразити зовнішню IP-адресу, виконайте таку команду:

    echo $IPADDRESS
  4. Виконайте команду curl, щоб отримати доступ до зовнішньої IP-адреси (замініть IPADDRESS на зовнішню IP-адресу, яку ви отримали за допомогою попередньої команди).

    while true; do curl -m1 $IPADDRESS; done

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

  5. Щоб зупинити виконання команди, натисніть Ctrl + C.

Завдання 5. Створіть розподілювач навантаження HTTP

Розподіл навантаження HTTP(S) здійснюється в сервісі Google Front End (GFE). Сервіси GFE розподілені по всьому світу, але працюють разом за допомогою площини керування й глобальної мережі Google. Можна налаштувати правила URL-адрес, щоб спрямовувати певні URL-адреси до одного набору екземплярів, а інші URL-адреси – до інших екземплярів.

Запити завжди спрямовуються до тієї групи екземплярів, яка розташована найближче до користувача (якщо така група має достатню ємність і відповідає запиту). Якщо найближчій групі бракує ємності, запит надсилається до найближчої групи достатньої ємності.

Розподілювач навантаження можна налаштувати за допомогою серверної частини Compute Engine, якщо віртуальні машини об’єднані в групу екземплярів. Група керованих екземплярів містить віртуальні машини, на яких запущено внутрішні сервери зовнішнього розподілювача навантаження HTTP. У цій практичній роботі серверні частини обслуговують власні імена хостів.

  1. Спочатку створіть шаблон розподілювача навантаження:

    gcloud compute instance-templates create lb-backend-template \ --region={{{project_0.default_region | Region}}} \ --network=default \ --subnet=default \ --tags=allow-health-check \ --machine-type=e2-medium \ --image-family=debian-11 \ --image-project=debian-cloud \ --metadata=startup-script='#!/bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://169.254.169.254/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'

    За допомогою груп керованих екземплярів можна керувати додатками на кількох ідентичних віртуальних машинах. Щоб забезпечити масштабованість і доступність робочих навантажень, скористайтеся автоматизованими сервісами груп керованих екземплярів, зокрема автомасштабуванням, автоматичним виправленням помилок, регіональним розгортанням (у кількох зонах), а також автоматичним оновленням.

  2. Створіть групу керованих екземплярів за шаблоном:

    gcloud compute instance-groups managed create lb-backend-group \ --template=lb-backend-template --size=2 --zone={{{project_0.default_zone | Zone}}}
  3. Створіть правило брандмауера fw-allow-health-check.

    gcloud compute firewall-rules create fw-allow-health-check \ --network=default \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp:80 Примітка. Це правило вхідного трафіку дозволяє трафік із систем перевірки стану Google Cloud (130.211.0.0/22 й 35.191.0.0/16). У цій практичній роботі для визначення віртуальних машин використовується цільовий тег allow-health-check.
  4. Екземпляри запущено. Тепер налаштуйте глобальну статичну зовнішню IP-адресу, яку ваші клієнти використовуватимуть для доступу до розподілювача навантаження.

    gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --global

    Зверніть увагу на адресу IPv4, яку було зарезервовано:

    gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
  5. Створіть перевірку стану для розподілювача навантаження:

    gcloud compute health-checks create http http-basic-check \ --port 80 Примітка. У Google Cloud є механізми перевірки стану, які визначають, чи реагують екземпляри серверної частини на трафік належним чином. Щоб дізнатися більше, перегляньте цей документ про створення перевірок стану.
  6. Створіть серверну службу:

    gcloud compute backend-services create web-backend-service \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --global
  7. Додайте свою групу екземплярів як серверну частину серверної служби:

    gcloud compute backend-services add-backend web-backend-service \ --instance-group=lb-backend-group \ --instance-group-zone={{{project_0.default_zone | Zone}}} \ --global
  8. Створіть карту URL-адрес, щоб спрямовувати запити до серверної служби за умовчанням:

    gcloud compute url-maps create web-map-http \ --default-service web-backend-service Примітка. Карта URL-адрес – це ресурс конфігурації Google Cloud, що використовується для спрямування запитів до серверних служб або сегментів серверних частин. Наприклад, із зовнішнім розподілювачем навантаження HTTP(S) можна використовувати одну карту URL-адрес, щоб спрямовувати запити на різні цільові сторінки відповідно до правил, налаштованих у такій карті URL-адрес:

    • запити щодо https://example.com/video спрямовуються до однієї серверної служби;
    • запити щодо https://example.com/audio спрямовуються до іншої серверної служби;
    • запити щодо https://example.com/images спрямовуються до сегмента серверної частини Cloud Storage;
    • запити щодо решти комбінацій хостів і шляхів спрямовуються до серверної служби за умовчанням.
  9. Створіть цільовий проксі-сервер HTTP, щоб спрямовувати запити до вашої карти URL-адрес:

    gcloud compute target-http-proxies create http-lb-proxy \ --url-map web-map-http
  10. Створіть глобальне правило переадресування для спрямування вхідних запитів до проксі-сервера:

    gcloud compute forwarding-rules create http-content-rule \ --address=lb-ipv4-1\ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Примітка. Правило переадресування й відповідна ІР-адреса є конфігурацією інтерфейсної частини розподілювача навантаження Google Cloud. Для загального розуміння правил переадресування ознайомтеся з відповідним посібником.

Щоб підтвердити створення розподілювача навантаження HTTP(S) L7, натисніть Підтвердити виконання.

Створіть розподілювач навантаження HTTP

Завдання 6. Протестуйте трафік, спрямований до ваших екземплярів

  1. У консолі Google Cloud відкрийте меню навігації і перейдіть до розділу Network services (Мережеві сервіси) > Load balancing (Розподіл навантаження).

  2. Натисніть розподілювач навантаження, який ви щойно створили (web-map-http).

  3. У розділі Backend (Серверна частина) натисніть назву серверної частини й переконайтесь, що віртуальні машини мають статус Healthy (У нормальному стані). Якщо це не так, зачекайте кілька хвилин і спробуйте оновити сторінку.

  4. Якщо віртуальні машини в нормальному стані, протестуйте розподілювач навантаження через веб-переглядач: перейдіть на сторінку http://IP_ADDRESS/, замінивши IP_ADDRESS на ІР-адресу розподілювача навантаження.

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

Веб-переглядач має відобразити сторінку з інформацією, що містить назву екземпляра, на якому розміщено цю сторінку, а також відповідну зону (наприклад: Page served from: lb-backend-group-xxxx).

Вітаємо!

Ви створили розподілювачі навантаження для мережі й HTTP(S) і потренувалися використовувати шаблони екземплярів та групи керованих екземплярів.

Пройдіть квест

Цю практичну роботу можна виконувати у власному темпі, і вона входить до квесту Знайомство з Google Cloud. Квест – це низка пов’язаних практичних робіт, що разом складають план навчання. Виконавши всю серію, ви отримаєте значок як відзнаку за досягнення. Значки можна зробити видимими для інших, додавши посилання на них в онлайн-резюме або обліковий запис у соціальній мережі. Зареєструйтеся на квест і відразу отримайте бонус за виконання цієї практичної роботи.
Усі доступні квести можна переглянути в каталозі.

Виконайте наступну практичну роботу

Наступна практична робота цього квесту – Початок роботи з вузлами Kubernetes. Крім того, можна вибрати одну з наведених нижче практичних робіт:

Наступні кроки/Докладніше

Навчання й сертифікація Google Cloud

…допомагають ефективно використовувати технології Google Cloud. Наші курси передбачають опанування технічних навичок, а також ознайомлення з рекомендаціями, що допоможуть вам швидко зорієнтуватися й вивчити матеріал. Ми пропонуємо курси різних рівнів – від базового до високого. Ви можете вибрати формат навчання (за запитом, онлайн або офлайн) відповідно до власного розкладу. Пройшовши сертифікацію, ви перевірите й підтвердите свої навички та досвід роботи з технологіями Google Cloud.

Посібник востаннє оновлено 19 вересня 2023 року

Практичну роботу востаннє протестовано 19 вересня 2023 року

© Google LLC 2024. Усі права захищено. Назва та логотип Google є торговельними марками Google LLC. Усі інші назви компаній і продуктів можуть бути торговельними марками відповідних компаній, з якими вони пов’язані.