Todos os produtos
Search
Central de documentação

DataWorks:Balanceamento de carga e alta disponibilidade para nós SSH

Última atualização: Jul 20, 2026

O Network Load Balancer (NLB) da Alibaba Cloud oferece balanceamento de carga inteligente para nós SSH do DataWorks, evitando pontos únicos de falha e simplificando a configuração e a manutenção de tarefas.

Contexto

No DataWorks, uma fonte de dados SSH geralmente é configurada com o endereço de host de uma instância ECS fixa. Se esse host apresentar problemas — por exemplo, devido a uma falha ou exaustão de recursos — os nós SSH podem falhar. Para resolver isso, adicione várias instâncias ECS a um server group de uma instância do Network Load Balancer (NLB). O NLB utiliza seu algoritmo interno para distribuir solicitações de tarefas entre as instâncias ECS disponíveis e verifica continuamente o status de integridade delas. Caso uma instância ECS falhe, o NLB encaminha automaticamente as solicitações para outras instâncias íntegras. Esse mecanismo impede que a falha de uma única instância interrompa as tarefas e garante alta disponibilidade.

Conforme ilustrado na figura anterior:

  • Sem balanceamento de carga: as tarefas do nó SSH do DataWorks executam apenas na instância ECS conectada. Se essa instância estiver sobrecarregada ou falhar, as tarefas sofrerão atrasos ou interrupções.

  • Com balanceamento de carga: o NLB encaminha automaticamente as tarefas do nó SSH do DataWorks para uma instância ECS no grupo de servidores, seguindo sua política definida. Além disso, o NLB verifica a integridade do grupo de servidores. Ao detectar uma instância ECS não íntegra, ele redireciona as tarefas para outras instâncias saudáveis, assegurando continuidade e alta disponibilidade.

Essa solução mitiga a exaustão de recursos e elimina pontos únicos de falha, aumentando a confiabilidade das tarefas.

Pré-requisitos

  • O usuário RAM que você pretende utilizar deve estar adicionado ao seu workspace.

    Para desenvolver tarefas com um usuário RAM, adicione-o como membro do workspace e atribua a função Develop ou Workspace Administrator. A função Workspace Administrator concede mais permissões do que o necessário; portanto, tenha cautela ao atribuí-la. Para obter mais informações sobre como adicionar membros e atribuir funções, consulte Add members to a workspace.

  • Um grupo de recursos serverless deve estar associado ao seu workspace. Para mais detalhes, consulte os tópicos no diretório Use serverless resource groups.

Limitações

  • O código em um nó SSH não pode exceder 128 KB.

  • O grupo de recursos do DataWorks, as instâncias ECS e a instância NLB devem residir na mesma VPC e região.

Preparar o ambiente

Para ative o balanceamento de carga e a alta disponibilidade nos nós SSH, crie pelo menos duas instâncias ECS e adicione dados de amostra exclusivos a cada uma para fins de verificação.

Criar instâncias ECS

Siga as etapas abaixo para criar as instâncias ECS.

  1. Adquira as instâncias ECS.

    Acesse a página de compra de instâncias ECS, selecione a aba Custom Launch e configure os parâmetros a seguir para criar as instâncias. Para detalhes sobre outros parâmetros, consulte Create an instance on the Custom Launch tab.

    Parâmetro

    Descrição

    Region

    Selecione a região onde seu workspace do DataWorks está localizado.

    Network and zone

    Escolha a mesma Virtual Private Cloud (VPC) e vSwitch utilizados pelo grupo de recursos serverless.

    Security Group

    Selecione o grupo de segurança vinculado ao vSwitch do grupo de recursos serverless.

    Other parameters

    Configure os demais parâmetros conforme suas necessidades de negócio.

  2. Defina a quantidade.

    No lado direito da página de compra de instâncias ECS, localize a opção Quantity e insira o número de instâncias ECS desejado. Este tutorial utiliza duas instâncias.

  3. Clique em Create Order para concluir a criação e a compra das instâncias ECS.

Preparar dados de amostra

Grave dados de amostra exclusivos em cada instância ECS para distinguir os resultados posteriormente.

  1. Faça login nas instâncias ECS.

    1. Acesse o console ECS, mude para a região onde as instâncias ECS estão localizadas e localize as duas instâncias criadas.

    2. Na coluna Operation de uma instância, clique em Remote connection. Na caixa de diálogo Remote connection, selecione Sign in now.

    3. Na página Instance Login, configure as informações de autenticação e conclua o login.

  2. Crie os dados de amostra.

    • Na Instância ECS 1, execute o seguinte comando:

      echo "I am the first server" > /tmp/a.txt
    • Na Instância ECS 2, execute o seguinte comando:

      echo "I am the second server" > /tmp/a.txt

Configurar a instância NLB

Crie uma instância NLB, adicione duas instâncias ECS a um grupo de servidores de backend e configure um listener para ativar o balanceamento de carga.

Criar uma instância NLB

