Cluster com o Magic xpi 4

(agora com GigaSpaces)

Desde a chegada do Magic xpi versão 4, agora integrado ao GigaSpaces (XAP 9.1.2) – uma plataforma ‘cloud ready’ para aplicações (In-Memory DataGrid, Big Data, Clusters, etc…) – algumas novidades relativas a configurações passaram a exigir nossa atenção.

(veja este post sobre o Magic xpi 4

2

Uma delas é possibilidade de se montar um cluster de servidores. Um cluster significa ter duas ou mais máquinas trabalhando juntas como se fosse uma só.

As vantagens mais evidentes desta configuração são:

  • Multiplicar a capacidade de processamento e dividir a carga entre todos os participantes do cluster (também chamado: load balance).
  • Permitir que o sistema continue on-line. Em caso de falha de alguma das máquinas, as outras participantes do cluster devem seguir atendendo normalmente (também chamado: fail over).

Vamos verificar abaixo como montar/configurar um cluster de servidores Magic xpi versão 4.

Recomendamos utilizar a versão 4.0a ou superior, pois ela possui uma configuração facilitada.

Vamos a título de exemplo, montar um cluster (ou grid) de três servidores chamados: FZNOTE, Win764VMVBOX e WIN7GRID1.

Pré-Requisitos

 

  • As máquinas participantes do cluster devem poder se “enxergar” umas as outras. Por isso, melhor que estejam na mesma rede.
  • Elas precisarão conversar entre si via canal TCP. Então, não deve haver firewalls bloqueando as conexões entre elas.
  • Deve existir uma pasta de rede (compartilhada) que seja acessível a todas as máquinas do cluster.
  • Deve existir um logon (usuário) com acesso de leitura e escrita nesta pasta compartilhada. Este usuário será usado para executar o serviço do Magic xpi Agent. Pode ser um único usuário do domínio, ou um usuário específico de cada máquina. O importante é que ele também faça parte dos Administradores da máquina, para que além de acesso à pasta compartilhada também não restrição de acesso a algum recurso do próprio servidor.
  • Cada máquina do cluster precisa ter a sua própria licença de Magic xpi. Não é possível utilizar uma mesma licença em mais de uma máquina, mesmo dividindo as threads entre elas.

 

Instalação

 

O Magic xpi deve ser instalado em cada máquina separadamente. Como se fossem instalações individuais. Isso inclui o seu próprio WSO2 (SystInet) e o seu banco de dados interno. E claro, a sua licença ativada.

Porém, no Unicast Locators você deve informar todas as máquinas que participarão do cluster. E também deve deixar assinalada a opção LUS:

Imagem_001

 A lista de máquinas pode ser informada pelo seu nome ou pelo seu número IP. O IP é preferível, desde que ele seja estático (não mude a cada reinicialização da máquina).

NOTA: muitos LUS afetam a performance geral do grid. Num cluster de 5, 10 ou mais servidores, você pode deixar o LUS em apenas 2 ou 3 destas máquinas, se desejar.

É importante que se utilize as mesmas configurações no grupo Space Deployment do instalador, para que o arquivo <xpi4Home>\config\magicxpi_sla.xml fique igual em todas as máquinas.

Novamente: esta instalação deve ser repetida em cada uma das máquinas.

 

Configuração

 

Finalizada a instalação do Magic xpi nas máquinas do cluster, alguns arquivos precisam ser editados.

Os arquivos:

<xpi4Home>\MAGIC.INI

<xpi4Home>\MGREQ.INI

<xpi4Home>\scripts\config\MGREQ.INI

<xpi4Home>\GigaSpaces\bin\magicxpi-setenv.bat

devem todos possuir o mesmo conteúdo referente a LookupLocators e LookupGroupName:

Imagem_002

Imagem_004

Imagem_003

O arquivo:

<xpi4Home>\GigaSpaces\bin\magicxpi-gs-agent.bat

deve ser ajustado para:

gsa.global.gsm N // onde ‘N’ é o total de máquinas no cluster

gsa.mgdeploy 0

Imagem_005

Os ajustes nestes arquivos devem ser realizados em todas as máquinas do cluster. É importante que todas elas possuam estas mesmas configurações.

NOTA: nesta abordagem (gsa.mgdeploy 0) é preciso aguardar até que o grid esteja ‘pronto’ (todas as máquinas participantes tenham subido e se conectado), para então fazer o deploy manual do MAGIC_SPACE (Magicxpi_deploy.bat). Para manter tudo “automático”, deixe (gsa.mgdeploy 1). A primeira máquina do cluster terá sucesso neste ‘deployment’, as demais acusarão erro em seus logs (já que o deploy só pode ser feito uma vez), mas estes erros podem ser tranquilamente ignorados.

O serviço do GSA (Grid Service Agent) deve ter suas credenciais ajustadas cfe. descrito anteriormente: usar um usuário que tenha acesso irrestrito à pasta compartilhada e também aos recursos da máquina onde ele está rodando:

Imagem_006

Pode até ser o LocalSystem, desde que garantidas as premissas acima.

Como já dito, deve existir uma pasta compartilhada acessível a todas as máquinas participantes do cluster:

Imagem_007

Nesta pasta, serão copiados todos os projetos que se deseja executar nesta arquitetura. Neste exemplo, o projeto “WSOnClusterCheck” está copiado na pasta compartilhada “\\FZNOTE\SharedProjects”. Todos os projetos que se deseja executar no cluster, devem ser copiados para esta pasta.

Após a cópia, em cada um dos projetos deve ser realizado um ajuste no arquivos Start.lnk e Start.xml:

Imagem_008

No arquivo Start.lnk, deve-se informar o caminho compartilhado do Start.xml. Ex:

<…>MgxpiCmdl.bat start-servers -startup-config-file “\\FZNOTE\SharedProjects\WSOnClusterCheck\start.xml” -space-name “MAGIC_SPACE”

No Start. xml, deve-se informar em quais servidores do cluster se deseja executar o projeto, além de qual a pasta compartilhada que está sendo utilizada. Ex:

Imagem_009

Podemos definir para alguns projetos executarem em apenas alguns dos servidores, ou para todos executarem em todos os servidores.

Novamente: esta revisão deve ser aplicada em todos os projetos copiados para este local compartilhado.

Por último, e não menos importante, o arquivo <xpi4Home>\IFM.INI precisa ser ajustado também. A chave “MPSProjects” da seção [MAGIC_IBOLT] e a chave “projects” da seção [MAGIC_LOGICAL_NAMES] precisam apontar para a pasta compartilhada descrita acima. Observe que uma termina com “\” e a outra, não:

Imagem_010

Lembrando: este ajuste deve ser em todos os IFM.INI das instalações dos Magic xpi participantes do cluster.

 

Inicialização

 

Finalizada a configuração do Magic xpi nas máquinas do cluster, os serviços do GSA (Grid Service Agent) podem ser iniciados em todas elas:

Imagem_011

Usando-se o GigaSpaces UI, podemos verificar que o IMDG foi criado com a união de todas as máquinas participantes do cluster:

Imagem_012

Isto é porque elas compartilham os mesmos valores de LookupLocators e LookupGroupName. E obviamente, porque conseguem se enxergar na rede.

Em qualquer das máquinas do cluster em que se abrir o GigaSpaces UI:

Imagem_013

será exibida a mesma estrutura do IMDG.

 

Entendendo o MAGIC_SPACE

 

Ter o IMDG montado, não é suficiente para poder se executar os projetos Magic xpi. É preciso que haja uma entidade chamada MAGIC_SPACE montada (deployed) dentro do IMDG.

Imagem_014

Isso normalmente é uma ação automática, por conta com comando “gsa.mgdeploy 1” que existe no arquivo <xpi4Home>\GigaSpaces\bin\magicxpi-gs-agent.bat.

Mas como visto acima, nós reajustamos este comando para: “gsa.mgdeploy 0”. E o motivo é o seguinte:

No momento em que o MAGIC_SPACE é montado (deployed), ele só reconhece as máquinas que estão no cluster naquele momento. No nosso exemplo, se no deployment do MAGIC_SPACE somente as máquinas FZNOTE e WIN7GRID1 tivessem concluído a sua inicialização do GigaSpaces, a estrutura ficaria assim:

Imagem_015

As máquinas que entrassem depois seriam ignoradas. Existem duas maneiras de se resolver essa situação:

A)     Deixar uma das máquinas do cluster com “gsa.mgdeploy 1” e garantir que ela entrará por último no cluster.

