Volver

Biztalk Server 2004: Usar Múltiples Hosts

Por Hernaldo González C. Ingeniero de Software
http://darknromhacking.com
hernaldog@gmail.com
Traducido desde http://www.microsoft.com/belux/msdn/nl/community/columns/flion/biztalk_multiplehosts.mspx


Francois Lion
EZOS
(*Nota: me traté de comunicar con él pero no obtuve respuesta)

Este documento aplica a:

  • Microsoft Visual Studio .NET 2003
  • Microsoft BizTalk Server 2004

  • Resumen:

    En un ambiente Microsoft BizTalk Server 2004 de producción, puede ser interesante aislar las aplicaciones unas de otras. Eso permite a los administradores aplicar una mantención a una aplicación sin afectar al resto de las otras aplicaciones que corren en el mismo servidor. Pero aislar una aplicación solo puede ser hecha tomando en cuanta los send handlers.

    Bajar:

  • EnlistOrch.zip


  • Creación de una Instancia Host

    Par crear una nueva instancia host debes ir a BizTalk Server Administration MMC console.

       1. Botón derecho sobre el nodo “Hosts” y luego clic sobre "New / Host"

       2. Completa la caja de diálogo.



       3. Botón derecho sobre el host recién creado y escoge "New / Instance"

       4. Seleciona el Servidor BizTalk en la ventana de diálogo y completa los datos de la cuenta de credenciales:



    Ahora tu nueva instancia Host está creada. Para aislar una aplicación deployada en esta nueva instancia necesitamos registrar los receive handlers usados por esta aplicación.
    Para esto también usamos la BizTalk Server Administration MMC console.

       5. Expande el nodo "Adapters".

       6. Expande un nodo del adaptador usado por tu aplicación (por ejemplo File)

       7. Botón derecho en "Receive Handlers" luego selecciona "New / Receive Handler"

       8. En el asistente, haz clic sobre "Next" luego selecciona el nuevo Host en el combobox y haz clic sobre "next":



       9. Dependiendo del adaptador que estés configurando, completa las propiedades específicas para ese adaptador.

       10. El nuevo receive handler para el adaptador debería aparecer:



       11. Realiza desde el paso 5 para configurar cada receive adapter usado en tu aplicación deployada en esta instancia.

       Ahora que esta todo listo, podemos iniciar nuestra instancia.

       12. Selecciona la nueva instancia en el nodo "Host", botón derecho sobre ella y selecciona "Start".



       13. Ahora podemos ver que hay 2 instancias de servicios BizTalk en la sección "services" de la MMC console:



        Ahora todo esta andando excepto los send handlers. Desafortunadamente no se puede hacer lo mismo con estos adaptadores.


    El Problema con los Send Handler

    Distinto a los receive handlers que pueden ser atachados a múltiples host instances, los Send handlers solo pueden ser atachados a una host instance. Esto puede ser por un tema de mantención.
    Ejemplo:
    Consideremos 2 aplicaciones appA y appB corriendo respectivamente sobre 2 host instances, InstA y InstB. Los Send handlers son atachados a InstA. Si queremos detener InstB por razones de mantenimiento, no tendremos problemas ya que InstA aun está disponible para enviar mensajes a través de los send handlers ya que ellos están atachados a este. Por el contrario, si paramos InstA, la AppB no podrá enviar mensajes. Los mensajes serán bloqueados en el Message Box hasta que se reinicie InstA. ¡La AppA y AppB no están bien aisladas!


    Solución del Problema

    Para abordar el tema planteado arriba, es interesante tener al menos 2 host instances de BizTalk: Una sin ninguna aplicación deployada y que solo corra send handlers y otra para cada aplicación que necesites para así aislarlas unas de otras:


    Como se ve, puedes detener AppA o AppB sin afectar a las otras aplicaciones.


    Impactos del Deployment

    Con Visual Studio y BizTalk Explorer

  • Orquestaciones: la host instance puede ser especificadas en la pestaña "host" de la ventana "Port Binding Properties":

  • Receive ports: la host instance puede ser especificada en la ventana "Receive Location Properties" con la propiedad "Receive handler":




    Deployment con Linea de Comandos (con BTSDeploy y WMI Script)

  • BTSDeploy: esta herramienta te permite deployar assemblies, crear y enlazar puertos basados en un archivo XML. Para orquestaciones, la host instance usada se especifica en el Tag de dicho XML. Este elemento está dentro de <Bindinginfo><ModuleRefCollection><ModuleRef><Services><Service>:

    <BindingInfo xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      Assembly="Microsoft.BizTalk.Deployment, Version=3.0.1.0, Culture=neutral, 
      PublicKeyToken=31bf3856ad364e35" Version="3.0.1.0" BindingStatus="FullyBound" 
      BoundEndpoints="33" TotalEndpoints="33">
        <ModuleRefCollection>
          <ModuleRef … >
            <Services>
              <Service Name="SSBL.OMEGA.PRAMMain.PRAMMainOrchestration">
                <Ports>
    
                  <Port … > </Port>
                </Ports>
                <Roles /> 
                <Host Name="BizTalkServerApplication" NTGroupName="BizTalk Application Users" 
                  Type="1" /> 
              </Service>
    
            </Services>
          </ModuleRef>
          …
        </ModuleRefCollection>
    
    (*)Archivo Binding de ejemplo.

    Para los Receive ports, la host instance usada es especificada en la propiedad "Name" del elemento <ReceiveHandler>. Este elemento está dentro de <Bindinginfo><ReceivePortCollection><ReceiveLocations><ReceiveLocation>:
    <BindingInfo ...>
    
      <ModuleRefCollection>
        ...
      </ModuleRefCollection>
      <SendPortCollection>
      ...
      </SendPortCollection>
      <ReceivePortCollection>
    
    (*) El puerto y sus propiedades se ven como xml
        <ReceivePort Name="TestSQLReceivePort" IsTwoWay="false">
          <ReceiveLocations>
            <ReceiveLocation Name="TestReceive Location">
              <Address>SQL://…/./.</Address> 
              <PublicAddress /> 
              <Primary>true</Primary> 
              <ReceiveLocationTransportType Name="SQL" Capabilities="15627" 
                ConfigurationClsid="6e688659-1374-4f37-90dc-40cb6dd3c73d" /> 
              <ReceiveLocationTransportTypeData>…<ReceiveLocationTransportTypeData> 
              <ReceivePipeline Name="Microsoft.BizTalk.DefaultPipelines.XMLReceive" 
                FullyQualifiedName="Microsoft.BizTalk.DefaultPipelines.XMLReceive, 
              Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, 
                PublicKeyToken=31bf3856ad364e35" Type="1" /> 
              <ReceivePipelineData xsi:nil="true" /> 
              <Enable>true</Enable> 
              <ReceiveHandler Name="BizTalkServerApplication">
                <TransportType Name="SQL" Capabilities="15627" 
                  ConfigurationClsid="6e688659-1374-4f37-90dc-40cb6dd3c73d" /> 
              </ReceiveHandler>
            </ReceiveLocation>
          </ReceiveLocations>
          <SendPipelineData xsi:nil="true" /> 
          <Authentication>0</Authentication> 
          <Tracking>0</Tracking> 
          <Transforms /> 
        </ReceivePort>
    
      </ReceivePortCollection>
    </ModuleRefCollection>
    (*)Archivo Binding de ejemplo.

  • Uso de WMI Script: (se encuantra en C:\Program Files\Microsoft BizTalk Server 2004\SDK\Samples\Admin\WMI) Estos scripts (* vbs) pueden realizar varias acciones que se pueden hacer en el BizTalk explorer como Enlist, Start, Stop, etc, sobre puertos u orquestaciones. Estos scripts pueden ser muy útiles al usarlos en un archibo batch (* un .bat que instale y otro que desinstale) para deployment/un-deployment, pero por defecto ellos usan la Host Instance por defecto de BizTalk. Para controlar los puertos y orquestaciones sobre varios instancias, es necesario modificar esos scripts pero teniendo cuidado de las host instances. Un ejemplo del script EnlistOrch.vbs modificado bajar desde (EnlistOrch.zip)

    (* Este script permite Enlistar una Orquestación, y lo que se modifica es que permite un argumento mas, recuerda que se usan en un archivo bat que puede tener:

    ejemplo.bat
    @rem -Comentario-Se actvivara un rec port mediante un bat que llama al metodo cscript de windows y este usa
    @rem el script ScriptEnableRecLoc.vbs de Biztalk 2004
    @cscript.exe C:\ejemplo\ScriptEnableRecLoc.vbs PuertoReceptorEjemplo RecLocationEjemplo )

  •  
    *Subido el 06/12/2007. Dudas o comentarios a hernaldog@gmail.com.



    Volver

    2003-2011