En este capítulo se revisa la estructura de administración de los recursos y describe un proyecto de consolidación de servidores hipotético.
En este capítulo, se describen los siguientes temas:
En este ejemplo se están consolidando cinco aplicaciones en un único sistema. Las aplicaciones de destino tienen diferentes requisitos de recursos, poblaciones de usuarios y arquitecturas. Actualmente, cada aplicación se encuentra en un servidor dedicado diseñado para satisfacer los requisitos de la aplicación. En la tabla siguiente se identifican las aplicaciones y sus características.
Descripción de la aplicación |
Características |
---|---|
Application Server |
Muestra una escalabilidad negativa más allá de 2 CPU |
Instancia de base de datos para servidor de aplicaciones |
Procesamiento de transacciones densas |
Servidor de aplicaciones en entorno de prueba y desarrollo |
Basado en GUI, con ejecución de código no probado |
Servidor de procesamiento de transacciones |
Se encarga principalmente del tiempo de respuesta |
Instancia de base de datos autónoma |
Procesa una gran cantidad de transacciones y sirve a varias zonas horarias |
La configuración siguiente se utiliza para consolidar las aplicaciones en un único sistema.
El servidor de aplicaciones tiene un conjunto de procesadores de dos CPU.
La instancia de base de datos del servidor de aplicaciones y la instancia de base de datos autónoma se consolidan en un único conjunto de procesadores de como mínimo cuatro CPU. La instancia de base de datos autónoma tiene garantizado un 75 por ciento de dicho recurso.
El servidor de aplicaciones de prueba y desarrollo requiere la clase de planificación IA para garantizar la respuesta de la IU. Se imponen limitaciones de memoria para atenuar los efectos del código mal generado.
Al servidor de proceso de transacciones se le asigna un conjunto de procesadores dedicados de como mínimo dos CPU, con el fin de minimizar la latencia de respuesta.
Esta configuración se asigna a aplicaciones conocidas que ejecutan y consumen ciclos de procesador en cada conjunto de recursos. De este modo, pueden establecerse limitaciones que permiten transferir el recurso del procesador a conjuntos en los que se requiere el recurso.
El objetivo de wt-load es permitir a los conjuntos de recursos que se utilizan con gran frecuencia recibir mayores asignaciones de recursos que los conjuntos que se utilizan menos.
El objetivo de locality se configura como tight, que se utiliza para maximizar la localidad del procesador.
También se aplica una limitación adicional para evitar que el uso supere el 80 por ciento de cualquier conjunto de recursos. Esta limitación garantiza que todas las aplicaciones tengan acceso a los recursos que necesitan. Asimismo, para el conjunto de procesadores de transacciones, el objetivo de mantener el uso por debajo del 80 por ciento es el doble de importante que para cualquier otro objetivo especificado. Esta importancia se establece en la configuración.
Edite el archivo de base de datos /etc/project. Añada entradas para implementar los controles de recursos necesarios y para asignar usuarios a los agrupaciones de recursos y, a continuación, visualizar el archivo.
# 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) . . . |
El equipo de desarrollo debe ejecutar tareas en el proyecto de desarrollo porque el acceso a este proyecto se basa en un ID de grupo de usuario (GID).
Cree un archivo de entrada llamado pool.host, que se utilizará para configurar las agrupaciones de recursos necesarias. Visualice el archivo.
# 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") |
Actualice la configuración utilizando el archivo de entrada pool.host.
# poolcfg -f pool.host |
Active la configuración.
# pooladm -c |
La estructura pasará a estar operativa en el sistema.
Para ver la configuración de la estructura, que también contiene elementos predeterminados creados por el sistema, escriba:
# 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 |
A continuación se incluye una representación gráfica de la estructura.
En la agrupación db_pool, la instancia de base de datos autónoma tiene garantizado el 75 por ciento de los recursos de la CPU.