Todos os produtos
Search
Central de documentação

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

Última atualização: Jun 27, 2026

O Network Load Balancer (NLB) da Alibaba Cloud oferece balanceamento de carga inteligente para nós SSH do DataWorks, evita pontos únicos de falha e simplifica a configuração de tarefas. Este tópico descreve como implantar e usar essa solução no DataWorks para garantir a execução estável de tarefas SSH.

Contexto

No DataWorks, uma fonte de dados SSH geralmente usa o endereço de host de uma instância ECS fixa. Se esse host apresentar problemas (por exemplo, travar ou ficar sem recursos), os nós SSH podem falhar na execução. Para resolver isso, adicione múltiplas instâncias ECS a um grupo de servidores 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 a integridade delas. Caso uma instância ECS falhe, o NLB encaminha automaticamente as solicitações para outras instâncias íntegras. Isso 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 roteia automaticamente as tarefas do nó SSH do DataWorks para uma instância ECS no grupo de servidores, seguindo sua política. Além disso, o NLB verifica a integridade do grupo de servidores. Ao detectar uma instância ECS com problemas, ele redireciona as tarefas para outras instâncias íntegras, assegurando continuidade e alta disponibilidade.

Essa solução evita o esgotamento de recursos e pontos únicos de falha, melhorando a eficiência e a confiabilidade da execução das tarefas.

Pré-requisitos

  • Adicione o usuário RAM 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 mais detalhes sobre como adicionar membros e atribuir funções, consulte Adicionar membros a um workspace.

  • Associe um grupo de recursos serverless ao seu workspace. Para mais informações, consulte os tópicos no diretório Usar grupos de recursos serverless.

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 estar 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 verificação.

Criar instâncias ECS

Siga estas etapas para criar as instâncias ECS necessárias.

  1. Adquira instâncias ECS.

    Acesse a página de compra de instâncias ECS, selecione a aba Custom Launch e configure os parâmetros abaixo para criar as instâncias ECS. Para detalhes sobre outros parâmetros, consulte Criar uma instância na aba Custom Launch.

    Parâmetro

    Descrição

    Region

    Selecione a região onde reside seu workspace do DataWorks.

    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

Nas duas instâncias ECS criadas, grave dados de amostra exclusivos em cada uma 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 residem 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

Siga estas etapas para criar uma instância NLB, configurar um grupo de servidores backend adicionando duas instâncias ECS e definir um listener para habilitar o balanceamento de carga.

Criar uma instância NLB

Crie uma instância NLB seguindo estas etapas. Para mais informações, consulte Pré-requisitos para criar uma instância NLB e Criar e gerencie uma instância NLB.

  1. Acesse a página de compra de instâncias 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 backend

Depois que a instância NLB entrar no estado Active, siga estas etapas para criar e vincular um grupo de servidores backend à instância NLB. Para mais informações, consulte Grupos de servidores NLB.

  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 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 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 backend sejam adicionados com sucesso.

Configurar um listener

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

  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 Criar um grupo de servidores backend.

    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

Após concluir as configurações anteriores, adicione a instância NLB como uma fonte de dados SSH. Para mais informações, consulte Fontes de dados SSH.

  1. Faça login no console do DataWorks. Na região desejada, 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

Siga estas etapas para criar e desenvolver um nó SSH e verificar sua funcionalidade checando os resultados da tarefa.

Criar um nó SSH

Crie um nó SSH seguindo estas etapas. Para mais informações, consulte Criar um nó SSH.

  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 seguinte código de amostra 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 amostra:

    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 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 é roteada 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 roteada 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

A seguir, explicamos como o DataWorks utiliza o NLB para garantir a execução estável de tarefas SSH de alta concorrência:

Essa solução adiciona múltiplas instâncias ECS a um grupo de servidores NLB e utiliza o nome DNS da instância NLB como fonte de dados SSH no DataWorks. O listener do NLB intercepta as solicitações de tarefas do nó 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.