Clusterizando aplicaciones con Hermes


Montaremos un sistema para poder redireccionar una aplicación a un destino u otro dependiendo de los parámetros de un archivo xml.

Tenemos una aplicación que está en constantemente en evolución y crecimiento. Este implica numerosas actualizaciones y para que estas sean trasparentes al usuario se ha montado este sistema.

Pasos previos
El icono de acceso a la aplicación Hermes se distribuirá mediante un script de inicio de sesión a nivel de usuario por medio de Active Directory.

Se crearán dos recursos compartidos. En este ejemplo, usaremos como repositorio NetApp y daremos los permisos de acceso a los grupos de usuarios pertinentes.

Archivo de parámetros

Creamos un archivo xml donde residirán los parámetros que formarán el path destino de la aplicación, el xml será:

<?xml version="1.0" encoding="UTF-8"?>
<parametros>
 <!--Nombre o dirección IP del servidor que contiene el ejecutable -->
 <servidor>SERVIDOR</servidor>
 <!--Path del recurso compartido sin servidor, ni contrabarra inicial ni final-->
 <!--La variable = nodo activo se representa con $$-->
 <recursoCompartido>Aplicacion_nodo$$</recursoCompartido>
 <!--Nombre del ejecutable -->
 <nombreEjecutable>ElFosoDelSarlacc.exe</nombreEjecutable>
 <!--Nodo Activo, indicar el nodo activo con la letra del nodo (A, B) -->
 <nodoActivo>A</nodoActivo>
</parametros> 



Aplicación Hermes
La aplicación está realizada con MS Visual Basic 2010.

Al ejecutar Hermes leerá el archivo xml de parámetros. Este archivo hemos de ubicarlo den el mismo directorio que el propio ejecutable.

Una vez finalizada la lectura de los parámetros montara el path de destino y ejecutará la aplicación destino cerrándose Hemes.

El código de la aplicación es:

Imports System.Xml
Imports System
Imports System.Diagnostics
Imports System.Threading

Module Hermes
    Sub Main()
        Console.Title = "Hermes, clusterizando aplicaciones"

        ejecutarAplicacion()

    End Sub

    Public Sub ejecutarAplicacion()
        Dim path As New ProcessStartInfo(lecturaPath().ToString)
        Dim ejecutar As New Process
        Try
            ejecutar.StartInfo = path
            ejecutar.Start()
        Catch ex As Exception
            Console.WriteLine(ex.ToString())
        End Try
    End Sub

    Private Function lecturaPath()
        Try
            Dim m_xmld As XmlDocument
            Dim m_nodelist As XmlNodeList
            Dim m_node As XmlNode            
            Dim servidor As String, recursoCompartido As String, nombreEjecutable As String, nodoActivo As String
            Dim path As String

            'Crear XML Ddocument
            m_xmld = New XmlDocument()
            'Cargar el fichero XML
            m_xmld.Load(".\HermesParametros.xml")
            'Lectura de parametros del XML
            ' SERVIDOR
            m_nodelist = m_xmld.SelectNodes("/parametros/servidor")
            For Each m_node In m_nodelist
                servidor = m_node.ChildNodes.Item(0).InnerText
            Next
            ' RECURSO COMPARTIDO
            m_nodelist = m_xmld.SelectNodes("/parametros/recursoCompartido")
            For Each m_node In m_nodelist
                recursoCompartido = m_node.ChildNodes.Item(0).InnerText
            Next
            ' EJECUTABLE
            m_nodelist = m_xmld.SelectNodes("/parametros/nombreEjecutable")
            For Each m_node In m_nodelist
                nombreEjecutable = m_node.ChildNodes.Item(0).InnerText
            Next
            ' NODO ACTIVO
            m_nodelist = m_xmld.SelectNodes("/parametros/nodoActivo")
            For Each m_node In m_nodelist
                nodoActivo = m_node.ChildNodes.Item(0).InnerText
            Next

            'Montar el path
            path = "\\" & servidor & "\" & recursoCompartido & "\" & nombreEjecutable
            'Sustituir la variable $$ por el valor del nodoActivo
            path = path.Replace("$$", nodoActivo.ToString)

            Return path

        Catch ex As Exception
            Console.Write(ex.ToString())
        End Try
    End Function




No hay comentarios:

Publicar un comentario