Crie uma instância NLB conforme descrito abaixo. Para mais informações, consulte Prerequisites for creating an NLB instance e Create and manage an NLB instance.

  1. Acesse a página de compra da instância NLB.

    Faça login no console do Network Load Balancer. Na barra de navegação superior, selecione a região. Na página Instances, clique em Create NLB para acessar a Cloud Service Buy Page.

    Importante

    Selecione a mesma região do seu workspace do DataWorks. Uma seleção incorreta de região exigirá a criação de uma nova instância.

  2. Configure e adquira a instância NLB.

    Na Cloud Service Buy Page, configure os seguintes parâmetros para criar uma instância NLB:

    Parâmetro

    Descrição

    Network

    Network type

    Selecione internal-facing.

    VPC

    Selecione a VPC utilizada pelo seu grupo de recursos serverless.

    Zone

    Escolha a zona onde reside o vSwitch do grupo de recursos serverless.

    IP version

    Selecione IPv4.

    Management settings

    Instance name

    Insira um nome personalizado para a instância.

    Resource group

    Selecione o grupo de recursos padrão.

  3. Confirme a compra.

    Após configurar todos os parâmetros, clique em Create. Na página Confirm Order, clique em Activate.

Criar um grupo de servidores de backend

Depois que a instância NLB entrar no estado Active, crie um grupo de servidores de backend e vincule-o à instância. Para mais informações, consulte NLB server groups.

  1. Acesse a página de detalhes da instância.

    1. Faça login no console do Network Load Balancer. Na barra de navegação superior, selecione a região. Na lista de instâncias, localize a instância criada.

    2. Clique no nome da instância para acessar a página de detalhes.

  2. Crie um grupo de servidores de backend.

    1. No topo da página de detalhes da instância, clique em Create Server Group para acessar a página Create Server Group.

    2. Defina Server Group Name como ECS_NLB e clique em Create.

  3. Adicione servidores de backend.

    1. Na caixa de diálogo Server group created successfully, clique em Add Backend Server.

    2. Na aba Backend Servers, clique em Add Backend Server para acessar a página Add Backend Server.

    3. Selecione as duas instâncias ECS criadas.

    4. Clique em Next step para prosseguir à etapa Ports/Weights.

  4. Configure portas e pesos.

    1. Defina a Port como 22.

    2. Clique em OK para concluir a configuração.

Aguarde até que os servidores de backend sejam adicionados com sucesso.

Configurar um listener

Após adicionar as instâncias ECS ao grupo de servidores de backend, configure um listener para a instância NLB. Para mais informações, consulte Add a TCP listener.

  1. Acesse a página de detalhes da instância.

    1. Faça login no console do Network Load Balancer. Na barra de navegação superior, selecione a região. Na lista de instâncias, localize a instância criada.

    2. Clique no nome da instância para acessar a página de detalhes.

  2. Configure um listener.

    1. No topo da página de detalhes da instância, clique em Create Listener para abrir o assistente Configure Server Load Balancer.

    2. Defina o protocolo do listener como TCP e a porta do listener como 22.

    3. Clique em Next step.

  3. Selecione um grupo de servidores.

    1. Na etapa Select Server Group, em Server Type, selecione o grupo de servidores ECS_NLB criado em Create a backend server group.

    2. Clique em Next step.

  4. Envie para revisão.

    Na etapa Configuration Review, confirme as instâncias ECS e a porta do listener e clique em Submit.

Configurar uma fonte de dados SSH

Adicione a instância NLB como uma fonte de dados SSH. Para mais informações, consulte SSH data sources.

  1. Faça login no console do DataWorks. Na região de destino, clique em More > Management Center no painel de navegação à esquerda. Selecione um workspace na lista suspensa e clique em Go to Management Center.

  2. No painel de navegação à esquerda, clique em Data Sources > Data Sources para acessar a página Data Sources.

  3. Na página Data Sources, clique em Add Connection para acessar a página Add Connection.

  4. Na página Add Connection, selecione SSH como tipo de fonte de dados para acessar a página Add SSH Data Source. Configure os parâmetros nesta página conforme descrito abaixo.

    Parâmetro

    Descrição

    Data source name

    Insira um nome personalizado para a fonte de dados, por exemplo, SSH_DB.

    Configuration mode

    Utilize o padrão User-created Data Store with Public IP Addresses.

    Authentication method

    Recomendamos DataWorks SSH Public Key Authentication.

    Host address

    Faça login no console do Network Load Balancer. Na barra de navegação superior, selecione a região. Localize a instância e clique em seu nome para abrir a página de detalhes. Copie o Domain Name para usar como Host Address.

    Host port

    A porta do host para o servidor é 22.

    Username

    O nome de usuário para o servidor é root.

    Public key

    Clique em Generate Key Pair. A plataforma gera uma chave pública com base no nome de usuário configurado.

    Importante

    Antes de testar a conexão, adicione a chave pública ao arquivo .ssh/authorized_keys nos dois hosts ECS. Caso contrário, o teste falhará.

  5. Teste a conectividade do grupo de recursos.

    Na seção Connection Configuration, localize o grupo de recursos serverless vinculado ao seu workspace e clique em Test Connectivity na coluna Connected state.

Executar a tarefa SSH

