четверг, 1 февраля 2018 г.

Планирование мощности сервера

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

Однако у виртуализации есть и минусы, например "оверхед" гипервизора, уязвимости в гипервизоре.
Некоторым проектам требуются именно физические сервера, поэтому планирование мощности сервера необходимо сделать еще на этапе подготовки архитектуры проекта.

Основными критериями при выборе сервера обычно бывают:
1. Серверный процессор
2. Оперативная память
3. Жесткие диски

Также необходимо позаботиться о том, как сервера будут масштабироваться в случае увеличения нагрузки.
Планировать мощность сервера необходимо исходя из архитектуры проекта, какие данные будут обрабатываться на сервере, что будет храниться на сервере.

Например, если сервер используется для работы Redis, скорее всего ему не потребуется очень мощный процессор и высокоскоростные диски (в некоторых случаях они все-таки нужны), а вот оперативной памяти должно быть много, лучше чтобы оперативная память была с коррекцией ошибок (ECC).
Если же сервер используется для раздачи статических файлов (CDN), то помимо оперативной памяти, используемой под кэш, необходимо будет также использование SSD.
Если сервер используется например для размещения интернет-магазина, то стоит задуматься над упрощением архитектуры горизонтального масштабирования и шардинга.

Представим ситуацию, интернет магазин в канун праздников ожидает большое количество посетителей, смогут ли текущие сервера справиться с нагрузкой? Если нет, то можно ли быстро подключить дополнительные сервера? Какую роль они будут выполнять?

При выборе серверного процессора необходимо обратить внимание на несколько факторов:
1. Ядра, сможет ли ваше приложение использовать параллельно несколько ядер
2. Кэш, чем больше кэш-памяти, тем быстрее процессор
3. Сокет, процессор должен быть совместим с материнской платой
4. Графический процессор, как правило требуется для весьма специализированных задач
5. Частота, не следует отдавать предпочтение тому или иному процессору только на основе его частоты, она не является первостепенным фактором при выборе процессора
6. Величина отвода тепловой мощности, может стать проблемой в случае размещения сервера не в ЦОДе

Оперативную память необходимо выбирать исходя из того, какие используются процессор и материнская плата.

При выборе жестких дисков необходимо руководствоваться такими критериями оценки:
1. Производительность
2. Надежность
3. Время отклика
4. Гарантия от производителя
5. Устойчивость к вибрациям

Жесткие диски можно разделить на основные категории: SATA (5400/7200 rpm), SAS (10000/15000 rpm), SSD. Не во всех случаях необходимо использовать высокоскоростной SSD, возможно SAS-диски будут наилучшим выбором. SATA-диски как правило чаще всего используются для хранения резервных копий и архивов данных из-за их дешевизны.
Использование технологии RAID позволяет объединять множество дисков в массив. Какой тип RAID выбрать зависит от того, для чего используется сервер.

Наиболее популярными серверными процессорами являются процессоры из линейки Intel Xeon.
Также при добавлении нового сервера, необходимо ориентироваться примерно на 80% его мощности, в случае когда нагрузка подходит к отметке 70-75% стоит задуматься над тем, что в скором времени потребуется увеличение ресурсов сервера или кластера.

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

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

Комментариев нет: