Сообщество Server Fault обычно не может помочь вам с планированием емкости - лучший ответ, который мы можем предложить: «Проведите сравнительный анализ своего кода на оборудовании, аналогичном тому, что вы будете использовать в производственной среде, определите любые узкие места, затем определите, какую рабочую нагрузку может обрабатывать ваше текущее оборудование и / или сколько аппаратных мощностей вам необходимо для обработки целевой рабочей нагрузки».
При планировании мощности существует ряд факторов, которые мы не можем адекватно оценить на сайте вопросов и ответов:
- Требования вашего конкретного кода / программного обеспечения
- Внешние ресурсы (базы данных, другое ПО / сайты / серверы)
- Ваша рабочая нагрузка (пиковая, средняя, в очереди)
- Ценность производительности для бизнеса (анализ затрат и выгод)
- Ожидаемые результаты ваших пользователей
- Любые соглашения об уровне обслуживания / договорные обязательства, которые могут у вас быть
Проведение надлежащего анализа этих и других факторов выходит за рамки простого сайта вопросов и ответов: они требуют подробных знаний о вашей среде и требованиях, которые только ваша команда (или консультант с адекватной оплатой) может собрать эффективно.
Некоторые аксиомы планирования мощности
- Оперативная память дешевая
Если вы ожидаете, что ваше приложение будет использовать много оперативной памяти, вам следует использовать столько оперативной памяти, сколько вы можете себе позволить / разместить. - Диск дешевый
Если вы планируете использовать много дисков, вам следует покупать большие диски - много их.
Хранилище SAN / NAS менее дешево, и, как правило, оно должно быть большим, а не маленьким, чтобы избежать дорогостоящих обновлений позже. - Рабочие нагрузки со временем растут
Предположим, ваши потребности в ресурсах увеличатся.
Имейте в виду, что увеличение может быть несимметричным (ЦП и ОЗУ могут расти быстрее, чем диск), и оно может быть нелинейным. - Электричество дорогое
Несмотря на то, что оперативная память и диски значительно снизились в цене, стоимость электроэнергии постоянно росла. Все эти дополнительные диски и оперативная память, не говоря уже о мощности процессора, увеличивают ваш счет за электроэнергию (или счет, который вы платите своему провайдеру). Планируйте соответственно.
Планирование количества виртуальных машин
Когда дело доходит до определения количества виртуальных машин на одном хосте, на самом деле нет хороших практических правил. На самом деле, есть только один, и это только хорошо:
Количество виртуальных машин обычно ограничено оперативной памятью, за исключением случаев, когда это не так.
Что не очень-то помогает. Если эти виртуальные машины будут запускать приложения с низким уровнем ЦП, то ваш ограничитель будет основан на оперативной памяти. Каждая платформа виртуальных машин имеет свои собственные возможности для превышения лимита ОЗУ, поэтому это не так просто, как TOTAL_RAM / Per-VM-RAM = MachineCount, но это число является хорошим элементом планирования.
Но что, если ваши виртуальные машины делают что-то помимо пересылки пакетов с низким ЦП?
Количество виртуальных машин ограничено семью дискретными ресурсами, доступными хост-машине:
- Гипервизор VMware, Xen, HyperV, KVM, что угодно. У каждого есть свои особенности, влияющие на счет. Некоторые очень хорошо справляются с дедупликацией страниц памяти, другие - нет. Некоторые не допускают превышение лимита ресурсов ЦП, некоторые - допускают.
- Частота ядра процессора Это ограничивает максимальную однопоточную производительность, которую может запустить виртуальная машина. 36 ядер ЦП 1,8 ГГц могут быть 64,8 ГГц ЦП на хосте, но ни один поток не будет работать быстрее 1,8 ГГц.
- Количество ядер процессора Это, вместе с частотой ядра, описывает потолок максимальной производительности процессора, который вы можете испытать.
- Системная RAM Как описано выше, это ограничивает количество виртуальных машин, которые вы можете запустить. Некоторые гипервизоры лучше других в таких вещах, как дедупликация страниц памяти, поэтому, если вы используете 100 идентичных виртуальных машин, вы можете упаковать их намного больше в таких системах с дедупликацией, чем если бы вы работали со 100 совершенно разными виртуальными машинами.
- Размер диска Каждый образ ОС занимает определенное пространство. Вам нужно достаточно места для хранения всего этого. Следовательно, размер диска устанавливает верхний предел количества виртуальных машин, которые вы можете разместить.
- Пропускная способность ввода / вывода Диск, лежащий в основе виртуальных машин, имеет максимальное количество операций ввода-вывода в секунду, которое он может обрабатывать. Если вы бросите на это слишком много, система зависнет в ожидании завершения ввода-вывода. Это устанавливает верхний предел того, сколько виртуальных машин, потребляющих ввод-вывод, вы можете запустить.
- Пропускная способность сети Для виртуальных машин, использующих сеть, доступная пропускная способность сети будет ограничивать количество таких виртуальных машин, которые вы можете запустить на данном хосте.
Вы можете споткнуться обо всем этом, все зависит от того, что вы делаете со своими виртуальными машинами. Что следует помнить:
- Нет такой вещи, как общая система.
- Нет такого понятия, как универсальный веб-сервер., поскольку код приложения может запускаться с труднодоступной CDN-стилевое обслуживание, до серьезных вещей вроде перекодирования видео.
- Нет такой вещи, как универсальный сервер базы данных. Они могут работать от крошечных систем, используемых только для отслеживания состояния сеанса, до очень больших.
Чтобы выяснить, сколько виртуальных машин вы можете упаковать в хост-систему, вам необходимо знать, как работают ваши системы и что им требуется для нормальной работы. Как только вы это узнаете, вы можете приступить к планированию подсчета. И еще лучше, выясните, насколько мощными вам нужно сделать ваши хост-системы!
Убедитесь, что вы задаете правильный вопрос.
- Компьютеры дешевые
- Будущие потребности очень трудно предсказать
- Планируйте масштабирование, а не то, что покупать заранее
Если вы не знаете, что вам нужно, значит, вам не нужно много. Если у вас есть горячий веб-сайт, у вас также, вероятно, есть операционная группа, которая знает, сколько оперативной памяти, диска, io, сети и т. Д. Нужно вашему приложению. Если вы находитесь в стадии сновидения, вам следует начать со своего рабочего стола и постепенно продвигаться вверх.
Убедитесь, что у вас есть представление о том, как вы собираетесь масштабироваться, когда ситуация станет больше. Можете ли вы добавить больше серверов за балансировщиком нагрузки? Можете ли вы разделить сервер Redis?
Кроме того, иметь собственный центр обработки данных - отстой. Дата-центр (даже если это всего лишь один компьютер) отвлекает от вашей реальной цели. Вы не можете просто купить компьютер, включить его и уйти. Вам нужны кондиционер, фильтрация воздуха, надежное электроснабжение, надежный Интернет, резервное копирование, запасные части, физическое пространство для роста, увеличивающаяся мощность, кабели питания, о которых не споткнется, и множество других проблем.