Почему крупные сайты используют несколько серверов вместо одного сервера с лучшими спецификациями?

Я читал, что Stack Overflow использует 10 или более серверов для обслуживания сайта Stack Overflow. Различные серверы имеют разные функции, такие как обратный прокси, сервер базы данных или HTTP-сервер.

Я видел мощный автономный одиночный сервер с этими спецификациями:

  • 2 x Xeon E5-2630v2 @ 2,60 ГГц, всего 12 ядер, 24 потока; 30A MB
  • 64 ГБ ECC Reg. до 768 ГБ DDR3 на частоте 1600 МГц.
  • 4 x 120 ГБ Intel 520/530 Series (80k случайных IOPS, ~ 550 Мб /с)
  • HP iLo4 Advanced с выделенным портом управления Ethernet.

Почему бы не использовать один сервер с более высокими характеристиками, например, 768 ГБ оперативной памяти, 20 ТБ + жесткий диск, 4+ х Xeon? В чем преимущества использования многих серверов или недостатки использования одного сервера высокой спецификации?

39 голосов | спросил AMB 20 42014vEurope/Moscow11bEurope/MoscowThu, 20 Nov 2014 16:35:39 +0300 2014, 16:35:39

6 ответов


56

Единственный мощный сервер может быть обновлен до сих пор. Как только у вас будет самый мощный сервер, ваш сайт не сможет расти больше, не разбивая его между серверами или делая его более эффективным.

Существует также фактор стоимости. Единственный сервер, который является супермощным, может стоить в десять раз больше, чем два сервера, которые наполовину эффективны. Вы хотите, чтобы иметь возможность покупать свое оборудование по цене, которая является самой дешевой и не быть заблокирована в более высокую цену, потому что это единственное, что будет работать.

Время и надежность также вступают в игру. С двумя или более серверами можно отказаться или выйти из строя для обслуживания, и сайт может не работать. Вы не можете сделать это с помощью одного сервера.

Большинство крупных веб-сайтов используют балансировщики нагрузки и несколько серверов. Я работал в TripAdvisor. Они опубликовали отличную статью о архитектуре TripAdvisor и как они делают его масштабируемым с несколькими серверами.

Возможно запустить расширенную службу на одном сервере. Одним из примеров, о которых я знаю, является Mailinator. Автор опубликовал статью статью об архитектуре Mailinator . Он сосредоточен на том, чтобы сделать его код более эффективным, а не покупать новые серверы. В конечном итоге это ограничение, которое диктует, как работает его сервис. Он хранит почту только за несколько часов до того, как единственная машина удалит ее, чтобы освободить место для большего количества.

Обновление одного сервера называется масштабированием по вертикали . Добавление большего количества серверов известно как масштабирование по горизонтали . Для получения дополнительной информации по этой теме, вот несколько статей, которые сравнивают два:

ответил Stephen Ostermiller 20 42014vEurope/Moscow11bEurope/MoscowThu, 20 Nov 2014 16:42:17 +0300 2014, 16:42:17
31

С контр-адмирала Грейс Хоппер:

  

В здании более крупных компьютеров: «В пионерские дни они использовали волов для тяжелой тяги, и когда один бык не мог сдвинуть с места лог, они не пытались развить более крупного быка. Мы не должны пытаться больших компьютеров, но для большего количества компьютеров. "

источник

ответил もしもし 20 42014vEurope/Moscow11bEurope/MoscowThu, 20 Nov 2014 18:41:38 +0300 2014, 18:41:38
10

Стивен объясняет главное соображение при принятии решения о архитектуре систем: компромисс в вертикальном и горизонтальном масштабировании. Я добавлю еще несколько соображений:

  • Разделение проблем: вы упоминаете несколько радикально разных систем: обратные прокси, БД, серверы контента и т. д. С точки зрения обслуживания и безопасности явно выгодно, чтобы эти обязанности распределялись по разным системам, чтобы они могли запускать другую ОС (версия), если необходимо, могут обновляться отдельно и не влиять на другие службы при компрометации.
  • Доставка контента: это конечная цель веб-сервера, и она хорошо подходит для модели дистрибутива. Системы могут дублироваться и распространяться географически, чтобы минимизировать латентность междугородних соединений. Он также позволяет резервирование . Большие веб-сайты используют балансировщики нагрузки (еще один набор серверов!), Чтобы обеспечить автоматический переход на другой ресурс , чтобы поддерживать обслуживание в любое время .

На самом деле существует целый серверный класс, который принимает вертикальное масштабирование на другой уровень: мейнфреймы. Они имеют множество преимуществ (скорость, надежность) и недостатки (стоимость), но в целом они обычно используются, когда огромные объемы данных обрабатываются с помощью обработки ввода-вывода в том, что мы называем обработка транзакций (подумайте о покупке кредитных карт, банковских данных, данных выборов и переписей). Банки, например, обслуживают сайты с вертикально масштабированных веб-серверов, в то время как фоновый сервер будет обрабатывать транзакции через мэйнфрейм.

Интересно, что такие компании, как Paypal и Visa, отошли от мэйнфрейма к кластерным системам тысяч горизонтально масштабированных систем. В быстро развивающемся цифровом мире даже мэйнфреймы сталкиваются с горизонтальным масштабирующим потолком:

  

«При всех требованиях к доступности и производительности мы не можем обрабатывать платежи на мэйнфреймах,

Источник: Adam Banks, в ComputerWorldUK

