Подтвердить что ты не робот

Должен ли SQL Server находиться на том же компьютере, что и установка IIS?

Я слушаю подкаст # 19, и Джоэл и Джефф спорят о запуске SQL Server на том же компьютере, что и установка IIS. Я должен сказать, что это похоже на Джеффа, сложенного Джоэлю, но опять же я только догадываюсь, какой из них есть.;)

Каковы плюсы и минусы каждого? Что лучше?

Я обычно запускаю их отдельно (предпочтение Joel), но я вижу точку Джеффа, где они ближе друг к другу.

4b9b3361

Ответ 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-нагрузкам достаточную память для временных результатов.