B)      Deixar todas as máquinas com “gsa.mgdeploy 0” e montar (deploy) o MAGIC_SPACE manualmente.

Neste nosso exemplo, optamos pela “B”.

Todos os arquivos <xpi4Home>\GigaSpaces\bin\magicxpi-gs-agent.bat já foram definidos com “gsa.mgdeploy 0”.

Agora temos duas opções:

O menu GigaSpaces Deployment:

Imagem_016

Ou o arquivo de comando <xpi4Home>\GigaSpaces\bin\Magicxpi_deploy.bat:

Imagem_017

Observe que após o deployment, os contêineres que formam o MAGIC_SPACE se espalham entre todas as máquinas do cluster:

Imagem_018

Imagem_019

Isso só ocorreu porque todas as máquinas já estavam no cluster na hora da montagem do MAGIC_SPACE.

 

Execução

 

Finalizada a montagem do cluster e do MAGIC_SPACE, os projetos já podem iniciar a executar nesta estrutura.

Como já mostrado em outras oportunidades, um projeto Magic xpi versão 4 pode iniciar a executar de 4 formas diferentes:

  • Através da opção debugger do Magic xpi Studio.
  • Através do atalho Start.lnk do projeto.
  • Através do botão START do Magic xpi Monitor.
  • Automaticamente

