Todos los productos
Search
Centro de documentos

DataWorks:Balanceo de carga y alta disponibilidad para nodos SSH

Última actualización: Sep 04, 2026

Network Load Balancer (NLB) de Alibaba Cloud ofrece un balanceo de carga inteligente para los nodos SSH de DataWorks. Esta función evita los puntos únicos de falla y simplifica la configuración y el mantenimiento de las tareas.

Contexto

En DataWorks, un origen de datos SSH se configura normalmente con la dirección de host de una instancia ECS fija. Si dicho host presenta problemas de salud (por ejemplo, debido a un fallo del sistema o al agotamiento de recursos), los nodos SSH pueden fallar. Para solucionar esto, agregue varias instancias ECS a un server group de una instancia de Network Load Balancer (NLB). NLB utiliza su algoritmo interno para distribuir las solicitudes de tareas entre las instancias ECS disponibles y verifica continuamente su estado de salud. Si una instancia ECS falla, NLB redirige automáticamente las solicitudes a otras instancias saludables. Esto evita que el fallo de una sola instancia interrumpa las tareas y garantiza la alta disponibilidad.

Como se muestra en la figura anterior:

  • Sin balanceo de carga: Las tareas del nodo SSH de DataWorks solo se ejecutan en la instancia ECS conectada. Si dicha instancia se sobrecarga o falla, las tareas se retrasan o se interrumpen.

  • Con balanceo de carga: Las tareas del nodo SSH de DataWorks se enrutan automáticamente a una instancia ECS del grupo de servidores según la directiva de NLB. Además, NLB realiza comprobaciones de estado en el grupo de servidores. Si detecta una instancia ECS no saludable, redirige automáticamente las tareas a otras instancias saludables, lo que garantiza la continuidad y la alta disponibilidad.

Esta solución mitiga el agotamiento de recursos y los puntos únicos de falla, mejorando así la fiabilidad de las tareas.

Requisitos previos

  • El usuario RAM que desea utilizar está agregado a su espacio de trabajo.

    Si desea usar un usuario RAM para desarrollar tareas, debe agregarlo como miembro a su espacio de trabajo y asignarle el rol Develop o Workspace Administrator. El rol Workspace Administrator otorga más permisos de los necesarios, por lo que debe tener precaución al asignarlo. Para obtener más información sobre cómo agregar un miembro y asignarle roles, consulte Add members to a workspace.

  • Su espacio de trabajo tiene asociado un resource group serverless. Para obtener más información, consulte los temas del directorio Use serverless resource groups.

Limitaciones

  • El código en un nodo SSH no puede superar los 128 KB.

  • El resource group de DataWorks, las instancias ECS y la instancia NLB deben estar en la misma VPC y región.

Preparar el entorno

Para habilitar el balanceo de carga y la alta disponibilidad en los nodos SSH, cree como mínimo dos instancias ECS y agregue datos de muestra únicos a cada una para fines de verificación.

Crear instancias ECS

Cree las instancias ECS de la siguiente manera.

  1. Adquiera instancias ECS.

    Vaya a la página de compra de instancias ECS, seleccione la pestaña Custom Launch y configure los siguientes parámetros para crear las instancias ECS. Para obtener detalles sobre otros parámetros, consulte Create an instance on the Custom Launch tab.

    Parámetro

    Descripción

    Region

    Seleccione la región donde reside su espacio de trabajo de DataWorks.

    Network and zone

    Seleccione la misma Virtual Private Cloud (VPC) y vSwitch que utiliza el resource group serverless.

    Security Group

    Seleccione el security group vinculado al vSwitch del resource group serverless.

    Other parameters

    Configure otros parámetros según sus requisitos empresariales.

  2. Establezca la cantidad.

    En el lado derecho de la página de compra de instancias ECS, busque la opción Quantity e introduzca el número de instancias ECS que necesita. Este tutorial utiliza dos instancias.

  3. Haga clic en Create Order para completar la creación y compra de las instancias ECS.

Preparar datos de muestra

Escriba datos de muestra únicos en cada instancia ECS para poder distinguir los resultados posteriormente.

  1. Inicie sesión en las instancias ECS.

    1. Vaya a la consola de ECS, cambie a la región donde residen las instancias ECS y localice las dos instancias que creó.

    2. En la columna Operation de una instancia, haga clic en Remote connection. En el cuadro de diálogo Remote connection, seleccione Sign in now.

    3. En la página Instance Login, configure la información de autenticación y complete el inicio de sesión.

  2. Cree los datos de muestra.

    • En la instancia ECS 1, ejecute el siguiente comando:

      echo "I am the first server" > /tmp/a.txt
    • En la instancia ECS 2, ejecute el siguiente comando:

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

