Уменьшение рукопожатия HTTPS с помощью http-keepalive за балансировщиком нагрузки - возможно?

У меня есть API, в который я получаю довольно много запросов в https. Так как он успокоительный, каждый раз, когда API отправляется, он требует полного рукопожатия SSL. При включении http-keepalive задержка запроса значительно уменьшается (первый запрос занимает то же время, но последующие запросы выполняются так же быстро, как http).

Сейчас я экспериментировал с амазонкой (я также буду использовать фронт облаков). Мой вопрос заключается в том, как сохранить работоспособность в одной и той же настройке, когда запрос, поступающий от клиента, можно произвольно направлять на разные машины?
Или вообще невозможно предотвратить ssl-рукопожатие при каждом запросе?

1 ответ

Решение

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

Для прослушивателей HTTP и HTTPS мы рекомендуем включить опцию keep-alive в ваших экземплярах EC2, которая позволяет балансировщику нагрузки повторно использовать соединения с вашими экземплярами для нескольких клиентских запросов. Это уменьшает нагрузку на ваш веб-сервер и повышает пропускную способность балансировщика нагрузки. Тайм-аут активности должен составлять не менее 60 секунд, чтобы балансировщик нагрузки отвечал за закрытие соединения с вашим экземпляром.

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

Другие вопросы по тегам