Crie e desenvolva um nó SSH e, em seguida, verifique o balanceamento de carga analisando os resultados da tarefa.

Criar um nó SSH

Crie um nó SSH conforme descrito abaixo. Para mais informações, consulte Create an SSH node.

  1. Acesse a página Workspaces no console do DataWorks. Na barra de navegação superior, selecione a região desejada. Localize o workspace desejado e escolha Shortcuts > Data Studio na coluna Actions.

  2. No painel de navegação à esquerda, clique no ícone image. Clique no ícone image ao lado de Project Directory e escolha New Node > General > SSH para abrir a caixa de diálogo New Node.

  3. Na caixa de diálogo New Node, insira um Name personalizado para o nó SSH.

  4. Clique em Confirm para acessar o editor de nós.

Desenvolver o nó SSH

Na página do editor de nós, adicione o código de amostra a seguir e configure o ambiente de execução.

  1. Escreva o código do nó SSH.

    No editor de código, insira o seguinte comando de exemplo:

    cat /tmp/a.txt
  2. Configure o ambiente de execução.

    • Data Source: Na lista suspensa Select a data source no topo do editor, selecione a fonte de dados SSH_DB.

    • Resource group configuration: No painel à direita, clique em Run Configuration e defina o Resource Group como seu grupo de recursos serverless.

  3. Clique no botão Save na barra de ferramentas para salvar o nó SSH.

Visualizar resultados da tarefa

Execute o nó SSH várias vezes e compare a saída para verificar se o balanceamento de carga está funcionando corretamente.

  1. Execute a tarefa do nó SSH.

    Clique no botão Run na barra de ferramentas. Após a conclusão da primeira execução, execute a tarefa novamente.

  2. Visualize os resultados da tarefa.

    Nota

    A saída pode variar entre as execuções porque a tarefa é encaminhada para uma instância ECS diferente a cada vez.

    Resultado da execução 1.

    2025-04-11 16:53:05 INFO =============================================
    2025-04-11 16:53:06,657 INFO [SshWrapperMain.java:151] - Get PrivateKey Content OK
    2025-04-11 16:53:06,667 INFO [SshExecutorUtil.java:33] - User: xxx
    2025-04-11 16:53:06,668 INFO [SshExecutorUtil.java:34] - Host: xxx
    2025-04-11 16:53:06,668 INFO [SshExecutorUtil.java:35] - Port: 22
    2025-04-11 16:53:07,876 INFO [SshExecutorUtil.java:55] - session connect success
    2025-04-11 16:53:07,877 INFO [SshExecutorUtil.java:56] - code:
    cat /tmp/a.txt
    2025-04-11 16:53:07,894 INFO [SshExecutorUtil.java:66] - channel connect success
    I am the first server
    2025-04-11 16:53:09 INFO =============================================
    2025-04-11 16:53:09 INFO Exit code of the Shell command 0
    2025-04-11 16:53:09 INFO --- Invocation of Shell command completed ---
    2025-04-11 16:53:09 INFO Shell run successfully!
    2025-04-11 16:53:09 INFO Current task status: FINISH
    2025-04-11 16:53:09 INFO Cost time is: 3.238s

    Resultado da execução 2:

    Esta saída mostra "I am the second server", indicando que a solicitação foi encaminhada para a segunda instância ECS. O log de execução é o seguinte:

    2025-04-11 16:53:56 INFO ============================================================
    2025-04-11 16:53:57,632 INFO [SshWrapperMain.java:151] - Get PrivateKey Content OK
    2025-04-11 16:53:57,645 INFO [SshExecutorUtil.java:33] - User:
    2025-04-11 16:53:57,645 INFO [SshExecutorUtil.java:34] - Host:
    2025-04-11 16:53:57,645 INFO [SshExecutorUtil.java:35] - Port: 22
    2025-04-11 16:53:58,746 INFO [SshExecutorUtil.java:55] - session connect success
    2025-04-11 16:53:58,746 INFO [SshExecutorUtil.java:56] - code:
    cat /tmp/a.txt
    2025-04-11 16:53:58,764 INFO [SshExecutorUtil.java:66] - channel connect success
    I am the second server
    2025-04-11 16:53:59 INFO ============================================================
    2025-04-11 16:53:59 INFO Exit code of the Shell command 0
    2025-04-11 16:53:59 INFO --- Invocation of Shell command completed ---
    2025-04-11 16:53:59 INFO Shell run successfully!
    2025-04-11 16:53:59 INFO Current task status: FINISH
    2025-04-11 16:53:59 INFO Cost time is: 3.011s

Como funciona

O DataWorks utiliza o NLB para garantir a execução estável de tarefas SSH de alta concorrência da seguinte forma:

Várias instâncias ECS são adicionadas a um grupo de servidores NLB, e o nome DNS da instância NLB serve como fonte de dados SSH no DataWorks. O listener do NLB intercepta as solicitações de tarefas dos nós SSH e as distribui para instâncias ECS íntegras com base em sua política de balanceamento de carga. Os resultados da execução retornam através do NLB e aparecem no log do nó SSH.