Este capítulo proporciona información sobre el servicio de datos genérico (GDS) y muestra cómo crear un servicio que utilice GDS. Este servicio se crea utilizando SunPlex Agent Builder o los comandos estándar de administración de Sun Cluster.
Este capítulo se divide en los siguientes apartados:
GDS es un mecanismo para dotar a aplicaciones sencillas habilitadas para la red de una alta disponibilidad o escalabilidad, mediante su conexión a una estructura de Gestión de grupos de recursos (RGM) de Sun Cluster. Este mecanismo no requiere codificación de un agente, que es el método habitual para dotar una aplicación de alta disponibilidad y escalabilidad.
GDS es un servicio de datos único, precompilado. No es posible modificar el servicio de datos precompilado ni sus componentes, tampoco las implementaciones de método de rellamada (rt_callbacks(1HA)) ni el archivo de registro de tipo de recurso (rt_reg(4)).
El tipo de recurso del servicio datos genérico SUNW.gds se incluye en el paquete SUNWscgds. La utilidad scinstall instala este paquete durante la instalación del clúster (consulte la página del comando man de scinstall( 1M)). El paquete SUNWscgds incluye los archivos siguientes:
# pkgchk -v SUNWscgds /opt/SUNWscgds /opt/SUNWscgds/bin /opt/SUNWscgds/bin/gds_monitor_check /opt/SUNWscgds/bin/gds_monitor_start /opt/SUNWscgds/bin/gds_monitor_stop /opt/SUNWscgds/bin/gds_probe /opt/SUNWscgds/bin/gds_svc_start /opt/SUNWscgds/bin/gds_svc_stop /opt/SUNWscgds/bin/gds_update /opt/SUNWscgds/bin/gds_validate /opt/SUNWscgds/etc /opt/SUNWscgds/etc/SUNW.gds |
GDS tiene las ventajas siguientes con respecto a la utilización del modelo de código fuente generado por SunPlex Agent Builder (consulte la página de comando man de scdscreate( 1HA)) o los comandos estándar de administración de Sun Cluster:
GDS es fácil de usar.
GDS y sus métodos están precompilados, por lo que no son modificables.
SunPlex Agent Builder se puede utilizar para generar secuencias de control para la aplicación que se colocan en un paquete de Solaris que se puede reutilizar en varios clústeres.
Aunque la utilización de GDS tiene muchas ventajas, hay casos en los que no es conveniente utilizarlo. GDS no es el mecanismo que se debe utilizar en estos casos:
Cuando se requiere más control del que está disponible usando el tipo de recurso precompilado como, por ejemplo, cuando es necesario agregar propiedades de extensión o cambiar los valores predeterminados.
Cuando haya que modificar el código fuente para agregar funciones especiales.
Hay dos formas de crear un servicio que utilice GDS:
Con SunPlex Agent Builder
Con los comandos administrativos estándar de Sun Cluster
Use SunPlex Agent Builder y seleccione GDS como el tipo de código fuente generado. Los datos de entrada del usuario se utilizan para generar un conjunto de secuencias de control que configuren recursos para la aplicación en cuestión.
Este método usa el código del servicio de datos precompilado de SUNWscgds pero requiere que el administrador de sistema use comandos estándar de administración de Sun Cluster para crear y configurar los recursos. Consulte las páginas de comando man de scrgadm( 1M) y scswitch( 1M).
Como muestran los procedimientos Uso de los comandos administrativos de Sun Cluster para crear un servicio de alta disponibilidad que use GDS y Uso de los comandos administrativos de Sun Cluster para crear un servicio escalable que use GDS, hay que escribir mucho para emitir los comandos scrgadm y scswitch apropiados.
Con GDS, SunPlex Agent Builder simplifica el proceso, porque genera las secuencias de control que emiten los comandos scrgadm y scswitch.
GDS le permite registrar información importante que pasa de GDS a las secuencias de control que inicia GDS. Entre esta información importante se incluye el estado de los métodos de inicio, de análisis y de parada, así como las variables de propiedades. Esta información se puede usar para diagnosticar problemas o errores en las secuencias de control o para aplicarla a otros propósitos.
La propiedad Log_level que se describe en Propiedad Log_level se usa para especificar el nivel de los mensajes (o el tipo) que GDS debe registrar. Puede especificar como valor NONE, INFO o ERR.
Los dos archivos de registro siguientes de GDS están ubicados en el directorio /var/cluster/logs/DS/nombre_grupo_recursos/ nombre_recurso:
start_stop_log.txt, que contiene mensajes que registran los métodos de inicio y de parada de los recursos
probe_log.txt, que contiene mensajes registrados por el supervisor de recursos
El siguiente ejemplo muestra los tipos de información que contiene start_stop_log.txt:
10/20/2004 12:38:05 phys-node-1 START-INFO> Start succeeded. [/home/brianx/sc/start_cmd] 10/20/2004 12:42:11 phys-node-1 STOP-INFO> Successfully stopped the application
El siguiente ejemplo muestra los tipos de información que contiene probe_log.txt:
10/20/2004 12:38:15 phys-node-1 PROBE-INFO> The GDS monitor (gds_probe) has been started 10/20/2004 12:39:15 phys-node-1 PROBE-INFO> The probe result is 0 10/20/2004 12:40:15 phys-node-1 PROBE-INFO> The probe result is 0 10/20/2004 12:41:15 phys-node-1 PROBE-INFO> The probe result is 0
Si la aplicación no está habilitada para red, debe proporcionar tanto la propiedad de extensión Start_command como la propiedad Port_list. Por el contrario, si la aplicación sí está habilitada para red, debe proporcionar sólo la propiedad Port_list.
El comando de inicio, que se especifica en la propiedad de extensión Start_command, inicia la aplicación. Debe ser un comando UNIX con argumentos que se pueda pasar directamente a un shell para iniciar la aplicación.
La propiedad Port_list identifica la lista de puertos mediante los que escucha la aplicación. La propiedad Port_list se debe especificar en la secuencia de inicio que crea SunPlex Agent Builder o en el comando scrgadm, si se están utilizando los comandos administrativos estándar de Sun Cluster.
La siguiente lista contiene propiedades de GDS opcionales:
Network_resources_used
Stop_command (propiedad de extensión)
Probe_command (propiedad de extensión)
Start_timeout
Stop_timeout
Probe_timeout (propiedad de extensión)
Child_mon_level (propiedad de extensión utilizada únicamente con los comandos administrativos estándar)
Failover_enabled (propiedad de extensión)
Stop_signal (propiedad de extensión)
Log_level (propiedad de extensión)
El valor predeterminado de esta propiedad es nulo. Esta propiedad se debe especificar si la aplicación debe vincularse a una o varias direcciones concretas. Si se omite esta propiedad o si se especifica como Null, se presupone que la aplicación escucha en todas las direcciones.
Antes de crear el recurso de GDS es necesario haber configurado un recurso LogicalHostname o SharedAddress. Consulte Sun Cluster Data Services Planning and Administration Guide for Solaris OS para obtener información sobre cómo configurar un recurso LogicalHostname o SharedAddress.
Para especificar un valor, escriba uno o varios nombres de recurso. Cada uno de ellos puede contener uno o varios LogicalHostname o SharedAddress. Consulte la página de comando man de r_properties (5) para obtener más información.
El comando de parada debe detener la aplicación y retornar sólo cuando la aplicación se haya detenido completamente. Debe ser un comando UNIX completo, que se pueda pasar directamente a un shell para detener la aplicación.
Si se ejecuta el comando Stop_command, el método de parada de GDS inicia el comando de parada con un 80 % del tiempo de espera de parada. Independientemente del resultado del inicio del comando de parada, el método de parada de GDS envía SIGKILL después del 15 % del tiempo de espera de parada. El 5 % restante de ese tiempo se reserva para cargas adicionales indirectas de las tareas domésticas.
Si se omite el comando de parada, GDS intenta detener la aplicación con la señal que se especifica en Stop_signal.
El comando de análisis comprueba periódicamente el estado de la aplicación. Debe ser un comando UNIX con argumentos que se puede pasar directamente a un shell para analizar la aplicación. El comando de análisis retorna con un estado de salida de 0 si la aplicación está bien.
El estado de salida del comando de análisis se utiliza para determinar la gravedad del fallo de la aplicación. Dicho estado de salida se denomina estado de análisis y debe ser un número entero entre 0 (éxito) y 100 (fallo total). El estado de análisis también puede ser un valor especial de 201, lo que provoca que la aplicación se recupere de los fallos inmediatamente, a menos que Failover_enabled esté establecido en FALSE . El estado de análisis se utiliza dentro del algoritmo de análisis de GDS (consulte scds_fm_action(3HA)) para reiniciar la aplicación localmente en lugar de hacer una operación de recuperación de fallos a otro nodo. Si el estado de salida es 201, se realiza inmediatamente una recuperación de fallos de la aplicación.
Si se omite el comando de análisis, GDS proporciona su propio análisis sencillo que se conecta a la aplicación mediante el conjunto de direcciones IP que se derivan de la propiedad Network_resources_used o de la salida de scds_get_netaddr_list (consulte la página man de scds_get_netaddr_list(3HA)). Si la conexión es satisfactoria, se desconecta inmediatamente. Si tanto la conexión como la desconexión son satisfactorias, se considera que la aplicación está funcionando correctamente.
El analizador incluido con GDS sólo se pretende que sea un sustituto sencillo del analizador específico de la aplicación, que cuenta con todas las funciones.
Esta propiedad especifica el inicio del tiempo de espera del comando de inicio. Consulte Propiedad de extensión Start_command para obtener información adicional. El valor predeterminado de Start_timeout es 300 segundos.
Esta propiedad especifica la detención del tiempo de espera del comando de parada. Consulte Propiedad Stop_command para obtener información adicional. El valor predeterminado de Stop_timeout es 300 segundos.
Esta propiedad especifica el valor del tiempo de espera del comando de análisis. Consulte Propiedad Probe_command para obtener información adicional. El valor predeterminado de Probe_timeout es 30 segundos.
Si usa los comandos estándar de administración de Sun Cluster, podrá usar esta opción. En cambio, si usa SunPlex Agent Builder, no podrá usarla.
Esta propiedad permite controlar los procesos supervisados mediante el recurso de supervisión de procesos (PMF). Indica el nivel máximo hasta el cual se supervisan los procesos secundarios bifurcados. Esta propiedad funciona igual que el argumento -C con el comando pmfadm. Consulte la página de comando man de pmfadm(1M).
Omitir esta propiedad o establecerla en su valor predeterminado de -1 tiene el mismo efecto que omitir la opción -C en el comando pmfadm, es decir, todos los secundarios (y sus descendientes) se supervisarán.
Esta propiedad de extensión booleana controla el comportamiento de la recuperación de fallos del recurso. Si esta propiedad de extensión se establece en true, la aplicación realiza una operación de recuperación de fallos cuando el número de reinicios supere el valor retry_count dentro del número de segundos de retry_interval.
Si esta propiedad de extensión se fija en false, la aplicación no se reinicia ni realiza una recuperación de fallos a otro nodo cuando el número de reinicios supere el valor de retry_count dentro del número de segundos de retry_interval .
Esta propiedad se puede utilizar para impedir que el recurso de aplicación inicie una recuperación de fallos del grupo de recursos. El valor predeterminado de esta propiedad es true.
GDS utiliza el valor entero de esta propiedad de extensión para determinar la señal empleada para detener la aplicación con PMF. Consulte la página de comando man de signal( 3HEAD) para obtener una lista de los valores enteros que se pueden especificar. El valor predeterminado es 15 ( SIGTERM).
Esta propiedad especifica el nivel (o el tipo) de mensajes de diagnóstico que registra GDS. Puede especificar NONE, INFO o ERR para esta propiedad. Si especifica NONE, GDS no registrará los mensajes de diagnóstico. Si especifica INFO, sólo se registrarán mensajes de información. Y, por último, si especifica ERR, sólo se registrarán los mensajes de error. Por defecto, GDS no registra mensajes de diagnóstico (NONE).
Puede usar SunPlex Agent Builder para crear un servicio que use GDS. SunPlex Agent Builder se describe con más detalle en el Capítulo 9, Agent Builder de SunPlex.
Conviértase en superusuario o asuma una función similar.
Inicio de SunPlex Agent Builder.
# /usr/cluster/bin/scdsbuilder |
Aparece la ventana de creación de SunPlex Agent Builder.
Escriba el nombre del proveedor.
Escriba el nombre de la aplicación.
La combinación del nombre del proveedor y de la aplicación no puede contener más de nueve caracteres. Se utiliza como nombre del paquete de las secuencias de control.
Vaya al directorio de trabajo.
Puede usar el menú desplegable Examinar para seleccionar el directorio en lugar de escribir la ruta.
Seleccione si el servicio de datos es escalable o a prueba de fallos.
No es necesario seleccionar la habilitación para red, porque es la opción predeterminada al crear GDS.
Seleccione GDS.
(Opcional) Cambie el valor predeterminado de la versión de RT que se muestra.
En el campo de la versión del tipo de recurso no se pueden usar los siguientes caracteres: espacios, tabulaciones, barra oblicua (/), barra inversa (\), asterisco (*), interrogación (?), coma (,), punto y coma (;), corchete de apertura ([) o corchete de cierre (]).
Pulse Crear.
Agent Builder crea secuencias de control. Los resultados de la creación del servicio se muestran en el registro de salida.
Crear está atenuado. Ahora puede configurar las secuencias de control.
Haga clic en Next.
Aparece la pantalla de configuración.
Después de crear las secuencias de control, debe configurar el nuevo servicio.
Escriba la ubicación del comando de inicio o haga clic en Examinar para localizar dicho comando.
Puede especificar variables de propiedad. Las variables de propiedad se describen en Variables de propiedades.
(Opcional) Escriba el comando de parada o haga clic en Examinar para localizar dicho comando.
Puede especificar variables de propiedad. Las variables de propiedad se describen en Variables de propiedades.
(Opcional) Escriba el comando de análisis o haga clic en Examinar para localizar dicho comando.
Puede especificar variables de propiedad. Las variables de propiedad se describen en Variables de propiedades.
(Opcional) Especifique los valores de tiempo de espera de los comandos inicio, parada y análisis.
Haga clic en Configurar.
Agent Builder comienza la configuración de las secuencias de control.
Agent Builder combina el nombre del proveedor y el de la aplicación para crear el nombre del paquete.
Se crea un paquete para las secuencias de control y se ubica en el siguiente directorio:
directorio_trabajo/nombre_proveedoraplicación/pkg |
Por ejemplo, /export/wdir/NETapp/pkg.
Como superusuario, instale el paquete terminado en todos los nodos del clúster.
# cd /export/wdir/NETapp/pkg # pkgadd -d . NETapp |
Los siguientes archivos los instala pkgadd:
/opt/NETapp /opt/NETapp/README.app /opt/NETapp/man /opt/NETapp/man/man1m /opt/NETapp/man/man1m/removeapp.1m /opt/NETapp/man/man1m/startapp.1m /opt/NETapp/man/man1m/stopapp.1m /opt/NETapp/man/man1m/app_config.1m /opt/NETapp/util /opt/NETapp/util/removeapp /opt/NETapp/util/startapp /opt/NETapp/util/stopapp /opt/NETapp/util/app_config |
Las páginas de comando man y los nombres de secuencias de control se corresponderán con el nombre de la aplicación que se introdujo antes precedido del nombre de la secuencia; por ejemplo startapp.
Para ver las páginas de comando man hay que especificar la ruta a la página. Por ejemplo, para ver la página de comando man de startapp(1M), escriba:
# man -M /opt/NETapp/man startapp |
En un nodo del clúster configure los recursos e inicie la aplicación.
# /opt/NETapp/util/startapp -h nombre_sistema_lógico -p lista_puertos_y_protocolos |
Los argumentos de la secuencia de inicio startapp variarán según el tipo de recurso: a prueba de fallos o escalable. Compruebe la página de comando man personalizada o ejecute la secuencia de inicio startapp sin argumentos para obtener una instrucción de sintaxis.
# /opt/NETapp/util/startapp Se deben especificar los nombres de LogicalHostname o SharedAddress. Para servicios a prueba de fallos: Sintaxis: startapp -h nombre_sistema_lógico -p lista_puertos_y_protocolos [-n grupo_IPM/lista_adaptadores] Para servicios escalables: Sintaxis: startapp -h nombre_dirección_compartida -p lista_puertos_y_protocolos [-l norma_de_equilibrio_de_cargas] [-n grupo_IPMP/lista_adaptadores] [-w pesos_de_equilibrio_de_cargas] |
SunPlex Agent Builder genera tres secuencias de control y un archivo de configuración de acuerdo con los datos que se han introducido durante la creación de paquetes. El archivo de configuración especifica los nombres del grupo de recursos y el tipo de recurso.
Las secuencias de control son:
Secuencia de inicio: se usa para configurar los recursos e iniciar la aplicación bajo control de RGM.
Secuencia de parada: se usa para detener la aplicación y poner fuera de línea los recursos y grupos de recursos.
Secuencia de eliminación: se utiliza para eliminar los recursos y grupos de recursos creados por la secuencia de inicio.
Estas secuencias de control tienen la misma interfaz y el mismo comportamiento que las secuencias de utilidad que genera SunPlex Agent Builder para agentes no basados en GDS. Las secuencias se colocan en un paquete de Solaris, que se puede reutilizarse en varios clústeres.
El archivo de configuración se puede personalizar para proporcionar los nombres a los grupos de recursos u otros parámetros que suelen darse como entradas del comando scrgadm. Si no se personalizan las secuencias de control, SunPlex Agent Builder proporciona unos valores predeterminados para los parámetros de scrgadm.
Esta sección describe cómo se puede especificar parámetros de entrada para GDS. Para usar y administrar GDS, se usan comandos de administración existentes de Sun Cluster como, por ejemplo, scrgadm y scswitch.
Así, no será necesario introducir los comandos administrativos de nivel inferior que aparecen en esta sección, siempre que las secuencias de control proporcionen unas funciones adecuadas. No obstante, puede especificar comandos administrativos de nivel inferior si necesita tener un mayor control con respecto a los recursos basados en GDS. Estos comandos los ejecutan las secuencias de control.
Conviértase en superusuario o asuma una función similar.
Registre el tipo de recurso SUNW.gds.
# scrgadm -a -t SUNW.gds |
Cree el grupo de recursos que contenga el recurso LogicalHostname y el servicio de recuperación de fallos.
# scrgadm -a -g haapp_rg |
Cree el recurso para LogicalHostname.
# scrgadm -a -L -g haapp_rs -l hhead |
Cree el recurso para el servicio a prueba de fallos.
# scrgadm -a -j haapp_rs -g haapp_rg -t SUNW.gds \ -y Scalable=false -y Start_timeout=120 \ -y Stop_timeout=120 -x Probe_timeout=120 \ -y Port_list="2222/tcp" \ -x Start_command="/export/ha/appctl/start" \ -x Stop_command="/export/ha/appctl/stop" \ -x Probe_command="/export/app/bin/probe" \ -x Child_mon_level=0 -y Network_resources_used=hhead \ -x Failover_enabled=true -x Stop_signal=9 |
Ponga el grupo de recursos haapp_rg en línea.
# scswitch -Z -g haapp_rg |
Conviértase en superusuario o asuma una función similar.
Registre el tipo de recurso SUNW.gds.
# scrgadm -a -t SUNW.gds |
Cree el grupo de recursos para SharedAddress.
# scrgadm -a -g sa_rg |
Cree el recurso SharedAddress en sa_rg.
# scrgadm -a -S -g sa_rg -l hhead |
Cree el grupo de recursos para el servicio escalable.
# scrgadm -a -g app_rg -y Maximum_primaries=2 \ -y Desired_primaries=2 -y RG_dependencies=sa_rg |
Cree el grupo de recursos para el servicio escalable.
# scrgadm -a -j app_rs -g app_rg -t SUNW.gds \ -y Scalable=true -y Start_timeout=120 \ -y Stop_timeout=120 -x Probe_timeout=120 \ -y Port_list="2222/tcp" \ -x Start_command="/export/app/bin/start" \ -x Stop_command="/export/app/bin/stop" \ -x Probe_command="/export/app/bin/probe" \ -x Child_mon_level=0 -y Network_resource_used=hhead \ -x Failover_enabled=true -x Stop_signal=9 |
Ponga en línea el grupo de recursos que contiene los recursos de red.
# scswitch -Z -g sa_rg |
Ponga en línea el grupo de recursos app_rg.
# scswitch -Z -g app_rg |
SunPlex Agent Builder también incorpora una interfaz de línea de comandos que proporciona las mismas funciones que la interfaz gráfica de usuario. Esta interfaz consta de los comandos scdscreate y scdsconfig. Consulte las páginas de comando man de scdscreate (1HA) y scdsconfig(1HA).
Esta sección describe cómo realizar el mismo conjunto de pasos que se muestra en Utilización de SunPlex Agent Builder para crear un servicio que use GDS usando la interfaz de línea de comandos.
Conviértase en superusuario o asuma una función similar.
Cree el servicio.
Para un servicio de recuperación de fallos, utilice:
# scdscreate -g -V NET -T app -d /export/wdir |
Para un servicio escalable, utilice:
# scdscreate -g -s -V NET -T app -d /export/wdir |
El parámetro -d es opcional. Si no lo especifica, el directorio actual se convertirá en el directorio de trabajo.
Configure el servicio.
# scdsconfig -s "/export/app/bin/start" -t "/export/app/bin/stop" \ -m "/export/app/bin/probe" -d /export/wdir |
Puede especificar variables de propiedad. Las variables de propiedad se describen en Variables de propiedades.
Sólo se requiere el comando de inicio start. Todos los demás parámetros son opcionales.
Instale el paquete terminado en todos los nodos del clúster.
# cd /export/wdir/NETapp/pkg # pkgadd -d . NETapp |
Los siguientes archivos los instala pkgadd:
/opt/NETapp /opt/NETapp/README.app /opt/NETapp/man /opt/NETapp/man/man1m /opt/NETapp/man/man1m/removeapp.1m /opt/NETapp/man/man1m/startapp.1m /opt/NETapp/man/man1m/stopapp.1m /opt/NETapp/man/man1m/app_config.1m /opt/NETapp/util /opt/NETapp/util/removeapp /opt/NETapp/util/startapp /opt/NETapp/util/stopapp /opt/NETapp/util/app_config |
Las páginas de comando man y los nombres de secuencias de control se corresponderán con el nombre de la aplicación que se introdujo antes precedido del nombre de la secuencia; por ejemplo startapp.
Para ver las páginas de comando man hay que especificar la ruta a la página. Por ejemplo, para ver la página de comando man de startapp(1M), escriba:
# man -M /opt/NETapp/man startapp |
En un nodo del clúster configure los recursos e inicie la aplicación.
# /opt/NETapp/util/startapp -h nombre_sistema_lógico -p lista_puertos_y_protocolos |
Los argumentos de la secuencia de inicio startapp variarán según el tipo de recurso: a prueba de fallos o escalable. Compruebe la página de comando man personalizada o ejecute la secuencia de inicio startapp sin argumentos para obtener una instrucción de sintaxis.
# /opt/NETapp/util/startapp Se deben especificar los nombres de LogicalHostname o SharedAddress. Para servicios a prueba de fallos: Sintaxis: startapp -h nombre_sistema_lógico -p lista_puertos_y_protocolos [-n grupo_IPMP/lista_adaptadores] Para servicios escalables: Sintaxis: startapp -h nombre_dirección_compartida -p lista_puertos_y_protocolos [-l norma_de_equilibrio_de_cargas] [-n grupo_IPMP/lista_adaptadores] [-w pesos_de_equilibrio_de_cargas] |