Мы развернули наше приложение для рельсов в EC2. В нашей настройке у нас есть два прокси-сервера в небольших экземплярах за круглым DNS-сервером. Они запускают балансиры нагрузки nginx для динамически растущей и сокращающейся фермы веб-серверов. Каждый веб-сервер также запускает nginx с кластером mongrels. Nginx здесь заботится о статическом содержимом и балансировке нагрузки на монгрелей.Ошибка SSL в EC2
В любом случае, наш трафик по-большому - это HTTPS. У нас есть 2 прокси, которые заботятся о SSL. Я заметил, что пропускная способность сети в этих случаях составляет всего 60 Мбит/с или около того. Для сравнения, при тестировании я могу последовательно получать 700 Мбит/с на небольшом экземпляре через обычный HTTP. Фактически, это то же самое, что я могу получить на большом экземпляре. Подобно тому, что ребята Right Scale получили в their testing. (Amazon говорит, что маленький получает «умеренный» сетевой ввод-вывод, в то время как большой получает «высокий». Если бы мне пришлось размышлять, я думаю, что это всего лишь их способ сказать, что на физическом ящике есть более мелкие экземпляры, которые используют одну сетевую карту Я не уверен, означает ли это, что большой получает выделенный сетевой интерфейс, но я бы сомневался в этом.)
В ходе тестирования я смог получить большой экземпляр, чтобы получить протокол 250 Мбит/с. Это говорит мне, что процессор или какой-то другой ресурс является узким местом. Тем не менее, наши диаграммы мониторинга не показывают, что CPU на наших прокси-серверах особенно занят.
Мои вопросы:
- Это мой инстинкт о SSL быть медленнее из-за процессора правильно и наши графики мониторинга неверны? Или может ли какой-то другой ресурс быть лимитирующим фактором?
- Должны ли мы просто взять дополнительную плату и поставить прокси на высокопроцессорные экземпляры? Или было бы лучше сделать просто добавить более маленькие экземпляры?
- Должны ли мы отключить терминацию SSL на веб-серверах? Однако это еще одна проблема: как мы получаем IP-адрес клиента в нашем приложении? Прямо сейчас наш прокси устанавливает его в заголовок X-FORWARDED-FOR, но, очевидно, это будет невозможно, если он не расшифрует SSL.
Мне бы хотелось услышать о любых подобных настройках. Мы немного потрудились с их эластичным балансировщиком нагрузки, но я думаю, что это в основном ставит нас в ту же ситуацию, что и № 3 выше. Кто-нибудь еще переключился на ELB и нашел, что это того стоит?