В этой главе рассматривается архитектура управления ресурсами и описывается гипотетический проект консолидации серверов.
В этой главе рассматриваются следующие темы:
В этом примере в одной системе консолидируются пять приложений. Целевые приложения имеют разные требования к ресурсам, разные множества пользователей и разные архитектуры. В настоящее время каждое приложение существует на выделенном сервере, разработанном с учетом требований приложения. Приложения и их характеристики сведены в следующую таблицу.
Описание приложений |
Характеристики |
---|---|
Сервер приложений |
Отрицательная масштабируемость при увеличении числа процессоров свыше 2. |
Экземпляр базы данных для сервера приложений |
Интенсивная обработка транзакций. |
Сервер приложений в среде тестирования и разработки |
На базе графического интерфейса, с непротестированным кодом. |
Сервер обработки транзакций |
Основной показатель – время отклика. |
Автономный экземпляр базы данных |
Обработка большого количества транзакций и обслуживание нескольких часовых поясов. |
Для консолидации приложений в единую систему используется следующая конфигурация.
В сервере приложений установлены два процессора.
Экземпляр базы данных для сервера приложений и автономный экземпляр базы данных консолидируются на едином наборе из четырех или более процессоров. Для автономного экземпляра базы данных гарантируется 75 процентов этого ресурса.
Для обеспечения достаточно быстрого отклика сервера приложений требуется класс планирования IA. Для снижения влияния некорректных сборок кода накладываются ограничения по памяти.
Для минимизации задержки запросов серверу обработки транзакций назначается выделенный набор по крайней мере из двух процессоров.
Эта конфигурация относится к известным приложениям, выполняющимся в каждом из наборов ресурсов и потребляющим в них процессорные циклы. Таким образом, можно установить ограничения, позволяющие перенести процессорный ресурс в набор, где имеется потребность в этом ресурсе.
Для обеспечения возможности получения дополнительных ресурсов, интенсивно используемыми наборами (по сравнению с наборами, степень использования которых ниже), устанавливается целевая нагрузка wt-load.
Для целевого показателя locality задается значение tight , что позволяет максимизировать локальность процессоров.
Также накладывается дополнительное ограничение, предотвращающее использование наборов ресурсов более чем на 80 процентов. Это ограничение позволяет обеспечить доступ всех приложений к требуемым ресурсам. Кроме того, для транзакционного набора процессоров цель поддержания потребления на уровне ниже 80 процентов вдвое важнее других указанных целевых показателей. Эта важность определяется в конфигурации.
Отредактируйте файл базы данных/etc/project. Добавьте записи, реализующие требуемые элементы управления ресурсами и выполняющие сопоставление пользователей и пулов ресурсов, а затем просмотрите полученный файл.
# cat /etc/project . . . user.app_server:2001:Production Application Server:::project.pool=appserver_pool user.app_db:2002:App Server DB:::project.pool=db_pool;project.cpu-shares=(privileged,1,deny) development:2003:Test and development::staff:project.pool=dev_pool; process.max-address-space=(privileged,536870912,deny)keep with previous line user.tp_engine:2004:Transaction Engine:::project.pool=tp_pool user.geo_db:2005:EDI DB:::project.pool=db_pool;project.cpu-shares=(privileged,3,deny) . . . |
Группа разработки должна выполнять свои задачи в проекте по разработке, поскольку доступ к этому проекту осуществляется по идентификатору группы пользователя (GID).
Создайте входной файл с именем pool.host, который будет использоваться для настройки требуемых пулов ресурсов. Просмотрите файл.
# cat pool.host create system host create pset dev_pset (uint pset.min = 0; uint pset.max = 2) create pset tp_pset (uint pset.min = 2; uint pset.max=8) create pset db_pset (uint pset.min = 4; uint pset.max = 6) create pset app_pset (uint pset.min = 1; uint pset.max = 2) create pool dev_pool (string pool.scheduler="IA") create pool appserver_pool (string pool.scheduler="TS") create pool db_pool (string pool.scheduler="FSS") create pool tp_pool (string pool.scheduler="TS") associate pool dev_pool (pset dev_pset) associate pool appserver_pool (pset app_pset) associate pool db_pool (pset db_pset) associate pool tp_pool (pset tp_pset) modify system tester (string system.poold.objectives="wt-load") modify pset dev_pset (string pset.poold.objectives="locality tight; utilization < 80") modify pset tp_pset (string pset.poold.objectives="locality tight; 2: utilization < 80") modify pset db_pset (string pset.poold.objectives="locality tight;utilization < 80") modify pset app_pset (string pset.poold.objectives="locality tight; utilization < 80") |
Обновите конфигурацию с использованием входного файла pool.host.
# poolcfg -f pool.host |
Активируйте конфигурацию.
# pooladm -c |
Теперь архитектура в системе переведена в рабочее состояние.
Для просмотра конфигурации архитектуры, содержащей также элементы по умолчанию, создаваемые системой, необходимо ввести следующую команду:
# pooladm system host string system.comment int system.version 1 boolean system.bind-default true int system.poold.pid 177916 string system.poold.objectives wt-load pool dev_pool int pool.sys_id 125 boolean pool.default false boolean pool.active true int pool.importance 1 string pool.comment string pool.scheduler IA pset dev_pset pool appserver_pool int pool.sys_id 124 boolean pool.default false boolean pool.active true int pool.importance 1 string pool.comment string pool.scheduler TS pset app_pset pool db_pool int pool.sys_id 123 boolean pool.default false boolean pool.active true int pool.importance 1 string pool.comment string pool.scheduler FSS pset db_pset pool tp_pool int pool.sys_id 122 boolean pool.default false boolean pool.active true int pool.importance 1 string pool.comment string pool.scheduler TS pset tp_pset pool pool_default int pool.sys_id 0 boolean pool.default true boolean pool.active true int pool.importance 1 string pool.comment string pool.scheduler TS pset pset_default pset dev_pset int pset.sys_id 4 string pset.units population boolean pset.default false uint pset.min 0 uint pset.max 2 string pset.comment boolean pset.escapable false uint pset.load 0 uint pset.size 0 string pset.poold.objectives locality tight; utilization < 80 pset tp_pset int pset.sys_id 3 string pset.units population boolean pset.default false uint pset.min 2 uint pset.max 8 string pset.comment boolean pset.escapable false uint pset.load 0 uint pset.size 0 string pset.poold.objectives locality tight; 2: utilization < 80 cpu int cpu.sys_id 1 string cpu.comment string cpu.status on-line cpu int cpu.sys_id 2 string cpu.comment string cpu.status on-line pset db_pset int pset.sys_id 2 string pset.units population boolean pset.default false uint pset.min 4 uint pset.max 6 string pset.comment boolean pset.escapable false uint pset.load 0 uint pset.size 0 string pset.poold.objectives locality tight; utilization < 80 cpu int cpu.sys_id 3 string cpu.comment string cpu.status on-line cpu int cpu.sys_id 4 string cpu.comment string cpu.status on-line cpu int cpu.sys_id 5 string cpu.comment string cpu.status on-line cpu int cpu.sys_id 6 string cpu.comment string cpu.status on-line pset app_pset int pset.sys_id 1 string pset.units population boolean pset.default false uint pset.min 1 uint pset.max 2 string pset.comment boolean pset.escapable false uint pset.load 0 uint pset.size 0 string pset.poold.objectives locality tight; utilization < 80 cpu int cpu.sys_id 7 string cpu.comment string cpu.status on-line pset pset_default int pset.sys_id -1 string pset.units population boolean pset.default true uint pset.min 1 uint pset.max 4294967295 string pset.comment boolean pset.escapable false uint pset.load 0 uint pset.size 0 cpu int cpu.sys_id 0 string cpu.comment string cpu.status on-line |
Графическое представление архитектуры приведено ниже.
В пуле db_pool для автономного экземпляра базы данных гарантируется 75 процентов процессорного ресурса.