У меня есть api, в который я получаю довольно много запросов по https. Поскольку он находится в состоянии покоя, каждый раз, когда отправляется api, требуется полное рукопожатие ssl. При включении http-keepalive задержка запроса значительно уменьшается (первый запрос занимает такое же время, но последующие запросы выполняются так же быстро, как и http).
Так вот, я экспериментировал с amazon's elb (я также буду использовать облачный фронт). У меня вопрос, как будет поддерживать работу в одной и той же конфигурации, когда запрос, исходящий от клиента, может быть перенаправлен на разные машины случайным образом?
Или вообще невозможно предотвратить подтверждение ssl каждый раз, когда делается запрос?
Да, AWS ELB будет повторно использовать открытые соединения с серверными модулями, когда это возможно, но при этом будет пытаться распределить нагрузку в соответствии с настройками.AWS даже рекомендует это как лучшую практику в своих документах :
Для прослушивателей HTTP и HTTPS мы рекомендуем вам включить опция keep-alive в ваших экземплярах EC2, которая позволяет загружать балансировщик для повторного использования подключений к вашим экземплярам для нескольких запросы клиентов. Это снижает нагрузку на ваш веб-сервер и улучшает пропускная способность балансировщика нагрузки. Тайм-аут сохранения активности должен быть не менее 60 секунд, чтобы убедиться, что балансировщик нагрузки отвечает для закрытия соединения с вашим экземпляром.
ETA: Обратите внимание, что ELB фактически не передает клиентское соединение серверной части. Все запросы между клиентом и серверной частью по-прежнему проходят через ELB в обоих направлениях. Вы можете либо заставить ELB отключать SSL от клиента (при условии, что это HTTPS), а затем создать или повторно использовать свое собственное HTTPS-соединение (если настроено для этого) с бэкэндом, либо вы можете отключить SSL только на бэкэнде.