Configurar la instancia NLB

Cree una instancia NLB, agregue dos instancias ECS a un grupo de servidores backend y configure un listener para habilitar el balanceo de carga.

Crear una instancia NLB

Cree una instancia NLB como se describe a continuación. Para obtener más información, consulte Prerequisites for creating an NLB instance y Create and manage an NLB instance.

  1. Vaya a la página de compra de instancias NLB.

    Inicie sesión en la consola de Network Load Balancer. En la barra de navegación superior, seleccione la región. En la página Instances, haga clic en Create NLB para ir a la Cloud Service Buy Page.

    Importante

    Seleccione la misma región que su espacio de trabajo de DataWorks. Si selecciona una región incorrecta, tendrá que crear una nueva instancia.

  2. Configure y adquiera la instancia NLB.

    En la Cloud Service Buy Page, configure los siguientes parámetros para crear una instancia NLB:

    Parámetro

    Descripción

    Network

    Network type

    Seleccione internal-facing.

    VPC

    Seleccione la VPC que utiliza su resource group serverless.

    Zone

    Seleccione la zona donde reside el vSwitch del resource group serverless.

    IP version

    Seleccione IPv4.

    Management settings

    Instance name

    Introduzca un nombre personalizado para la instancia.

    Resource group

    Seleccione el resource group predeterminado.

  3. Confirme la compra.

    Después de configurar todos los parámetros, haga clic en Create. En la página Confirm Order, haga clic en Activate.

Crear un grupo de servidores backend

Una vez que la instancia NLB pase al estado Active, cree un grupo de servidores backend y vincúlelo a la instancia. Para obtener más información, consulte NLB server groups.

  1. Vaya a la página de detalles de la instancia.

    1. Inicie sesión en la consola de Network Load Balancer. En la barra de navegación superior, seleccione la región. En la lista de instancias, localice la instancia que creó.

    2. Haga clic en el nombre de la instancia para ir a la página de detalles de la instancia.

  2. Cree un grupo de servidores backend.

    1. En la parte superior de la página de detalles de la instancia, haga clic en Create Server Group para ir a la página Create Server Group.

    2. Establezca Server Group Name como ECS_NLB y luego haga clic en Create.

  3. Agregue servidores backend.

    1. En el cuadro de diálogo Server group created successfully, haga clic en Add Backend Server.

    2. En la pestaña Backend Servers, haga clic en Add Backend Server para ir a la página Add Backend Server.

    3. Seleccione las dos instancias ECS que creó.

    4. Haga clic en Next step para ir al paso Ports/Weights.

  4. Configure puertos y pesos.

    1. Establezca el Port en 22.

    2. Haga clic en OK para completar la configuración.

Espere hasta que los servidores backend se agreguen correctamente.

Configurar un listener

Después de agregar las instancias ECS al grupo de servidores backend, configure un listener para la instancia NLB. Para obtener más información, consulte Add a TCP listener.

  1. Vaya a la página de detalles de la instancia.

    1. Inicie sesión en la consola de Network Load Balancer. En la barra de navegación superior, seleccione la región. En la lista de instancias, localice la instancia que creó.

    2. Haga clic en el nombre de la instancia para ir a la página de detalles de la instancia.

  2. Configure un listener.

    1. En la parte superior de la página de detalles de la instancia, haga clic en Create Listener para abrir el asistente Configure Server Load Balancer.

    2. Establezca el protocolo del listener en TCP y el puerto del listener en 22.

    3. Haga clic en Next step.

  3. Seleccione un grupo de servidores.

    1. En el paso Select Server Group, para Server Type, seleccione el grupo de servidores ECS_NLB que creó en Create a backend server group.

    2. Haga clic en Next step.

  4. Envíe para revisión.

    En el paso Configuration Review, confirme las instancias ECS y el puerto del listener, y luego haga clic en Submit.

Configurar un origen de datos SSH

