У нас есть приложение SaaS, которое позволяет клиентам использовать свой собственный домен - довольно типично. По своей сути, архитектура имеет простой универсальный виртуальный хост (apache), а программное обеспечение выполняет работу по определению того, какой клиент он основан на имени хоста.
Однако многим нашим клиентам требуется, чтобы этот персональный домен поддерживал SSL. В настоящее время мы делаем это, добавляя виртуальный хост (с более высоким приоритетом) с сертификатом SSL и перезапуская apache.
Хотя это работает, у него есть ряд проблем:
Вам нужно либо перезапустить apache, что означает мгновенный доступ к центру города, либо переключить DNS на совершенно новый стек серверов.
Если возникла проблема, которую мы не обнаружили с сертификатом SSL, Apache выдает фатальную ошибку и не сможет перезапустить.
Было бы невозможно или, по крайней мере, непрактично развернуть это для тысяч пользователей.
Короче - не масштабируется. Мы исследовали завершение SSL в балансировщике нагрузки ... это многообещающе, но мы не можем найти балансировщики нагрузки, которые поддерживают несколько сертификатов SSL (через SNI).
В дальнейшем это все больше становится узким местом продукта - до такой степени, что мы были бы готовы изменить архитектуру или отойти от apache, если это необходимо.
Мы исследовали завершение SSL в балансировщике нагрузки ... это многообещающе, но мы не можем найти балансировщиков нагрузки, которые поддерживают несколько сертификатов SSL (через SNI)
В самом деле? Мне пришлось удвоить время публикации этого вопроса, чтобы убедиться, что это не некро-поток летней давности, потому что я не могу придумать никаких балансировщиков нагрузки, которые не поддержка SNI в 2016 году.
Хотя я больше всего знаком с HAProxy, поддерживает SNI с 1.5 который, по всей видимости, вышел в июне 2014 года.
Хотя 1.5 технически не поддерживает перезагрузку с нулевым временем простоя для изменений конфигурации, в нем есть опция «быстрой перезагрузки», которая, как правило, достаточно быстрая, чтобы не повлиять на типичный сайт. Но если вы действительно хотите туда попасть, есть Сообщение в блоге Yelp Engineering описание метода перезагрузки с «истинным нулевым временем простоя», который включает в себя некоторую сложную работу с Linux tc и iptables для задержки SYN-пакетов во время перезагрузки. Из статьи:
Перезапуск HAProxy практически не влияет на наш трафик, вызывая лишь незначительные задержки, как видно на рисунке 3. Обратите внимание, что этот метод сильно зависит от того, сколько времени HAProxy требуется для загрузки своей конфигурации, и, поскольку мы используем такую сокращенную конфигурацию, эти результаты обманчиво быстрые. В нашей производственной среде мы наблюдаем штраф в 20 мс при перезапусках HAProxy.
Балансировщик нагрузки означает, что перезапуск разряженного сервера - это нормально, и этого не следует избегать.
Клиент может запросить новый домен или сертификат. В следующем пакете обновлений это изменение в новой конфигурации развертывается на некоторых веб-серверах. Осушите старые веб-серверы и остановите их при нулевом подключении. Новые подключения собираются в новом рабочем конфиге. Если есть проблема, вернитесь к последней конфигурации.
Добавьте веб-серверы в подсистему балансировки нагрузки для повышения производительности и доступности. Добавьте балансировщики нагрузки, когда сложность конфигурации слишком велика.