Mostrando entradas con la etiqueta cluster. Mostrar todas las entradas
Mostrando entradas con la etiqueta cluster. Mostrar todas las entradas

miércoles, 17 de diciembre de 2014

Componente Carbon UI para gestionar la clusterización (III) Final

Pues como pudieron ver en la entrada anterior, se mostró la visualización del plugin desarrollado para gestionar de manera gráfica la configuración necesaria para clusterizar las herramientas de la Suite de WSO2, hasta el momento se encuentra funcional solo que se está implementando las respectivas validaciones para no permitir que se introduzcan errores en los parámetros.

Ahora les daré una breve descripción de como es que se desarrollan los componentes visuales (Carbon UI) para la Suite de WSO2.Y cualquier apoyo que nos quieran brindar o duda que tengan nos pueden dejar sus comentarios.

Para el desarrollo de un Carbon UI Bundle Project es necesario que nos descarguemos el WSO2 Developer Studio, que no es más que un plugin desarrollado por WSO2 y que está montado en Eclipse, en este link se puede descargar el plugin por separado separado o un Eclipse en este caso la versión Kepler que ya trae instalado el plugins Developer Studio lo cual es lo que recomiendo para evitar algun problema de configuración que tengamos.

Para entender como se desarrolla un carbon UI Bundle pueden acceder a la documentación online del Developer Studio.

Para comprender como es que funciona el core de Carbon y como se puede personalizar les sugiero que sigan estos enlaces en los que se da una explicación bien detallada de como es que funciona y como está compuesto:
Una vez descargada la herramienta, podemos ejecutarla y visualizamos el Dashboard del Developer Studio como la imagen que verán a continuación:

Paso 1

 Damos click en la opción Carbon UI Bundle Project para poder crear un UI Bundle y seleccionamos la primera opción porque vamos a desarrollar uno desde cero: 

Paso 2
Después de darle siguiente en la captura anterior, nos encontraríamos con la siguiente pantalla, en la que definimos cual va a ser el nombre de nuestro proyecto, si deseamos crear una clase Activator que va a ser ejecutada una vez que se cargue nuestro bundle y se definen otros atributos necesarios para el mismo, además de definir el path donde se van a desplegar nuestras vistas:

Paso 3
Una vez que hayamos completado el paso anterior se especifica en quñe grupo y qué id va a tener nuestro bundle en maven:

Paso 4
Le damos Finish y nos quedaría un proyecto en nuestro workspace con una estructura similar a esta:

Paso 5
Como verán tenemos creada nuesta clase Activator en la que podemos definir que hacer en el momento en que se cargue nuestro bundle esto se define en el metodo:

    public void start(BundleContext bundleContext) throws Exception {
        Activator.context = bundleContext;
        //TODO Aquí podemos poner nuestra implementación.
    }

También tenemos creada nuesta carpeta clustermanager dentro de la carpeta web en la que estarán contenidas todas nuestras vistas, css, imágenes y js. 

En la carpeta META-INF encontrarán el fichero MANIFEST.MF y component.xml, en el primero se especifica todas las características relacionadas con el bundle y en el segundo es donde se le configura la región en la que va a estar situado el plugins en el menú de las herramientas así como cuales son las páginas de inicio del mismo yel recurso donde va a estar la internacionalización quedando este ejemplo como se muestra a continuación:

<?xml version="1.0" encoding="UTF-8" ?>
<component xmlns="http://products.wso2.org/carbon">
<menus>
        <menu>
            <id>clustermanager_menu</id>
            <i18n-key>clustermanager.managername</i18n-key>
            <i18n-bundle>com.wso2.clustermanager.mgt.ui.i18n.Resources</i18n-bundle>
            <parent-menu>configure_menu</parent-menu>
            <link>#</link>
            <region>region1</region>
            <order>20</order>
            <style-class>manage</style-class>
            <icon>../clustermanager/images/applications.gif</icon>
            <require-permission>/permission/protected/manage</require-permission>
        </menu>
        <menu>
            <id>clustermanager_configuration</id>
            <i18n-key>clustermanager.configuration</i18n-key>
            <i18n-bundle>com.wso2.clustermanager.mgt.ui.i18n.Resources</i18n-bundle>
            <parent-menu>clustermanager_menu</parent-menu>
            <link>../clustermanager/index.jsp</link>
            <region>region1</region>
            <order>14</order>
            <style-class>manage</style-class>
            <icon>../clustermanager/images/list.gif</icon>
            <require-permission>/permission/protected/manage</require-permission> 
        </menu>
    </menus>
</component>

La tendencia según la implementación que se ha visto y según lo que se propone por los desarrolladores de las herramientas es que en el plugin esté bien separada la interfaz de la lógica de negocio y que la comunicación entre la misma sea por lo general mediante el consumo de Servicios Web, pero en nuestro caso como no existe mucha más lógica que allá que leer y escribir un fichero XML por lo tanto no se hizo necesario esta separación, no obstante si usted cuando lo esté leyendo cree que no está totalmente correcto puede dejar su impresión y siempre serán bien recibidos sus comentarios :-).

