Как запретить Google Cloud Load балансировщик пересылать трафик во вновь созданный автоматически масштабируемый экземпляр без готовности? - PullRequest
0 голосов
/ 21 февраля 2019

Мне нужно будет разместить приложение PHP Laravel в Google Cloud Compute Engine с автоматическим масштабированием и балансировкой нагрузки.Я попытался настроить и настроить следующее:

  1. Я создал шаблон экземпляра, где я добавил сценарий запуска для установки apache2, PHP, клонирование репозитория git моего проекта, Настройка прокси-сервера Cloud SQLи настройте все параметры, необходимые для запуска этого проекта Laravel.

  2. Созданная группа экземпляров, где я настроил правило, когда ЦП достигает определенного процента, оно начинает создавать другие экземпляры для автоматического масштабирования.

  3. Создан экземпляр Cloud SQL.

  4. Создано хранилище, в моем приложении все общедоступное содержимое, например изображения, будет загружено в хранилище и будетбыть подан оттуда.

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

Как указано вышеконфигурация, все работает нормально, когда экземпляр достигает определенного процента загрузки процессора, автоматическое масштабирование начинает создавать другие экземпляры, а балансировщик нагрузки начинает перенаправлять трафик на новый экземпляр.

Проблема, которую я получаю, для настройки и настройки моегоСреда (сценарий запуска шаблона экземпляра) занимает около 20-30 минут для настройки и запуска, готового к обслуживанию контента из вновь созданного экземпляра.Но когда подсистема балансировки нагрузки обнаруживает, что вновь созданная машина работает и работает, она начинает перенаправлять трафик на новый экземпляр виртуальной машины, который не готов обслуживать содержимое с него.

В результате, когда балансировщик нагрузки перенаправляет трафик на неготовую машину, он явно отправляет мне ошибку 404. И некоторые другие ошибки.

Как предотвратить это, есть ли способчтобы экземпляр, созданный с помощью службы автоматического масштабирования, отправил некоторую информацию в балансировщик нагрузки после того, как этот компьютер будет готов предоставить контент, а затем только балансировщик нагрузки направит трафик во вновь созданный экземпляр?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Ответ Джона Хэнли довольно хороший, я просто немного его заканчиваю.

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

Восстановление - отличный способ, но в вашем случае вы не можете быть уверены, что ваша установка не займет немного больше времени из-за обновлений, как вы должны сделать apt-get update && apt-get update при запуске экземпляра, чтобы быть актуальным, это займет всего больше времени ...

Балансировщикам нагрузки обычно должна быть настроена проверка работоспособности, и он не должен маршрутизировать трафик, если только экземпляропределяется как здоровыйВ вашем случае, если у вас установлен apache2, я полагаю, что у вас есть HC на порту 80 или 443, в зависимости от вашей конфигурации на пути / healthz.

Способ правильного использования проверки работоспособности состоит в создании определенногоvhost для проверки работоспособности, и вы добавляете поддельный домен в HC, скажем, health.test, который даст vhost прослушивание для health.test и возврат 200 ответов по пути / healthz.Таким образом, если вы не измените свой conf, просто активируйте vhost здоровья последним, чтобы loadbalancer не начал маршрутизацию трафика до того, как сервер действительно включится ...

0 голосов
/ 21 февраля 2019

Как запретить Google Cloud Load Balancer перенаправлять трафик во вновь созданный автоматически масштабированный экземпляр без готовности?

Балансировщики нагрузки Google используют параметр Cool Down, чтобы определить, как долгодождитесь, когда новый экземпляр появится в сети и будет доступен на 100%.Однако это означает, что если ваш экземпляр в это время недоступен, будут возвращены ошибки.

Выше ответ на ваш вопрос.Однако потратить 20 или 30 минут на запуск нового экземпляра в сети сводит на нет многие преимущества автоматического масштабирования.Вы хотите, чтобы экземпляры немедленно подключались к сети.

Лучшие практики означают, что вы должны создать экземпляр.Настройте экземпляр со всеми необходимыми приложениями и т. Д. Затем создайте образ этого экземпляра.Затем в вашем шаблоне укажите это изображение в качестве базового изображения.Теперь вашим экземплярам не придется ждать загрузки и установки программного обеспечения, настройки и т. Д. Все, что вам нужно сделать, - это запустить скрипт, который при необходимости выполняет окончательную настройку, чтобы перевести экземпляр в оперативный режим.Ваша цель должна быть 30 - 180 секунд с момента запуска до выхода в сеть и запуска нового экземпляра.Переосмыслите / перепроектируйте все, что занимает больше 180 секунд.Это также сэкономит вам деньги.

...