0 like 0 dislike
49 views
by (7.6k points)

Завдання 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=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

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

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

    gcloud compute instance-groups managed create lb-backend-group \
       --template=lb-backend-template --size=2 --zone=us-central1-b
    Copied!

    content_copy

  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
    Copied!

    content_copy

    Примітка. Це правило вхідного трафіку дозволяє трафік із систем перевірки стану 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
    Copied!

    content_copy

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

    gcloud compute addresses describe lb-ipv4-1 \
      --format="get(address)" \
      --global
    Copied!

    content_copy

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

    gcloud compute health-checks create http http-basic-check \
      --port 80
    Copied!

    content_copy

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

  6. Створіть серверну службу:

    gcloud compute backend-services create web-backend-service \
      --protocol=HTTP \
      --port-name=http \
      --health-checks=http-basic-check \
      --global
    Copied!

    content_copy

  7. Додайте свою групу екземплярів як серверну частину серверної служби:

    gcloud compute backend-services add-backend web-backend-service \
      --instance-group=lb-backend-group \
      --instance-group-zone=us-central1-b \
      --global
    Copied!

    content_copy

  8. Створіть карту 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;
    • запити щодо решти комбінацій хостів і шляхів спрямовуються до серверної служби за умовчанням.
  9. Створіть цільовий проксі-сервер HTTP, щоб спрямовувати запити до вашої карти URL-адрес:

    gcloud compute target-http-proxies create http-lb-proxy \
        --url-map web-map-http
    Copied!

    content_copy

  10. Створіть глобальне правило переадресування для спрямування вхідних запитів до проксі-сервера:

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. Для загального розуміння правил переадресування ознайомтеся з відповідним посібником.

Please log in or register to answer this question.

355 questions

10 answers

4 comments

1.0k users

...