Перевод балансировщика сетевой нагрузки из целевых пулов в региональные серверные службы.

1. Введение

В этом руководстве представлены инструкции по переводу существующего балансировщика сетевой нагрузки из серверной части целевого пула в региональную серверную службу.

Что вы узнаете

  • Понять преимущества региональных серверных служб
  • Создайте балансировщик сетевой нагрузки с целевыми пулами.
  • Выполнить проверку целевого пула
  • Создайте региональную серверную службу, используя группы неуправляемых экземпляров.
  • Выполнить миграцию целевого пула на серверную службу.
  • Выполнить проверку серверных служб

Что вам понадобится

  • Опыт работы с балансировщиками нагрузки

2. Обзор региональных серверных служб для балансировки сетевой нагрузки

Благодаря балансировке сетевой нагрузки клиенты Google Cloud получают мощный инструмент для распределения внешнего трафика между виртуальными машинами в регионе Google Cloud. Чтобы нашим клиентам было проще управлять входящим трафиком и контролировать поведение балансировщика нагрузки, мы недавно добавили поддержку серверных служб в балансировку сетевой нагрузки. Это обеспечивает нашим клиентам улучшенное масштабирование, скорость, производительность и отказоустойчивость при развертывании — и все это благодаря простоте управления.

Теперь мы поддерживаем серверные службы с помощью балансировки сетевой нагрузки — значительное улучшение по сравнению с предыдущим подходом, целевыми пулами . Серверная служба определяет, как наши балансировщики нагрузки распределяют входящий трафик на подключенные серверные части, и обеспечивает детальный контроль над поведением балансировщика нагрузки.

3. Преимущества региональных серверных услуг

Выбор региональной серверной службы в качестве балансировщика нагрузки дает вашей среде ряд преимуществ.

267db35a58145be.png

Региональные серверные службы сразу предоставляют:

  • Высокоточная проверка работоспособности с унифицированной проверкой работоспособности. Благодаря региональным серверным службам вы теперь можете в полной мере воспользоваться функциями проверки работоспособности с балансировкой нагрузки, освобождая себя от ограничений устаревших проверок работоспособности HTTP. По соображениям соответствия проверки работоспособности TCP с поддержкой настраиваемых строк запросов и ответов или HTTPS были частым запросом для клиентов балансировки сетевой нагрузки.
  • Повышенная отказоустойчивость с помощью групп отработки отказа. С помощью групп отработки отказа вы можете назначить одну группу экземпляров основной, а другую — вторичной, а также выполнять отработку отказа трафика, когда работоспособность экземпляров в активной группе опускается ниже определенного порога. Для большего контроля над механизмом аварийного переключения вы можете использовать такой агент, как Keepalived или Pacemaker , и предоставлять проверку работоспособности или сбоя на основе изменений состояния серверного экземпляра.
  • Масштабируемость и высокая доступность с помощью групп управляемых экземпляров . Региональные серверные службы поддерживают группы управляемых экземпляров в качестве серверных частей. Теперь вы можете указать шаблон для экземпляров серверной виртуальной машины и использовать автоматическое масштабирование на основе загрузки ЦП или других показателей мониторинга.

В дополнение к вышесказанному вы сможете воспользоваться преимуществами Connection Draining для протокола, ориентированного на соединение (TCP), и сократить время программирования для крупных развертываний.

Топология сети Codelab

В этом руководстве представлены инструкции по переводу существующего балансировщика сетевой нагрузки из серверной части целевого пула в региональную серверную службу.

Переход на региональную серверную службу позволяет вам воспользоваться такими функциями, как неустаревшие проверки работоспособности (для TCP, SSL, HTTP, HTTPS и HTTP/2), управляемые группы экземпляров, слив подключений и политика переключения при отказе .

В этом руководстве описан переход следующего примера балансировщика сетевой нагрузки на основе целевого пула на использование региональной серверной службы.

b2ac8a09e53e27f8.png

До: Балансировка сетевой нагрузки с целевым пулом

В результате развертывание балансировщика сетевой нагрузки на основе серверных служб будет выглядеть следующим образом.

f628fdad64c83af3.png

После: балансировка сетевой нагрузки с помощью региональной серверной службы.

В этом примере предполагается, что у вас есть традиционный балансировщик сетевой нагрузки на основе целевого пула с двумя экземплярами в зоне us-central-1a и двумя экземплярами в зоне us-central-1c.

