Должен ли SQL Server находиться на том же компьютере, что и установка IIS?
Я слушаю подкаст # 19, и Джоэл и Джефф спорят о запуске SQL Server на том же компьютере, что и установка IIS. Я должен сказать, что это похоже на Джеффа, сложенного Джоэлю, но опять же я только догадываюсь, какой из них есть.;)
Каковы плюсы и минусы каждого? Что лучше?
Я обычно запускаю их отдельно (предпочтение Joel), но я вижу точку Джеффа, где они ближе друг к другу.
Ответы
Ответ 1
Для целей безопасности полезно разделить веб-машины и базы данных, предпочтительно имеющие межсетевой экран между ними. Веб-сервер открыт для всего мира. К сожалению, есть люди, которые получают удовольствие от кражи или повреждения информации, содержащейся на этих серверах.
Тогда есть аспект производительности. Общеизвестно, что SQL Server любит память. Также IIS, особенно если на веб-сайте широко используется кеширование и информация о сеансе. Таким образом, у вас также есть потенциальный конфликт. Наличие выделенной машины для SQL Server явно лучше, чем наличие одной машины, выполняющей всю нагрузку.
Затем разделение позволяет упростить идентификацию необходимости настройки и способности настраивать отдельные аппаратные компоненты.
Подводя итог, машина, достаточно мощная, чтобы справляться с требованиями как IIS, так и SQL Server в живой среде , не обязательно будет дешевле двух машин, специфицированных для конкретных требований каждого сервера, (Джефф Этвуд упоминает в одном из подкастов, что обновление одной машины будет стоить так же, как получение второй машины).
Ответ 2
@MarkR
Безопасность действительно улучшается за счет перемещения SQL Server в другой блок, и это связано с открывшейся поверхностью атаки.
Веб-сервер подвергается вредоносному доступу из Интернета. Надеемся, что этого никогда не произойдет, но были (и могут быть в будущем) уязвимости, которые могут быть использованы через искаженные запросы, которые пересекают брандмауэры.
Использование одной из этих уязвимостей может привести к выполнению произвольного кода.
В случае, если веб-сервер скомпрометирован таким образом, все, что работает на этом компьютере, теперь уязвимо, и использование программного обеспечения потенциально может работать в привилегированном контексте. Поверхность атаки взломанной машины намного шире.
Если SQL Server установлен на одном компьютере, любая база данных уязвима.
Теперь, если SQL Server установлен на отдельном компьютере, к нему можно получить доступ только через его открытый интерфейс. Прикрепляемая поверхность базы данных ограничена этим интерфейсом. Таким образом, чтобы скомпрометировать базу данных, вам нужно сначала скомпрометировать веб-службу, ТОГДА SQL Server. Это намного сложнее, чем на том же компьютере.
Продолжая этот принцип, он также является аргументом в пользу использования хранимых процедур. Если веб-сервер может получить доступ только к серверу базы данных с помощью хранимых процедур, интерфейс и, следовательно, поверхность атаки будут ограничены. Если веб-сервер может выполнять произвольный SQL-код на сервере базы данных, поверхность атаки снова намного больше, чем это необходимо, и риск для данных значительно увеличивается.
В системах, где данные ценны, эти риски, хотя и относительно небольшие, являются очень реальными, и определение подверженности бизнеса таким рискам является важным аспектом разработки решений.
Ответ 3
Поместите их на один и тот же компьютер:
- Уменьшает задержку между ними - поэтому, если у вас много простых запросов, это может повысить производительность.
- Сделайте вашу разработку и тестирование производительности проще, потому что вы можете сделать это с помощью одного окна (или виртуальной машины)
Если приложение не нуждается в избыточности и не нуждается в масштабировании, помещая их в один и тот же флажок, это определенная победа - это намного легче поддерживать.
Я не думаю, что аргумент безопасности несет какой-либо вес - я не вижу никакого преимущества в безопасности от их разделения. Веб-серверу необходимо будет иметь достаточный доступ к базе данных для просмотра и изменения всех или большинства данных в любом случае, поэтому, если бы он был полностью взломан, ядро SQL также было бы эффективно скомпрометировано.
Ответ 4
Для очень чувствительных сайтов преимущество отдельных серверов с брандмауэрами между ними может быть полезным, но это вызывает ряд проблем.
- Производительность запросов на разделенных серверах IIS-SQL может работать очень медленно из-за необходимости передавать данные по сети, также DNS может оставаться фактором даже с серверами на расстоянии 2 фута, поэтому, возможно, приложения для работы также разделены.
- Управление. Это может быть очевидным, но его 2 сервера, 2 лицензии на окна и связанное с этим управление и сложность прохождения брандмауэров.
Рекомендации по разделительному серверу:
- Установите гигабитную локальную сеть между серверами.
- Оптимизированные запросы для запуска в качестве хранимых процедур вместо
- Оптимизировать запросы, чтобы возвращать минимальный объем данных.
- Убедитесь, что адресация между серверами использует IP-адрес или эффективный поиск DNS.
- Дайте SQL-нагрузкам достаточную память для временных результатов.