В этой главе рассматривается архитектура управления ресурсами и описывается гипотетический проект консолидации серверов.
В этой главе рассматриваются следующие темы:
В этом примере в одной системе консолидируются пять приложений. Целевые приложения имеют разные требования к ресурсам, разные множества пользователей и разные архитектуры. В настоящее время каждое приложение существует на выделенном сервере, разработанном с учетом требований приложения. Приложения и их характеристики сведены в следующую таблицу.
|
Описание приложений |
Характеристики |
|---|---|
|
Сервер приложений |
Отрицательная масштабируемость при увеличении числа процессоров свыше 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 процентов процессорного ресурса.