Руководство по системному администрированию: контейнеры в Solaris - управление ресурсами и зонами

Глава 14 Пример конфигурации управления ресурсами

В этой главе рассматривается архитектура управления ресурсами и описывается гипотетический проект консолидации серверов.

В этой главе рассматриваются следующие темы:

Конфигурация для консолидации

В этом примере в одной системе консолидируются пять приложений. Целевые приложения имеют разные требования к ресурсам, разные множества пользователей и разные архитектуры. В настоящее время каждое приложение существует на выделенном сервере, разработанном с учетом требований приложения. Приложения и их характеристики сведены в следующую таблицу.

Описание приложений 

Характеристики 

Сервер приложений 

Отрицательная масштабируемость при увеличении числа процессоров свыше 2. 

Экземпляр базы данных для сервера приложений 

Интенсивная обработка транзакций. 

Сервер приложений в среде тестирования и разработки 

На базе графического интерфейса, с непротестированным кодом. 

Сервер обработки транзакций 

Основной показатель – время отклика. 

Автономный экземпляр базы данных 

Обработка большого количества транзакций и обслуживание нескольких часовых поясов. 

Конфигурация консолидации

Для консолидации приложений в единую систему используется следующая конфигурация.

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

Также накладывается дополнительное ограничение, предотвращающее использование наборов ресурсов более чем на 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

Графическое представление архитектуры приведено ниже.

Рисунок 14–1 Конфигурация консолидации серверов

На рисунке показана гипотетическая конфигурация серверов.


Примечание –

В пуле db_pool для автономного экземпляра базы данных гарантируется 75 процентов процессорного ресурса.