Agregue la instancia NLB como un origen de datos SSH. Para obtener más información, consulte SSH data sources.

  1. Inicie sesión en la consola de DataWorks. En la región objetivo, haga clic en More > Management Center en el panel de navegación izquierdo. Seleccione un espacio de trabajo de la lista desplegable y haga clic en Go to Management Center.

  2. En el panel de navegación izquierdo, haga clic en Data Sources > Data Sources para ir a la página Data Sources.

  3. En la página Data Sources, haga clic en Add Connection para ir a la página Add Connection.

  4. En la página Add Connection, seleccione SSH como tipo de origen de datos para ir a la página Add SSH Data Source. Configure los parámetros en esta página de la siguiente manera.

    Parámetro

    Descripción

    Data source name

    Introduzca un nombre personalizado para el origen de datos, por ejemplo, SSH_DB.

    Configuration mode

    Utilice la opción predeterminada User-created Data Store with Public IP Addresses.

    Authentication method

    Se recomienda DataWorks SSH Public Key Authentication.

    Host address

    Inicie sesión en la consola de Network Load Balancer. En la barra de navegación superior, seleccione la región. Localice la instancia y haga clic en su nombre para abrir la página de detalles de la instancia. Copie el Domain Name para usarlo como Host Address.

    Host port

    El puerto del host para el servidor es 22.

    Username

    El nombre de usuario para el servidor es root.

    Public key

    Haga clic en Generate Key Pair. La plataforma genera una clave pública basada en el nombre de usuario que configuró.

    Importante

    Antes de probar la conexión, agregue la clave pública al archivo .ssh/authorized_keys en los dos hosts ECS. De lo contrario, la prueba fallará.

  5. Pruebe la conectividad del resource group.

    En la sección Connection Configuration, localice el resource group serverless vinculado a su espacio de trabajo y haga clic en Test Connectivity en la columna Connected state.

Ejecutar la tarea SSH

Cree y desarrolle un nodo SSH, y luego verifique el balanceo de carga revisando los resultados de la tarea.

Crear un nodo SSH

Cree un nodo SSH como se describe a continuación. Para obtener más información, consulte Create an SSH node.

  1. Vaya a la página Workspaces en la consola de DataWorks. En la barra de navegación superior, seleccione la región deseada. Localice el espacio de trabajo deseado y elija Shortcuts > Data Studio en la columna Actions.

  2. En el panel de navegación izquierdo, haga clic en el icono image. Haga clic en el icono image junto a Project Directory y elija New Node > General > SSH para abrir el cuadro de diálogo New Node.

  3. En el cuadro de diálogo New Node, introduzca un Name personalizado para el nodo SSH.

  4. Haga clic en Confirm para ir al editor de nodos.

Desarrollar el nodo SSH

En la página del editor de nodos, agregue el siguiente código de muestra y configure el entorno de ejecución.

  1. Escriba el código del nodo SSH.

    En el editor de código, introduzca el siguiente comando de muestra:

    cat /tmp/a.txt
  2. Configure el entorno de ejecución.

    • Data Source: En la lista desplegable Select a data source en la parte superior del editor, seleccione el origen de datos SSH_DB.

    • Resource group configuration: En el panel derecho, haga clic en Run Configuration y establezca el Resource Group en su resource group serverless.

  3. Haga clic en el botón Save en la barra de herramientas para guardar el nodo SSH.

Consultar los resultados de la tarea

Ejecute el nodo SSH varias veces y compare la salida para verificar que el balanceo de carga funciona correctamente.

  1. Ejecute la tarea del nodo SSH.

    Haga clic en el botón Run en la barra de herramientas. Una vez completada la primera ejecución, vuelva a ejecutar la tarea.

  2. Consulte los resultados de la tarea.

    Nota

    La salida puede variar entre ejecuciones porque la tarea se enruta a una instancia ECS diferente cada vez.

    Resultado de ejecución 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 de ejecución 2:

    Esta salida muestra "I am the second server", lo que indica que la solicitud se enrutó a la segunda instancia ECS. El registro de ejecución es el siguiente:

    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

Funcionamiento

DataWorks utiliza NLB para garantizar la ejecución estable de tareas SSH de alta concurrencia de la siguiente manera:

Se agregan varias instancias ECS a un grupo de servidores NLB, y el nombre DNS de la instancia NLB sirve como origen de datos SSH en DataWorks. El listener de NLB intercepta las solicitudes de tareas de los nodos SSH y las distribuye a instancias ECS saludables según su directiva de balanceo de carga. Los resultados de ejecución regresan a través de NLB y aparecen en el registro del nodo SSH.