ответил Lilienthal 20 42014vEurope/Moscow11bEurope/MoscowThu, 20 Nov 2014 18:33:32 +0300 2014, 18:33:32
8
  • Ограничение по размеру. Нам нравится притворяться, что одна коробка с несколькими процессорами, чипами памяти и дисками одинакова. Это не совсем так, но это правда, если ваши цифры не слишком велики. Существуют технические ограничения на тепло, энергию, близость и т. Д., Что означает, что всегда будет практический предел того, насколько большой может быть один сервер.

  • Масштабируемость - существует огромная разница между единой серверной системой, использованием разделяемой памяти для IPC и многосерверной системой, использующей сетевые или кластеры. Однако разница между двумя серверами и 200 значительно меньше - если вы построили систему, которая масштабируется, вы можете масштабировать ее МНОГО больше, прежде чем возникнет проблема ... и если у вас есть, то на самом деле нет необходимости в огромном одном сервере в первую очередь.

  • Устойчивость. Один сервер - это место, где один администратор может «упс». Или есть физическая проблема, которая означает, что обслуживание всего этого куска олова прерывается. (Datacentre утечка воды, кто-то врезается в стойку и сбивает ее с толку, что-то подобное). Несколько серверов могут быть распределены внутри центра обработки данных или еще лучше распределены географически. И если вы уже распространяете свое приложение, масштабирование на «средних» машинах почти всегда дешевле, чем такое же количество CPU /memory /IO на меньшем числе более крупных машин.

  • Обновления. Если я исправляю сервер, это может сделать службу неустойчивой, потребовать перезагрузки или иным образом потребовать некоторое время простоя. Если у меня есть 4 сервера, работающих на одном и том же, я могу сделать это некоторое время, чтобы сделать это. И оставьте его вне обслуживания, если цикл исправления /обновления идет не так.

ответил Sobrique 21 52014vEurope/Moscow11bEurope/MoscowFri, 21 Nov 2014 00:40:28 +0300 2014, 00:40:28
7

Возьмем проблему в небольших масштабах. Маленький офис с одним сервером, работающим с почтой, ActiveDirectory, файловым ресурсом и веб-сайтом для компании.

Хакеры нанесли удар, и вам нужно перезагрузиться, потому что IIS запутался. Или Exchange нуждается в обновлении и перезагрузке. Или Active Directory поврежден.

Любая из этих изолированных проблем с «одной службой вниз» влияет на весь сервер, поэтому любое совместное использование на этом сервере повлияет на них из-за необходимости перезагрузки или чего-либо еще.

Как только настоящий ИТ-специалист появится и увидит этот сервер, он порекомендует разделить их на отдельные серверы (и иметь резервный сервер контроллера домена).

Это старая пословица «не кладите все яйца в одну корзину»

Теперь эта философия применяется к веб-серверам. Если у меня есть только один веб-сервер, и я публикую свое веб-приложение (новый MyFaceLink.com), и он становится очень популярным, у меня новые проблемы. Я не могу взять сайт, чтобы выполнять обслуживание, пока пользователи на нем. И если он падает, или я получаю слишком много пользователей, я получаю приглашение. Даже самый большой в мире один сервер будет перегружен 1 миллиардом конвертируемых FB.

Итак, балансировка нагрузки вступает в игру по той же причине «яйца в корзине». Распространяйте сайт на 3 сервера, и если один идет вниз, остальные 2 обрабатывают емкость. Если мне нужно делать патчи, я просто делаю одно за раз, и никто не замечает.

В простейшем случае речь идет не о цене мега-сервера, а о том, действительно ли она может справиться с нагрузкой (хотя это может быть). Речь идет о единственной точке отказа. Когда бизнес занят достаточно, и происходит 24x7 вместо 5 пользователей, работающих с 8-5, время простоя неприемлемо. Запланированные отключения сложнее планировать. Таким образом, вы распространяете нагрузку.

ответил Ken Forslund 21 52014vEurope/Moscow11bEurope/MoscowFri, 21 Nov 2014 18:44:29 +0300 2014, 18:44:29
1

Если кто-то пытается заставить одну машину выполнять работу двух, некоторые части машины должны быть больше, но работать с одинаковой скоростью, некоторые могут оставаться одного размера, но им нужно будет работать быстрее, а некоторым потребуется быстрее и . Степень, в которой имеет смысл объединить роли более мелких машин в более крупные, или разделить роли более крупных машин на более мелкие, во многом зависит от того, какое масштабирование будет применяться к самым дорогим частям машин. Если рабочие нагрузки слишком большого количества машин объединены в один огромный колосс, тогда в ценах будут преобладать вещи, которые потребуют более быстрого увеличения и для обработки увеличенных рабочих нагрузок. Даже если затраты на такие вещи были линейными относительно скорости и размера, удвоение рабочей нагрузки привело бы к удвоению стоимости машины для ее обработки. Тот факт, что скорость увеличивается за определенную точку, приводит к увеличению (значительно большего) увеличения по сравнению с линейным увеличением.

На самом деле не существует фиксированной точки, где практичность приводит к разделению труда; в зависимости от типа выполняемой работы, машина, которая объединяет рабочие нагрузки двух, может получить меньше, чем вдвое больше памяти, или работать менее чем в два раза быстрее. С другой стороны, чем больше задач задается машиной, тем больше степень, в которой требования к памяти и скорости начинают линейно масштабироваться с рабочей нагрузкой. Чем дальше, тем больше увеличение относительной стоимости для каждого удвоения рабочей нагрузки.

ответил supercat 22 62014vEurope/Moscow11bEurope/MoscowSat, 22 Nov 2014 00:36:02 +0300 2014, 00:36:02

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132