Configurando um Server Farm HyperServer

Configurar e montar uma fazenda de servidores é direto. Por exemplo, para construir uma farm com três servidores você executa três instâncias do HyperServer: uma atuando como master e duas como slaves (ServerNodes). O HyperServer master lida com requisições recebidas e as repassa para seus Nodes locais e para os ServerNodes no cluster.

Configurando o HyperServer Master

Para converter um HyperServer comum em um master, adicione um ou mais ServerNodes ao arquivo CFG do HyperServer master.

Exemplo: adicionando dois ServerNodes ao arquivo CFG do master

[server-0]
enabled=1
url=http://192.168.1.32:8077
name=HP-ML150
token=gmvsek210828175924563

[server-1]
enabled=1
url=http://192.168.1.33:8077
name=DELL-7080
token=eftrgj210828180420097

Detalhes:

[server-0]

Cada configuração de ServerNode começa com uma seção chamada server- seguida por um número único (por exemplo, server-0).

Determina se o ServerNode está habilitado. Quando habilitado, o tráfego é redirecionado para esse ServerNode; caso contrário, ele é ignorado.

O endereço HTTP usado para comunicação com este ServerNode.

Exemplos:

  • http://192.168.1.33:8077 — URL com endereço IP físico

  • http://webserver-1:8077 — URL com nome de rede de um servidor local

  • http://mycompanydomain.com:8077 — URL global com um nome de domínio

Nome opcional para ajudar a identificar o ServerNode.

Um token é um identificador único necessário para autorizar o HyperServer master a acessar remotamente o Painel de Controle do ServerNode. O token é gerado automaticamente no arquivo CFG do ServerNode na primeira vez que você executa o executável do ServerNode; copie-o para o CFG do master.

Você deve reiniciar o HyperServer após adicionar ou modificar esses parâmetros. (Lançamentos futuros permitirão alterar parâmetros da farm de servidores a partir do Painel de Controle sem reiniciar.)

Parâmetros adicionais relacionados aos Modos de Operação do Cluster

Para o modo de cluster padrão (0 - PassThrough) você não precisa alterar estes. Veja Modos de Operação do Cluster para mais detalhes.

(Links mantidos como no original:) https://unigui.com/doc/online_help/cluster-operation-modes.htm

Configurando Instâncias HyperServer Slave (ServerNodes)

Configurar um HyperServer slave é similar a uma instância padrão do HyperServer. Configure os parâmetros necessários do HyperServer, teste a instância localmente e implante em modo Service para produção (Standalone é para testes/depuração). Para o master você pode usar qualquer método de implantação (ISAPI, módulo Apache, Serviço Windows/Linux, ou EXE Standalone para testes).

Ao executar um ServerNode, um parâmetro token é criado automaticamente em seu arquivo CFG. Trecho de exemplo:

Copie essa string de token para a seção de configuração do ServerNode no arquivo CFG do master:

Testando sua Farm de Servidores

Execute a instância HyperServer slave primeiro, depois o master. Exemplo de teste: um slave e o master no mesmo PC usando portas diferentes. O master roda na porta 8077 e o slave na porta 8078.

Abra o Painel de Controle do master:

http://127.0.0.1:8077/server

clip0228

No Painel de Controle abra a página ServerNodes. Você deve ver os ServerNodes configurados. Se a comunicação estiver funcionando, o ServerNode em http://127.0.0.1:8078 deverá ser mostrado como Online.

Você pode acessar o Painel de Controle do slave a partir do Painel de Controle do master clicando no ícone de busca na coluna Ações.

clip0229

Clicar no ícone abre uma página titulada com o nome do ServerNode configurado:

clip0230

A partir desta página você pode monitorar e gerenciar o ServerNode (Nodes, sessões, configuração) a partir do Painel de Controle do master.

Executando Sessões de Aplicação Web em uma Farm de Servidores

Abra a URL root do HyperServer master e a aplicação web será exibida no navegador.

clip0231

No ServerNode você verá um Node criado (por exemplo, LocalNode-0).

clip0232

Na página ServerNodes você verá informações do Node e das sessões. ServerNodes recebem IDs começando em 1024 (por exemplo, um ServerNode com Node Id 1024 tem um Node ativo e uma sessão em execução).

clip0233

O HyperServer master pode desempenhar dois papéis:

  • Balanceador de carga para ServerNodes (redireciona o tráfego), e opcionalmente

  • Um HyperServer comum possuindo Nodes locais e sessões web.

Para fazer o master agir apenas como balanceador de carga (sem Nodes locais), defina no CFG do master:

Isso impede o master de criar Nodes locais; todo o tráfego recebido será redirecionado para os ServerNodes.

clip0234

Node Persistente em um Cluster de Servidores

Para garantir que certas tarefas sejam executadas em um Node específico, defina persistent_node=1 no arquivo CFG desse ServerNode.

No código da sua aplicação assegure que a tarefa rode apenas no Node Persistente:

Você também pode configurar o HyperServer master para ser o Node Persistente definindo no CFG do master:

Aplicações HyperServer podem possuir Nodes Persistentes definindo persistent_node=1 na configuração da aplicação:

Consulte Terminologia para mais informações: https://unigui.com/doc/online_help/terminology.htm

circle-exclamation

Node Persistente Zero em um Cluster de Servidores

Para executar tarefas no Node Zero de um ServerNode selecionado, defina persistent_node_zero=1 no arquivo CFG desse ServerNode.

Código de exemplo para garantir que apenas o Node Zero do ServerNode selecionado execute o código:

Para executar código no Node Zero do HyperServer master substitua 1024 por -1 e defina persistent_node_zero=1.

A partir do build 1566 do uniGUI uma nova propriedade simplifica isso: ClusterNodeZero. Os handlers anteriores podem ser substituídos por:

ClusterNodeZero retorna True se o Id do Node for zero e, ao rodar em uma farm de servidores em cluster, o ServerNode também for 1024. Se a aplicação em execução não for um Node e não fizer parte de um cluster, ClusterNodeZero retorna True.

Implementação (de uniGUIServer.pas):

Isso garante que sua tarefa de thread rode em apenas um Node independentemente do total de Nodes no cluster.

Enquanto o acima funciona, é melhor habilitar um Timer somente quando o Node for Node Zero. Porque ServerNodeId pode ser populado após a criação do Node, habilitar um timer no OnCreate pode ser pouco confiável. O uniGUI fornece o evento OnClusterNodeIdChange que dispara inicialmente quando o Módulo do Server é criado e sempre que ServerNodeId muda.

Padrão recomendado (build 1566 e posteriores):


Referências (mantidas como no original):

  • https://unigui.com/doc/online_help/index.html?setting-up-a-hyperserver-serve.htm

  • https://unigui.com/doc/online_help/hyperserver.htm

  • https://unigui.com/doc/online_help/hyperserver-server-farm.htm

  • https://unigui.com/doc/online_help/distributing-traffic-in-a-hype.htm

  • https://unigui.com/doc/online_help/cluster-operation-modes.htm

  • https://unigui.com/doc/online_help/hyperserver-applications.htm

  • https://unigui.com/doc/online_help/terminology.htm