Para iniciar automaticamente, todos os projetos devem estar listados no arquivo <xpi4Home>\config\projectsStartup.xml:

Imagem_020

Mas é importante observar que o “projectsStartup.xml” que interessa é o que está localizado na máquina que montou o MAGIC_SPACE (seja de forma manual ou não), pois é no momento do deployment do MAGIC_SPACE que este arquivo xml é lido.

Em nosso exemplo, vamos escolher a 3a. opção:

Imagem_021

Observe que como o Start.xml deste projeto define que deve haver um Magic xpi Server em cada uma das três máquinas do cluster:

Imagem_022

então temos efetivamente um processo MgxpiServer.exe em cada uma destas máquinas, dedicados a executar fluxos deste projeto:

Imagem_023

E assim se repetiria para cada um dos projetos salvos na pasta compartilhada, cfe. as configurações do seu Start.xml e/ou projectsStartup.xml. O total de processos MgxpiServer.exe será então a soma das instâncias, de todos os servidores atribuídos a todos os projetos:

Imagem_024

Na configuração acima, temos então um MgxpiServer.exe em cada uma das três máquinas do cluster, todos dedicados ao projeto “WSOnClusterCheck”. Cada um destes MgxpiServer.exe pode atender no máximo 10 requisições simultâneas. Vale o que for menor: o número de Workers definidos por processo MgxpiServer.exe, ou o número de threads na licença em uso. As requisições que excederem este limite, ficam “em fila” aguardando oportunidade para serem atendidas.

 

Testando o Cluster

 

Relembrando os propósitos de um cluster com Magic xpi versão 4, descritos lá no início, vamos analisar este pequeno projeto exemplo. O projeto “WSOnClusterCheck” publica um webService SOAP simples:

Imagem_025

que na sua resposta informa o nome da máquina que executou o fluxo:

Imagem_026

Construiremos então um cliente (consumidor) para este webService. Veja que nesta configuração de cluster, nós possuímos três WSO2 (SystInet). Nós podemos ter todos on-line ou não.

É indiferente .

Não importa por qual WSO2 (SystInet) a requisição chegar. Ela irá gerar uma WorkMessage no MAGIC_SPACE, que será tratada por algum Worker de algum Magic xpi Server dedicado a projeto, em qualquer das máquinas onde ele esteja executando.

Seguindo em nosso exemplo, vamos encaminhar todas as requisições para um único WSO2 (SystInet): o que está na máquina FZNOTE.

Imagem_027

Com todos os Magic xpi Servers a postos, ao executar este cliente (consumidor) do webService, teremos este resultado:

Imagem_028

Cada demanda de execução do fluxo é direcionada para algum Worker em alguma das máquinas do cluster reconhecidas pelo MAGIC_SPACE, cfe. algoritmo interno.

Com este resultado, o load balance se comprovou.

Se removermos alguma das máquinas do cluster, como a Win764VMVBOX por exemplo:

 Imagem_029

O cliente do webService continua sendo atendido, agora pelas duas máquinas que restaram:

Imagem_030

Com este resultado, o fail over se comprovou.

Manoel Frederico – Evangelista de Tecnologia & Gerente de Produto

Deixe um comentário

O seu endereço de e-mail não será publicado.