Выбор оборудования для каждого компонента архитектуры способен значительно повлиять на стоимость проекта. В том, что касается серверов, необходимо как минимум иметь общее представление (выработанное на основе собранной статистики и закономерностей использования сайта) о том, на что должны быть потрачены ваши деньги.
Прежде чем просматривать цены фирмы-поставщика, разберитесь, чего вы пытаетесь добиться. Должен ли сервер выполнять значительные объемы вычислений? Будет ли он интенсивно использовать память? Выполняет ли он функции шлюза, ориентированного на сетевые операции?
В наше время разница между архитектурами с горизонтальным и вертикальным масштабированием достаточно хорошо известна в отрасли, и все же о ней стоит сказать пару слов, чтобы показать ее в контексте планирования мощностей.
Под горизонтальным масштабированием понимается возможность наращивания мощностей простым добавлением аналогично функционирующих узлов в существующую инфраструктуру, например, второго веб-сервера, которому достается часть нагрузки по обслуживанию посещений сайта.
Под вертикальным масштабированием понимается возможность наращивания мощностей за счет увеличения внутренних ресурсов сервера: процессоров, памяти, дисков и сетевых ресурсов.
Со времени появления многоуровневых (tiered) и неразделяемых (shared-nothing) архитектур горизонтальное масштабирование получило широкое признание благодаря своим преимуществам перед вертикальным масштабированием в том, что касается веб-приложений. Способность системы к горизонтальному масштабированию подразумевает, что ваше приложение разработано соответствующим образом и может обеспечить работу базы данных в распределенном режиме.
Если вы будете опираться исключительно на вертикальное масштабирование, возникнет опасность того, что непрестанное обновление компонентов одного компьютера приведет к резкому возрастанию затрат. Также возникнет риск появления единой точки отказа (SPOF - Single Point of Failure).
При горизонтальном масштабировании приходится учитывать более сложную проблему возрастающего количества точек потенциальных сбоев при расширении серверного комплекса. Кроме того, появляются скрытые проблемы, связанные с необходимостью синхронизации узлов.
Диагональным масштабированием (этот термин придуман Дж. Оллспоу) называется процесс вертикального масштабирования горизонтально масштабированных узлов, уже присутствующих в инфраструктуре.
Со временем процессоры и оперативная память становятся быстрее и дешевле, а диски — больше и экономичнее. Возможно, в ваш план будет экономически выгодно включить некоторые аспекты вертикального масштабирования, но только применительно к горизонтальным узлам.
Для нас это означает, что все узлы с интенсивным использованием процессоров и памяти можно «обновить», используя меньшее количество серверов с более мощными процессорами и большими объемами памяти.
Для компьютеров, интенсивно работающих с дисками, это может означать возможность перехода на меньшее количество компьютеров с большим количеством дисков. В качестве примера рассмотрим недавнее обновление Flickr.
Изначально в кофигурации было 67 двухпроцессорных веб-серверов с 4 Гбайт памяти и одним диском SATA. Клиентский уровень в основном интенсивно использует процессор, обрабатывая запросы от клиентских браузеров, обращаясь с запросами к базе данных и принимая загружаемые фотографии. На этих 67 компьютерах, оснащенных процессорами Intel Хеоn 2,80 ГГц, работали Apache и РНР.
Когда пришло время расширения мощностей, было принято решение опробовать новые восьмиядерные процессоры. Как выяснилось, по своей производительности машины с двумя восьмиядерными процессорами примерно втрое превышали предыдущие двухпроцессорные серверы.
С восемью ядрами процессоров Intel Хеоn L5320 1,86 ГГц мы смогли заменить 67 серверов всего 18 новыми серверами. На рисунке показано, насколько в результате сократилась средняя нагрузка на сервер (в границах всего кластера).
Рисунок демонстрирует снижение средней нагрузки, которое произошло после исключения 67 компьютеров из рабочего пула и передачи той же производственной нагрузки 18 новым компьютерам. Конечно, график выглядит очень эффектно, но, возможно, средняя нагрузка — не лучший показатель для пояснения диагонального масштабирования.
Следующий рисунок описывает тот же период времени, что и предыдущий рисунок, но на нем отображается количество запросов Apache в секунду при замене старых серверов. Обратите внимание на то, что после замены количество запросов возросло на 400, то есть старые машины были очень близки к своему критическому порогу производительности.
Таблица показывает, что это означает с точки зрения ресурсов.
Серверы | Процессор | Оперативная память | Диск | Мощность (кВт) на 60% пиковой нагрузки |
---|---|---|---|---|
67 | 2(двухъядерные) | 4 Гбайт | 1x80 Гбайт SATA | 8,763 |
18 | 2(восьмиядерные) | 4 Гбайт | 1x146 Гбайт SATA | 2,332 |
Если на основании анализа трафика предположить, что серверы работают в среднем на 60% от пиковой нагрузки, получится, что мы используем около 30 % от использовавшейся ранее мощности. Кроме того, эта замена сэкономила 49U единиц стоечного пространства, так как каждому серверу достаточно 1U места. В результате диагональное масштабирование привело к освобождению более чем одной полной стандартной стойки 42U. Неплохо, согласитесь.
Точки масштабирования | Аварийное восстановление |