Esta sección explica cómo utilizar Agent Builder, incluidas las tareas previas, y cómo usarlo después de haber generado el código del tipo de recurso.
Antes de usar Agent Builder debe determinar si la aplicación cumple los criterios para tener una alta disponibilidad y escalabilidad. Agent Builder no puede realizar este análisis, que se basa únicamente en las características de tiempo de ejecución de la aplicación. En Análisis de la validez de la aplicación puede obtener más información sobre este tema.
Es posible que Agent Builder no pueda crear siempre un tipo de recurso completo para una aplicación, aunque en la mayoría de los casos facilitará al menos una solución parcial. Por ejemplo, algunas aplicaciones más complejas pueden requerir un código adicional que Agent Builder no genera de forma predeterminada, como el código para agregar comprobaciones de validación de propiedades adicionales o para ajustar parámetros que Agent Builder no muestra. En esos casos, es necesario realizar cambios en el código fuente generado o el archivo RTR. Agent Builder está diseñado precisamente para permitir esta flexibilidad.
Agent Builder sitúa comentarios en determinados puntos del código fuente generado para que se pueda añadir código del tipo de recurso concreto. Después de hacer cambios en el código fuente, se puede usar el makefile generado por Agent Builder para recompilar el código fuente y volver a generar el paquete del tipo de recurso.
Aunque se escriba todo el código del tipo de recurso sin utilizar ningún código generado por Agent Builder, se puede aún aprovechar el makefile y la estructura que facilita Agent Builder para crear el paquete de Solaris para ese tipo de recurso.
Agent Builder no requiere ninguna instalación especial. Agent Builder se incluye en el paquete SUNWscdev que se instala de forma predeterminada con la instalación estándar del software Sun Cluster (en Sun Cluster Software Installation Guide for Solaris OS encontrará más información). Antes de utilizar Agent Builder, compruebe la información siguiente:
Java se incluye en la variable $PATH. Agent Builder depende de Java (Java Development Kit versión 1.3.1 o superior). Si Java no está en $PATH, scdsbuilder retorna con un mensaje de error.
Si ha instalado el grupo de software “Sistema de soporte del desarrollador” de Solaris 8 o superior.
El compilador cc se incluye en la variable $PATH. Agent Builder utiliza la primera aparición de cc en la variable $PATH para identificar el compilador con el que generará código binario de C para el tipo de recurso. Si cc no está incluido en $PATH, Agent Builder inhabilita la opción para generar código en C (consulte Uso de la pantalla de creación.
Con Agent Builder puede usar un compilador diferente del compilador cc estándar. Para ello debe crear un vínculo simbólico en $PATH de cc a un compilador diferente, como gcc, o bien cambiar la especificación del compilador en el makefile (actualmente, CC=cc) a la ruta completa de un compilador diferente. Por ejemplo, en el makefile que genera Agent Builder, cambie CC=cc por CC=nombre_ruta/gcc. En este caso, no es posible ejecutar directamente Agent Builder. Utilice las órdenes make y make pkg para generar un código de servicio de datos y un paquete.
Para ejecutar Agent Builder escriba la orden siguiente:
% /usr/cluster/bin/scdsbuilder |
Aparece la pantalla inicial de Sun Builder, como muestra la figura siguiente.
Es posible acceder a Agent Builder a través de una interfaz de línea de órdenes (consulte Utilización de la versión de línea de órdenes de Agent Builder) si la versión de la GUI no estuviera accesible.
Agent Builder proporciona dos pantallas que sirven de guía del proceso de creación de un nuevo tipo de recurso:
Creación: en esta pantalla se suministra información básica sobre el tipo de recurso que se va a crear, como el nombre y el directorio de trabajo (es decir, el directorio en el que se crea y configura la plantilla del tipo de recurso) de los archivos generados. También se indica el tipo de recurso que se va a crear (escalable o a prueba de fallos), si la aplicación básica va a estar habilitada para la red (es decir, si utiliza la red para comunicarse con los clientes) y el tipo de código (C, ksh o GDS) que se va a generar. Para obtener información sobre GDS (servicio genérico de datos), consulte el Capítulo 10. Debe introducir la información de esta pantalla y seleccionar Crear para generar la salida correspondiente, antes de poder mostrar la pantalla de configuración.
Configuración: en esta pantalla se le pide que proporcione una orden para iniciar la aplicación. También puede proporcionar órdenes para detener y analizar la aplicación. Si no especifica estas órdenes, la salida generada utiliza señales para detener la aplicación y proporciona un mecanismo de análisis predeterminado (si desea ver la descripción de la orden de análisis, consulte Utilización de la pantalla de configuración). Esta pantalla también permite cambiar los valores de tiempo de espera para las tres siguientes órdenes.
Si ejecuta Agent Builder desde el directorio de trabajo de un tipo de recurso, Agent Builder inicializa las pantallas de creación y configuración para incluir los valores del tipo de recurso.
Consulte Desplazamientos por Agent Builder si tiene alguna duda sobre cómo utilizar cualquiera de los botones u órdenes de menú en las pantallas de Agent Builder.
El primer paso para crear un tipo de recurso consiste en cumplimentar la pantalla de creación que aparece al ejecutar Agent Builder. La figura siguiente muestra la pantalla de creación después de haber introducido la información en los campos.
La pantalla de creación contiene los campos, botones de selección y casillas de verificación siguientes:
Nombre proveedor: el nombre para identificar el proveedor del tipo de recurso. Generalmente, se especifica el símbolo bursátil del fabricante, pero se puede utilizar cualquier nombre que lo identifique de forma única. Utilice únicamente caracteres alfanuméricos.
Nombre de aplicación: el nombre del tipo de recurso. Utilice únicamente caracteres alfanuméricos.
El nombre de la aplicación y del fabricante, juntos, componen el nombre completo del tipo de recurso. El nombre completo no puede superar los nueve caracteres.
Directorio de trabajo: el directorio en el cual Agent Builder crea una estructura de directorios para acoger todos los archivos que se creen para el tipo de recurso de destino. Sólo se puede crear un tipo de recurso por directorio de trabajo. Agent Builder indica en este campo la ruta al directorio desde el que se ha ejecutado Agent Builder, aunque se puede escribir un nombre diferente o utilizar el botón Examinar para buscar un directorio diferente.
En el directorio de trabajo, Agent Builder crea un subdirectorio con el nombre del tipo de recurso. Por ejemplo, si SUNW es el nombre del fabricante y ftp el de la aplicación, Agent Builder llamará al subdirectorio SUNWftp.
Agent Builder coloca todos los directorios y archivos del tipo de recurso de destino en este subdirectorio (consulte Estructura de directorios).
Escalable o A prueba de fallos: especifique si el tipo de recurso de destino va a ser a prueba de fallos o escalable.
Identificación de red: especifique si la aplicación base detecta la red, es decir, si usa ésta para comunicarse con sus clientes. Marque la casilla para especificar si se debe detectar la red; déjela sin marcar para que la red no se debe tener en cuenta. El código del shell Korn requiere que la aplicación esté habilitada para red. Por eso, Agent Builder marca la casilla y la ensombrece si usted selecciona los botones ksh o GDS.
C, ksh: especifica el lenguaje del código fuente generado. Aunque estas opciones se excluyen mutuamente, con Agent Builder puede crear un tipo de recurso con código generado con ksh y reutilizar la misma información para crear código generado con C (consulte Clonación de un tipo de recurso).
GDS: especifica que este servicio es un servicio genérico de datos. Consulte el Capítulo 10 para obtener información sobre la creación y configuración de un servicio genérico de datos.
Si el compilador cc no está en $PATH, Agent Builder oscurece el botón de la opción de C y selecciona el botón ksh. Para especificar un compilador diferente, consulte la nota al final de Instalación y configuración de Agent Builder.
Después de haber introducido la información solicitada, haga clic en el botón Crear. El registro de salida de la parte inferior de la pantalla muestra las acciones que está realizando Agent Builder. Puede utilizar la orden Guardar registro de salida del menú Editar para guardar la información en el registro.
Al finalizar, Agent Builder muestra un mensaje de realización satisfactoria o de advertencia que indica que no ha sido posible completar esta operación satisfactoriamente y que se debería comprobar el registro de salida para ver los detalles.
Si Agent Builder concluye con éxito, haga clic en el botón Siguiente para que aparezca la pantalla de configuración que permitirá terminar de generar el tipo de recurso.
Aunque la generación de un tipo de recurso completo es un proceso de dos pasos, es posible salir de Agent Builder después de terminar el primer paso (creación) sin perder la información introducida ni el trabajo que ha realizado Agent Builder (consulte Reutilización del trabajo terminado).
La pantalla de configuración (figura siguiente) aparece después de que Agent Builder haya terminado de crear el tipo de recurso y de que se haya seleccionado el botón Siguiente en la pantalla de creación. No se puede acceder a la pantalla de configuración sin haber creado el tipo de recurso con anterioridad.
La pantalla de configuración contiene los campos siguientes:
Orden de inicio: la línea de órdenes completa que se puede pasar a cualquier shell de UNIX para iniciar la aplicación básica. Es necesario especificar esta orden. Se puede escribir la orden en el campo suministrado o utilizar el botón Examinar para localizar un archivo que contenga la orden para iniciar la aplicación.
La línea de órdenes completa debe incluir todo lo necesario para iniciar la aplicación, como nombres de sistema, números de puerto, una ruta a los archivos de configuración, etc. Si la aplicación requiere que se especifique un nombre de sistema en la línea de órdenes, se puede usar la variable $hostnames que define Agent Builder (consulte Utilización de la variable $hostnames de Agent Builder).
No ponga la orden entre comillas dobles (““).
Si la aplicación básica tiene muchos árboles de procesos independientes, cada uno de los cuales se inicia con su propia etiqueta, bajo el control de PMF, no será posible especificar una sola orden. En su lugar, se debe crear un archivo de texto con órdenes individuales para iniciar cada árbol de procesos y especificar la ruta a este archivo en el campo de texto Orden de inicio. Consulte Creación de tipos de recursos con varios árboles de proceso independientes, donde se enumeran algunas características especiales, necesarias para que el archivo funcione correctamente.
Orden de parada: la línea de órdenes completa que se puede pasar a cualquier shell de UNIX para detener la aplicación básica. Puede escribir la orden en el campo suministrado o utilizar el botón Examinar para localizar un archivo que contenga la orden para detener la aplicación. Si la aplicación requiere que se especifique un nombre de sistema en la línea de órdenes, se puede usar la variable $hostnames que define Agent Builder (consulte Utilización de la variable $hostnames de Agent Builder).
Esta orden es opcional. Si no se especifica una orden de parada, el código generado emplea señales (en el método Stop) para detener la aplicación, como se muestra a continuación.
El método Stop envía SIGTERM para detener la aplicación y espera el 80% del valor de tiempo de espera excedido para que la aplicación salga.
Si la señal SIGTERM no resulta satisfactoria, el método Stop envía SIGKILL para detener la aplicación y espera el 15% del tiempo de espera excedido para que la aplicación salga.
Si SIGKILL no es satisfactorio, el método Stop sale de forma no satisfactoria (el 5% restante del valor de tiempo de espera se considera una carga adicional indirecta).
Asegúrese de que la orden de parada no retorne antes de que la aplicación se haya detenido por completo.
Orden de sonda: una orden que se puede ejecutar periódicamente para comprobar el estado de la aplicación y devolver un estado de salida adecuado entre 0 (éxito) y 100 (fallo total). Esta orden es opcional. Puede escribir la ruta completa a la orden o utilizar el botón Examinar para localizar un archivo que contenga las órdenes para analizar la aplicación.
Generalmente, se especifica un cliente simple de la aplicación básica. Si no se especifica una orden de sonda, el código generado se limita a conectarse y desconectarse del puerto que utiliza el recurso y, si funciona, declara que la aplicación funciona correctamente. Las órdenes de sonda sólo se pueden utilizar con aplicaciones habilitadas para la red. Agent Builder siempre genera una orden de sonda, pero lo desactiva para las aplicaciones que no estén habilitadas para la red.
Si la aplicación requiere que se especifique un nombre de sistema en la línea de órdenes de sonda, puede usar la variable $hostnames que define Agent Builder (consulte Utilización de la variable $hostnames de Agent Builder).
Tiempo de espera: (para cada orden) un valor de tiempo de espera (en segundos) para cada orden. Se puede especificar un valor nuevo o aceptar el predeterminado de Agent Builder (300 segundos para inicio y parada y 30 para el análisis).
Para muchas aplicaciones, especialmente las habilitadas para red, el nombre del sistema en el que la aplicación recibe y sirve las solicitudes del cliente se debe pasar a la aplicación en la línea de órdenes. Por tanto, en muchos casos, el nombre del sistema es un parámetro que se debe especificar para iniciar, detener y analizar órdenes del tipo de recurso de destino (en la pantalla de configuración). Sin embargo, el nombre del sistema en el que la aplicación recibe es específica del clúster; se determina cuando el recurso se ejecuta en un clúster y no se puede determinar cuando Agent Builder genera el código del tipo de recurso.
Para solucionar este problema, Agent Builder proporciona la variable $hostnames que se puede especificar en la línea de órdenes de las órdenes de inicio, parada y análisis. La variable $hostnames se especifica de la misma forma como un nombre de sistema real, por ejemplo:
/opt/network_aware/echo_server -p port_no -l $hostnames |
Cuando un recurso del tipo de recurso de destino se ejecuta en un clúster, los nombres de sistema LogicalHostname o SharedAddress configurados para ese recurso (en la propiedad de recurso Network_resources_used) se reemplazan por el valor de la variable $hostnames.
Si configura la propiedad Network_resources_used con múltiples nombres de sistemas, la variable $hostnames los incluye todos, separados por comas.
Agent Builder puede crear tipos de recursos para aplicaciones con varios árboles de procesos considerados independientes ya que PMF los supervisa e inicia individualmente. PMF inicia cada árbol de procesos con su propia etiqueta.
Agent Builder permite crear tipos de recursos con varios árboles de procesos independientes sólo cuando el código fuente generado que se especifique sea C. No es posible utilizar Agent Builder para crear estos tipos de recursos para ksh ni GDS; en estos casos, se debe escribir el código manualmente.
En el caso de una aplicación básica con varios árboles de procesos independientes, no se puede especificar una única línea de órdenes para iniciar la aplicación. En su lugar, es necesario crear un archivo de texto, especificando en cada línea la ruta completa a una orden para iniciar cada uno de los árboles de procesos de la aplicación. Este archivo no debe contener líneas en blanco y se ha de especificar en el campo de texto de la orden de inicio, en la pantalla de configuración.
Al asegurarse de que este archivo no disponga de permisos de ejecución Agent Builder podrá distinguirlo y así será posible iniciar múltiples árboles de procesos desde una secuencia de ejecución simple que contenga varias órdenes. Si se dota al archivo de texto de permisos de ejecución, los recursos se ejecutarían sin problemas ni errores en un clúster, pero todas las órdenes se iniciarían bajo una única etiqueta de PMF, lo que impediría que éste pudiera supervisar y reiniciar individualmente los árboles de procesos.
Agent Builder permite aprovechar el trabajo finalizado de varias formas.
Se puede clonar un tipo de recurso creado con Agent Builder.
Se puede editar el código fuente que genera Agent Builder y recompilarlo para crear un paquete nuevo.
Siga este procedimiento para clonar un tipo de recurso, generado por Agent Builder.
Cargue un tipo de recurso en Agent Builder; puede hacerlo de dos formas:
Vaya al directorio de trabajo en la pantalla de creación.
Debe usar el botón Examinar para seleccionar un directorio; no basta con escribir el nombre del nuevo directorio. Una vez seleccionado un directorio, Agent Builder vuelve a habilitar el botón Crear.
Realice los cambios.
Este procedimiento se puede utilizar para cambiar el tipo de código generado para el tipo de recurso. Por ejemplo, si inicialmente ha creado una versión en ksh de un tipo de recurso, pero más tarde se da cuenta de que necesita una versión en C, puede cargar el tipo de recurso en ksh, cambiar el lenguaje de salida a C y hacer que Agent Builder cree una versión en C del tipo de recurso.
Cree el tipo de recurso clonado.
Seleccione Crear para crear el tipo de recurso. Seleccione Siguiente para que aparezca la pantalla de configuración. Seleccione Configurar para configurar el tipo de recurso y Cancelar para terminar.
Para simplificar el proceso de creación de un tipo de recurso, Agent Builder limita el número de entradas, lo que reduce el alcance del tipo de recurso generado. Por tanto, para poder agregar funciones más avanzadas, como las comprobaciones de validación para las propiedades adicionales, o para ajustar parámetros que no muestra Agent Builder, es necesario modificar el código fuente generado o el archivo RTR.
Los archivos de origen están en el directorio directorio_instalación/nombre_tr/src. Agent Builder integra comentarios en el código fuente en los lugares donde se puede agregar código que son del tipo siguiente (para el código C):
/* Código agregado por el usuario -- INICIO vvvvvvvvvvvvvvv */ /* Código agregado por el usuario -- FIN ^^^^^^^^^^^^^^^ */ |
Estos comentarios son iguales en el código del shell Korn, salvo por el hecho de que utilizan el símbolo de la libra esterlina (#) para iniciar la línea de comentario.
Por ejemplo, nombre_tr.h declara todas las rutinas de utilidades que emplean los diferentes programas. Al final de la lista de declaraciones se incluyen comentarios que permiten declarar las rutinas adicionales agregadas a cualquiera de los códigos.
Agent Builder genera también el makefile en el directorio directorio_instalación/nombre_tr/src con los destinos correspondientes. Use las órdenes make para recompilar el codigo fuente y make pkg para regenerar el paquete del tipo de recurso.
El archivo RTR, que se encuentra en el directorio directorio_instalación/nombre_tr/etc, se puede editar con un editor de texto estándar (consulte Establecimiento del recurso y las propiedades del tipo de recurso para obtener más información sobre el archivo RTR y el Apéndice A para obtener información sobre las propiedades).
La versión de línea de órdenes de Agent Builder sigue el mismo proceso en dos pasos que la versión de interfaz gráfica de usuario, con la diferencia de que en lugar de introducir la información en la interfaz gráfica de usuarios, los parámetros se pasan a las órdenes scdscreate(1HA) y scdsconfig(1HA).
Siga estos pasos para utilizar la versión de línea de órdenes de Agent Builder:
Utilice scdscreate para crear una plantilla del tipo de recurso de Sun Cluster para hacer que una aplicación tenga una alta disponibilidad (sea HA) o escalabilidad.
Utilice scdsconfig para configurar la plantilla del tipo de recurso creada con scdscreate.
Cambie los directorios al subdirectorio pkg del directorio de trabajo.
Utilice la orden pkgadd(1M) para instalar los paquetes creados con scdscreate.
Si lo desea, edite el código fuente generado.
Ejecute la secuencia de inicio.