Для такого перехода необходимы следующие шаги высокого уровня:

  1. Сгруппируйте экземпляры целевого пула в группы экземпляров. Серверные службы работают только с управляемыми или неуправляемыми группами экземпляров. Обратите внимание: хотя ограничений на количество экземпляров, которые можно поместить в один целевой пул, нет, группы экземпляров имеют максимальный размер . Если в вашем целевом пуле количество экземпляров превышает максимальное, вам придется разделить его серверные части на несколько групп экземпляров. Если существующее развертывание включает целевой пул резервного копирования, создайте для этих экземпляров отдельную группу экземпляров. Эта группа экземпляров будет настроена как группа отработки отказа.
  2. Создайте региональную серверную службу. Если ваше развертывание включает целевой пул резервного копирования, вам потребуется указать коэффициент отработки отказа при создании внутренней службы. Это должно соответствовать коэффициенту отработки отказа, ранее настроенному для развертывания целевого пула.
  3. Добавьте группы экземпляров (созданные ранее) во внутреннюю службу. Если ваше развертывание включает целевой пул резервного копирования, пометьте соответствующую группу экземпляров отработки отказа флагом –failover при добавлении ее во внутреннюю службу.
  4. Настройте правило переадресации, указывающее на новую серверную службу. Здесь у вас есть 2 варианта:
  • (Рекомендуется) Обновите существующее правило переадресации, чтобы оно указывало на серверную службу. ИЛИ
  • Создайте новую переадресацию, указывающую на серверную службу. Для этого вам потребуется создать новый IP-адрес для внешнего интерфейса балансировщика нагрузки. Затем измените настройки DNS, чтобы плавно перейти от старого IP-адреса балансировщика нагрузки на основе целевого пула к новому IP-адресу.

Самостоятельная настройка среды

  1. Войдите в Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Запомните идентификатор проекта — уникальное имя для всех проектов Google Cloud (имя, указанное выше, уже занято и не подойдет вам, извините!). Позже в этой лаборатории он будет называться PROJECT_ID .

  1. Далее вам необходимо включить биллинг в Cloud Console, чтобы использовать ресурсы Google Cloud.

Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Обязательно следуйте всем инструкциям в разделе «Очистка», в которых рассказывается, как отключить ресурсы, чтобы не взимать плату за пределами этого руководства. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .

Запустить Cloud Shell

Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лаборатории вы будете использовать Google Cloud Shell , среду командной строки, работающую в облаке.

В консоли GCP щелкните значок Cloud Shell на верхней правой панели инструментов:

bce75f34b2c53987.png

Подготовка и подключение к среде займет всего несколько минут. Когда все будет готово, вы должны увидеть что-то вроде этого:

f6ef2b5f13479f3a.png

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лабораторной работе можно выполнять с помощью простого браузера.

Войдите в CloudShell и установите свой ProjectID.

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]

Perform setting your projectID:
projectid=YOUR-PROJECT-ID

echo $projectid

4. Создайте сеть VPC

Сеть VPC

Из Cloud Shell

gcloud compute networks create network-lb --subnet-mode custom

Создать подсеть

Из Cloud Shell

gcloud compute networks subnets create network-lb-subnet \
        --network network-lb --range 10.0.0.0/24 --region us-central1

Создать правила брандмауэра

Из Cloud Shell

gcloud compute --project=$projectid firewall-rules create www-firewall-network-lb --direction=INGRESS --priority=1000 --network=network-lb --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=network-lb-tag

Создание неуправляемых экземпляров

Создание экземпляров. По 2 экземпляра на зону: us-central1-a и us-central1-c.

В Cloud Shell создайте экземпляр 1.

gcloud compute instances create www1 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-a \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart
echo '<!doctype html><html><body><h1>www1</h1></body></html>' | tee /var/www/html/index.html"

В Cloud Shell создайте экземпляр 2.

gcloud compute instances create www2 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-a \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart 
echo '<!doctype html><html><body><h1>www2</h1></body></html>' | tee /var/www/html/index.html"

В Cloud Shell создайте экземпляр 3.

gcloud compute instances create www3 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-c \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update 
sudo apt-get install apache2 -y 
sudo service apache2 restart 
echo '<!doctype html><html><body><h1>www3</h1></body></html>' | tee /var/www/html/index.html"

В Cloud Shell создайте экземпляр 4.

gcloud compute instances create www4 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-c \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update 
sudo apt-get install apache2 -y 
sudo service apache2 restart
echo '<!doctype html><html><body><h1>www4</h1></body></html>' | tee /var/www/html/index.html"

Создайте правило брандмауэра, чтобы разрешить внешний трафик к этим экземплярам виртуальных машин.

Из Cloud Shell

gcloud compute --project=$projectid firewall-rules create www-firewall-network-lb --direction=INGRESS --priority=1000 --network=network-lb --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=network-lb-tag

Создайте статический внешний IP-адрес для вашего балансировщика нагрузки.

Из Cloud Shell

gcloud compute addresses create network-lb-ip-1 \
    --region us-central1

Добавьте устаревший ресурс проверки работоспособности HTTP.

Из Cloud Shell

gcloud compute http-health-checks create basic-check

5. Создайте правило переадресации и целевой пул.

Создать целевой пул

gcloud compute target-pools create www-pool \
            --region us-central1 --http-health-check basic-check

Добавьте свои экземпляры в целевой пул us-central1-a.

gcloud compute target-pools add-instances www-pool \
--instances www1,www2 \
--instances-zone us-central1-a

Добавьте свои экземпляры в целевой пул us-central1-c.

gcloud compute target-pools add-instances www-pool \
--instances www3,www4 \
--instances-zone us-central1-c

