Назад | Перейти на главную страницу

Эластичная балансировка нагрузки Amazon Web Services без простоев

Я пытаюсь понять, как эластичная балансировка нагрузки Amazon Web Services не приведет к простоям.

Elastic Load Balancing периодически проверяет путь к серверу (обычно пару секунд). Если он не получает ответа в течение установленного периода времени (обычно секунды или две), он переводит сервер в автономный режим и больше не отправляет трафик на этот сервер, пока он не вернется в режим онлайн.

Что меня смущает, так это то, что хотя этот сервер будет переведен в автономный режим, AWS Elastic Load Balancing будет через несколько секунд проверить связь с ним, и он будет фактически отключен. Я предполагаю, что есть способ устранить этот пробел, связанный с необходимостью пинговать и отправлять трафик только на ДЕЙСТВИТЕЛЬНО активные серверы, и исключить этот шанс, что эластичная балансировка нагрузки отправит трафик на сервер, который имеет проблемы. Как я могу добиться этого и создать нулевое время простоя в моем приложении?

В Интернете есть противоречивая информация об этом. Некоторые ресурсы говорят, что ELB повторяет запрос, если он превышает установленный по умолчанию 60-секундный тайм-аут до получения ответа от сервера, но это меньшинство. Некоторые говорят, что ELB не повторяет запросы. В Документация AWS не говорит, что происходит, когда истекает время ожидания ELB - довольно существенное упущение. Основываясь на том, что я прочитал, я склонен думать, что если время ожидания вашего внутреннего сервера истекает, клиенту отправляется код ошибки, вероятно, время ожидания 408. Вы должны проверить это, и мой совет ниже основан на этом предположении. Если ELB повторяет попытку, то мой совет ниже неверен.

Я не верю, что то, что вы хотите, возможно с помощью ELB для стандартного веб-приложения из-за отсутствия повторных попыток. В целом, вы не можете гарантировать 100% доступность, это практически невозможно. Вам необходимо установить доступность на реалистичном уровне, а затем спроектировать свою систему для этого. Например, у вас может быть два активных региона, Route 53 выполняет географическую балансировку нагрузки с переключением при отказе. Однако вы не получите 100%, поскольку он настроен для тестирования и отправки запросов экземплярам, ​​которые считаются работоспособными, а не для повторных запросов в случае их сбоя.

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

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