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=eftrgj210828180420097Detalhes:
[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

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.

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

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.

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

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).

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.

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
A seção abaixo aplica-se apenas a versões do HyperServer anteriores à 1.95 e é fornecida aqui apenas como referência. Para a versão 1.95 e posteriores use o novo recurso "Persistent Node".
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