Добавить правило переадресации

gcloud compute forwarding-rules create www-rule \
--region us-central1 \
--ports 80 \
--address network-lb-ip-1 \
--target-pool www-pool

Проверка функциональности целевого пула

Определите IP-адрес внешнего интерфейса, выбрав «Балансировщики нагрузки» → «Внешние интерфейсы» (правило www).

Используйте команду curl с терминала вашей рабочей станции, чтобы получить доступ к внешнему IP-адресу и наблюдать за балансировкой нагрузки между четырьмя целевыми экземплярами. Закройте терминал после проверки.

while true; do curl -m1 IP_ADDRESS; done

6. Переведите балансировщик сетевой нагрузки из целевого пула во внутреннюю службу.

Создайте унифицированные проверки работоспособности для вашей серверной службы.

gcloud compute health-checks create tcp my-tcp-health-check --port 80 --region us-central1

Создание групп экземпляров из существующих экземпляров целевого пула.

gcloud compute --project=$projectid instance-groups unmanaged create www-instance-group-central1a --zone=us-central1-a

gcloud compute --project=$projectid instance-groups unmanaged add-instances www-instance-group-central1a --zone=us-central1-a --instances=www1,www2

Создание групп экземпляров из существующих экземпляров целевого пула.

gcloud compute --project=$projectid instance-groups unmanaged create www-instance-group-central1c --zone=us-central1-c

gcloud compute --project=$projectid instance-groups unmanaged add-instances www-instance-group-central1c --zone=us-central1-c --instances=www3,www4

Создайте серверную службу и свяжите ее с вновь созданными проверками работоспособности.

gcloud compute backend-services create my-backend-service --region us-central1 --health-checks my-tcp-health-check --health-checks-region us-central1 --load-balancing-scheme external

Настройте серверную службу и добавьте группы экземпляров.

gcloud compute backend-services add-backend my-backend-service --instance-group www-instance-group-central1a --instance-group-zone us-central1-a --region us-central1

gcloud compute backend-services add-backend my-backend-service --instance-group www-instance-group-central1c --instance-group-zone us-central1-c --region us-central1

Обновите существующее правило переадресации для поддержки серверных служб.

Запишите имя правила переадресации «www-rule» и связанный с ним IP-адрес, выполнив следующие действия:

Выберите «Балансировщик нагрузки» → «Внешние интерфейсы».

Также были отмечены четыре целевых пула

Выберите балансировщик нагрузки → выберите «www-pool».

Направляйте трафик на серверные службы, обновляя существующее правило переадресации.

gcloud compute forwarding-rules set-target www-rule --region=us-central1 --backend-service my-backend-service --region us-central1

Убедитесь, что балансировщик нагрузки «www-pool» больше не настроен с использованием внешнего интерфейса «www-rule» (см. снимок экрана ниже).

Выберите балансировщик нагрузки → www-pool.

9a393b3ca4e0942c.png

Проверка правила переадресации внешнего интерфейса теперь связано с балансировщиком нагрузки «my-backend-service».

Выберите «Балансировщик нагрузки» → «Внешние интерфейсы».

Обратите внимание, что IP-адрес имени правила «www-rule» сохраняется, и теперь используется балансировщик нагрузки «my-backend-service».

Используйте команду Curl на терминале вашей рабочей станции, чтобы получить доступ к внешнему IP-адресу и наблюдать за балансировкой нагрузки между вновь связанной серверной службой. Закройте терминал после проверки.

while true; do curl -m1 IP_ADDRESS; done

7. Этапы очистки

gcloud compute forwarding-rules delete www-rule --region=us-central1 --quiet
 
gcloud compute backend-services delete my-backend-service --region us-central1 --quiet
 
gcloud compute target-pools delete www-pool --region us-central1 --quiet
 
gcloud compute addresses delete network-lb-ip-1 --region us-central1 --quiet

gcloud compute firewall-rules delete www-firewall-network-lb --quiet
 
gcloud compute instances delete www4 --zone us-central1-c --quiet
 
gcloud compute instances delete www3 --zone us-central1-c --quiet
 
gcloud compute instances delete www2 --zone us-central1-a --quiet

gcloud compute instances delete www1 --zone us-central1-a --quiet
 
gcloud compute networks subnets delete network-lb-subnet --region us-central1 --quiet

gcloud compute networks delete network-lb --quiet

gcloud compute instance-groups unmanaged delete www-instance-group-central1a --zone us-central1-a --quiet

gcloud compute instance-groups unmanaged delete www-instance-group-central1c --zone us-central1-c --quiet

8. Поздравляем!

Поздравляем с завершением работы над кодом.

Что мы рассмотрели

  • Понять преимущества региональных серверных служб
  • Создайте балансировщик сетевой нагрузки с целевыми пулами.
  • Выполнить проверку целевого пула
  • Создайте региональную серверную службу, используя группы неуправляемых экземпляров.
  • Выполнить миграцию целевого пула на серверную службу.
  • Выполнить проверку серверных служб