Завдання 5. Створіть розподілювач навантаження HTTP
Розподіл навантаження HTTP(S) здійснюється в сервісі Google Front End (GFE). Сервіси GFE розподілені по всьому світу, але працюють разом за допомогою площини керування та глобальної мережі Google. Можна налаштувати правила URL-адрес, щоб спрямовувати певні URL-адреси до одного набору екземплярів, а інші URL-адреси – до інших екземплярів.
Запити завжди спрямовуються до тієї групи екземплярів, яка розташована найближче до користувача (якщо така група має достатню ємність і відповідає запиту). Якщо найближчій групі бракує ємності, запит надсилається до найближчої групи достатньої ємності.
Розподілювач навантаження можна налаштувати за допомогою серверної частини Compute Engine, якщо віртуальні машини об’єднані в групу екземплярів. Група керованих екземплярів містить віртуальні машини, на яких запущено внутрішні сервери зовнішнього розподілювача навантаження HTTP. У цій практичній роботі серверні частини обслуговують власні імена хостів.
Спочатку створіть шаблон розподілювача навантаження:
gcloud compute instance-templates create lb-backend-template \
--region=us-central1 \
--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'
Copied!content_copy
За допомогою груп керованих екземплярів можна керувати додатками на кількох ідентичних віртуальних машинах. Щоб забезпечити масштабованість і доступність робочих навантажень, скористайтеся автоматизованими сервісами груп керованих екземплярів, зокрема автомасштабуванням, автоматичним виправленням помилок, регіональним розгортанням (у кількох зонах), а також автоматичним оновленням.
Створіть групу керованих екземплярів за шаблоном:
gcloud compute instance-groups managed create lb-backend-group \
--template=lb-backend-template --size=2 --zone=us-central1-b
Copied!content_copy
Створіть правило брандмауера 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
Copied!content_copy
Примітка. Це правило вхідного трафіку дозволяє трафік із систем перевірки стану Google Cloud (130.211.0.0/22 та 35.191.0.0/16). У цій практичній роботі для визначення віртуальних машин використовується цільовий тег allow-health-check.
Екземпляри запущено. Тепер налаштуйте глобальну статичну зовнішню IP-адресу, яку ваші клієнти використовуватимуть для доступу до розподілювача навантаження.
gcloud compute addresses create lb-ipv4-1 \
--ip-version=IPV4 \
--global
Copied!content_copy
Зверніть увагу на адресу IPv4, яку було зарезервовано:
gcloud compute addresses describe lb-ipv4-1 \
--format="get(address)" \
--global
Copied!content_copy
Створіть перевірку стану для розподілювача навантаження:
gcloud compute health-checks create http http-basic-check \
--port 80
Copied!content_copy
Примітка. У Google Cloud є механізми перевірки стану, які визначають, чи реагують екземпляри серверної частини на трафік належним чином. Щоб дізнатися більше, перегляньте цей документ про створення перевірок стану.
Створіть серверну службу:
gcloud compute backend-services create web-backend-service \
--protocol=HTTP \
--port-name=http \
--health-checks=http-basic-check \
--global
Copied!content_copy
Додайте свою групу екземплярів як серверну частину серверної служби:
gcloud compute backend-services add-backend web-backend-service \
--instance-group=lb-backend-group \
--instance-group-zone=us-central1-b \
--global
Copied!content_copy
Створіть карту URL-адрес, щоб спрямовувати запити до серверної служби за умовчанням:
gcloud compute url-maps create web-map-http \
--default-service web-backend-service
Copied!content_copy
Примітка. Карта URL-адрес – це ресурс конфігурації Google Cloud, що використовується для спрямування запитів до серверних служб або сегментів серверних частин. Наприклад, із зовнішнім розподілювачем навантаження HTTP(S) можна використовувати одну карту URL-адрес, щоб спрямовувати запити на різні цільові сторінки відповідно до правил, налаштованих у такій карті URL-адрес:- запити щодо https://example.com/video спрямовуються до однієї серверної служби;
- запити щодо https://example.com/audio спрямовуються до іншої серверної служби;
- запити щодо https://example.com/images спрямовуються до сегмента серверної частини Cloud Storage;
- запити щодо решти комбінацій хостів і шляхів спрямовуються до серверної служби за умовчанням.
Створіть цільовий проксі-сервер HTTP, щоб спрямовувати запити до вашої карти URL-адрес:
gcloud compute target-http-proxies create http-lb-proxy \
--url-map web-map-http
Copied!content_copy
Створіть глобальне правило переадресування для спрямування вхідних запитів до проксі-сервера:
gcloud compute forwarding-rules create http-content-rule \
--address=lb-ipv4-1\
--global \
--target-http-proxy=http-lb-proxy \
--ports=80
Copied!
content_copy
Примітка. Правило переадресування та відповідна ІР-адреса є конфігурацією інтерфейсної частини розподілювача навантаження Google Cloud. Для загального розуміння правил переадресування ознайомтеся з відповідним посібником.