Bueno vayamos al grano del asunto.

En nuestra página index.jsp que será la que se visualizará una vez que se haya dado click en el menú de la herramienta es donde se escribe todo el código html para lograr visualizar la información que se desea recoger y mostrar de la configuración que se encuentra en la sección clustering del fichero axis2.xml, para ello es necesario que respetemos las clases CSS que usan las herramientas para lograr mantener el estilo de la vista.

Se creó una clase nombrada Axis2HandlerXML.java que es la encargada de escribir y leer del fichero axis2.xml mediante el uso del DOM y SAX que es bastante sencilla debido al negocio que tiene que resolver.

La información que se recoge en la vista es enviada a un JSP que hace función de Servlet la que interactúa directamente con la clase Axis2HandlerXML.java para almacenar toda la información recogida de la vista y escribirla directamente en el fichero axis2.xml dentro de la sección de clustering, automáticamente se actualiza la vista.

Para evitar que cualquier usuario pueda realizar un cambio en la configuración de los servidores se utiliza el tag <require-permission/> en el fichero component.xml dentro del directorio META-INF, en nuestro caso estos son los permisos que usamos: <require-permission>/permission/protected/manage</require-permission>

Una vez que hayamos realizado todos los cambios en la configuración debemos reiniciar el servidor para que los mismos se hagan efectivos y lograr disfrutar de las ventajas y mejoras que nos brinda la clusterización.

Espero que les haya interesado el desarrollo de este plugins, como ven se puediera automatizar el proceso de configuración de muchas funcionalidades de las herramientas para evitar que introduzcamos errores en los mismos y para facilitar el proceso que en no pocas ocasiones se torna algo engorroso.

Nos vemos pronto ;-)



lunes, 25 de agosto de 2014

Componente Carbon UI para gestionar la clusterización (II)

Pues bien como les comenté en la entrada anterior, aquí les dejaré unas capturas de pantalla del componente y una breve descripción de las secciones en las que fui dividiendo el mismo para lograr una mayor usabilidad en el momento de interactuar con el plugin.

Esta es una vista general del plugin:


Para mejorar la usabilidad como les comenté anteriormente fui dividiendo la interfaz por regiones que se corresponden con las regiones del anterior blog. A continuación se las iré mostrando.

Para acceder al mismo, se encuentra ubicado en esta región del menú:


Para activar el clúster y definir la clase que vamos a utilizar para su gestión sería en el siguiente captura:

Para configurarle algunos parámetros que son necesarios a tener presentes en la configuración sería en esta sección:


Para la configuración de propiedades necesarias en esta sección:


Y por último para definir si el host va a ser el administrador del grupo y los grupos que van a intervenir en el clúster diseñe la última sección:


Espero que hasta el momento les haya gustado la interfaz propuesta para el plugin Carbon UI.

Componente Carbon UI para gestionar la clusterización (I)


Como plantea el título de la entrada, creo que hoy en día es muy poco probable que vayamos a usar la Suite de WSO2 sin que clustericemos todas o partes de las herramientas que conformaran nuestra Arquitectura de Infraestructura.

Las herramientas de la plataforma WSO2 realizan el proceso de configuración de la clusterización a través de un fichero en formato XML específicamente en el fichero axis2.xml que se encuentra en WSO2_HOME/repository/conf/axis2/axis2.xml, donde están predefinidos los parámetros que activan su funcionabilidad; sin embargo, la suite no ofrece facilidades para la configuración de este fichero de forma gráfica, el que si bien posee una estructura sugerente, sólo puede actualizarse de forma manual. Se requiere conocimientos avanzados en ficheros con formato XML y por supuesto de clustering.
En ese archivo existen una serie de etiquetas XML correspondientes a los servicios web, la seguridad, los puertos que utilizará la herramienta y los protocolos que estarán activados.

En la sección de configuración del clúster en el fichero axi2.xml, consta de cuatro partes fundamentales: 

Nodo Administrador: Es la que se encarga de la funcionalidad de gestión de los nodos que formarán parte del clúster.


Grupo Administrador: Es la parte que se encarga de administrar cada grupo que es gestionado por el clúster.

Miembros: Es la parte encargada de especificar los miembros estáticos o conocidos en clúster, debiendo especificarse el nombre de host y el puerto principal de estos miembros. 

Agente de Clusterización: Esta parte es la responsable de inicializar todas las funciones relacionadas con el clúster y de los nodos miembros que formarán parte del mismo. 

Para encontrar una mayor descripción de las elementos que componen la configuración de la clusterización de la Suite pueden revisar este enlace Clustering.

Como pueden ver son muchos parámetros a tener en cuenta en el momento de poner en funcionamiento varias herramientas clusterizadas, por lo que me di a la tarea de implementar un plugins Carbon UI para facilitar este proceso, quitándole la responsabilidad al usuario de cometer posibles errores de configuración si se editara de manera manual el fichero de configuración.

En la siguiente entrada verán la propueta de diseño gráfico de la solución.