> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/server/es/knowledge-base/how-to-articles/deploy-in-a-high-availability-or-load-balancing-environment.md).

# Implementar en un entorno de alta disponibilidad o de equilibrio de carga

{% hint style="info" %}
El contenido de este artículo se aplica exclusivamente a los sistemas operativos Windows.
{% endhint %}

Al seguir estas directrices, puede garantizar un despliegue de alta disponibilidad o de equilibrio de carga robusto y seguro.

![](https://cdnweb.devolutions.net/docs/docs_en_kb_KB4773.png)

### Consideraciones clave

* **Listas de IP permitidas y bloqueadas**: estas funciones requieren la validación de la dirección IP del cliente para garantizar la seguridad y el cumplimiento normativo, normalmente con la [cabecera X-Forwarded-For](/server/es/knowledge-base/knowledge-base-articles/x-forwarded-for.md), que debe habilitarse en ***Administración*** – ***Configuración del servidor*** – ***Seguridad***.\
  Además, [incluya la cabecera X-Forwarded-For en los registros de IIS](/server/es/knowledge-base/how-to-articles/add-x-forwarded-for-column-in-iis.md) para garantizar un seguimiento preciso de las direcciones IP de los clientes.

  <figure><img src="https://cdnweb.devolutions.net/docs/DVLS2044_2024_3.png" alt=""><figcaption></figcaption></figure>
* **Cabeceras de respuesta HTTP**: cada nodo de servidor debería añadir un identificador único y no descriptivo a las cabeceras de las respuestas HTTP. Este identificador, que puede ser tan genérico como "node1" o "node2", sirve para seguir la ruta de las solicitudes a través de distintos servidores sin revelar detalles sensibles del servidor, como el nombre de dominio completo (FQDN). Esta práctica es crucial no solo para trazar el recorrido de la solicitud, sino también para mantener la seguridad operativa, ya que limita la exposición de detalles de la infraestructura que podrían ser explotados. Las organizaciones centradas en una mayor seguridad deberían considerar precauciones adicionales, como el uso de valores aleatorios o con hash como identificadores, para ocultar aún más la identidad de los servidores.\
  \
  Esto no es necesario para el funcionamiento, y cada equilibrador de carga puede tener su propio método para lograrlo. Sin embargo, identificar el servidor que respondió a la solicitud puede ser un paso útil para la resolución de problemas.\
  \
  Consulte [Identificar el servidor que responde en una topología de alta disponibilidad](/server/es/knowledge-base/how-to-articles/identify-the-server-answering-on-a-high-availability-topology.md) para obtener más información.

### Arquitectura

#### Equilibrador de carga

* **X-Forwarded-For y certificados SSL**: al implementar el equilibrio de carga, tenga en cuenta también los certificados SSL y la cabecera [X-Forwarded-For](/server/es/knowledge-base/knowledge-base-articles/x-forwarded-for.md).\
  Utilice cualquier tecnología de equilibrio de carga que pueda añadir la cabecera X-Forwarded-For a través de proxies o dispositivos intermedios. Esta cabecera debería eliminarse si se recibe de un cliente, y solo debería establecerla su equipamiento de red.\
  Una configuración adecuada de estos elementos garantiza conexiones seguras y un seguimiento preciso de las IP de los clientes en varios servidores. Consulte las consideraciones clave anteriores sobre las listas de IP permitidas y bloqueadas.
* **Reglas de afinidad de cliente**: la asignación de reglas de afinidad de cliente garantiza que, cuando un cliente se conecta por primera vez, las futuras solicitudes del mismo cliente se dirijan al mismo servidor web, manteniendo la coherencia.
* **Opciones de equilibrio de carga**: si no utiliza un equilibrador de carga virtual o de hardware dedicado delante de los servidores web, el equilibrio de carga mediante DNS puede ser una alternativa práctica. En este enfoque, se configuran varios registros DNS (A, AAAA o CNAME) para el mismo dominio. Cuando un cliente se conecta, el proveedor de DNS selecciona al azar uno de estos registros para responder.\
  Por ejemplo, si **devolutions-server.mycorp.com** tiene dos registros A que apuntan a IP diferentes para cada servidor web, el DNS responderá con uno de estos registros, distribuyendo eficazmente la carga entre los servidores.\
  Sin embargo, el equilibrio de carga mediante DNS tiene limitaciones. Dado que carece de comprobaciones de estado, si un servidor deja de funcionar, el proveedor de DNS puede seguir dirigiendo tráfico al servidor fuera de línea, lo que provoca conexiones fallidas. Este ejemplo se explica en este [artículo sobre registros DNS de Cloudflare](https://developers.cloudflare.com/load-balancing/load-balancers/dns-records/).

#### Servidores web / servidores de aplicaciones

En una configuración típica, se configuran dos servidores con IIS, cada uno ejecutando una instancia de Devolutions Server. Entre las consideraciones clave se incluyen el cifrado, el reenvío de IP, la conmutación por error de SQL y la coherencia de SSL.

* **Sincronización de las claves de cifrado**: cada servidor requiere claves de cifrado coincidentes para descifrar los datos de la base de datos compartida. Después de instalar el primer servidor, exporte sus claves de cifrado e impórtelas en el segundo servidor para garantizar unas capacidades de descifrado adecuadas.
* **Configuración de X-Forwarded-For**: configure la [cabecera X-Forwarded-For](/server/es/knowledge-base/knowledge-base-articles/x-forwarded-for.md) para mantener información precisa de las IP de los clientes en todos los servidores. Esto es esencial con fines de seguimiento y seguridad. Consulte las consideraciones clave anteriores sobre las listas de IP permitidas y bloqueadas.
* **Configuración de la conmutación por error de la base de datos SQL**: en la consola de Devolutions Server, siga los pasos que se indican a continuación para cada instancia de Devolutions Server.

  1. Seleccione la instancia de Devolutions Server.
  2. Vaya a ***Servidor*** – ***Editar***.

     <figure><img src="https://cdnweb.devolutions.net/docs/DVLSCONSOLE2010_2024_3.png" alt=""><figcaption></figcaption></figure>
  3. En ***Base de datos***, haga clic en ***Configuración avanzada***.

     <figure><img src="https://cdnweb.devolutions.net/docs/DVLSCONSOLE2011_2024_3.png" alt=""><figcaption></figcaption></figure>
  4. Haga clic en ***Más opciones de configuración***.

     <figure><img src="https://cdnweb.devolutions.net/docs/DVLSCONSOLE2012_2024_3.png" alt=""><figcaption></figcaption></figure>
  5. Establezca el ***Valor*** de la configuración ***MultiSubnetFailover*** en ***True***.

     <figure><img src="https://cdnweb.devolutions.net/docs/DVLSCONSOLE2013_2024_3.png" alt=""><figcaption></figcaption></figure>
  6. Haga clic en ***Ok*** para guardar los cambios y cerrar las ventanas.

  Esta configuración permite a la aplicación conectarse a varios servidores de bases de datos SQL en el [grupo de disponibilidad Always On](https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/overview-of-always-on-availability-groups-sql-server),garantizando una conmutación por error rápida cuando sea necesario.
* **Garantizar la coherencia de los certificados SSL**: dado que ambos servidores IIS sirven la misma URL a través de un equilibrador de carga (a menos que utilice IIS ARR con un round-robin de DNS u otro esquema de equilibrio de carga), es crucial que todos los certificados SSL coincidan y se sirvan correctamente a lo largo de toda la cadena. Asegúrese de que el equilibrador de carga y ambos servidores IIS tengan certificados SSL coincidentes para proporcionar una conexión segura y unificada a los clientes.

#### Servidores de bases de datos

* **Configuración de servidores SQL en un grupo de disponibilidad Always On**: para garantizar la alta disponibilidad, configure dos Microsoft SQL Servers en un [grupo de disponibilidad Always On](https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/overview-of-always-on-availability-groups-sql-server). Esta configuración sigue un modelo **Activo → Pasivo** con un quórum (o «testigo») que supervisa el estado de los servidores y activa la conmutación por error si uno de ellos deja de funcionar.
* **Habilitación del modo de base de datos contenida**: la base de datos de Devolutions Server debe funcionar en [modo contenido](https://learn.microsoft.com/en-us/sql/relational-databases/databases/contained-databases), lo que permite que la autenticación viaje con la base de datos en lugar de gestionarse a nivel de servidor. Siga estos pasos para habilitar el modo contenido (también puede hacerse mediante comandos T-SQL):

  1. Abra Microsoft SQL Server Management Studio.
  2. Haga clic con el botón derecho en la base de datos de Devolutions Server y seleccione ***Propiedades***.
  3. Vaya a ***Opciones*** y establezca el ***Tipo de contención*** en ***Parcial***.

  Esta configuración permite que los usuarios de la base de datos se muevan con ella entre los servidores del grupo de disponibilidad.
* **Creación de usuarios contenidos**: con el modo contenido habilitado en la base de datos, puede crear usuarios vinculados directamente a ella.\
  Pueden ser:

  * **Usuarios SQL con contraseñas**: creados específicamente dentro de la base de datos contenida.
  * **Usuarios de Windows**: integrados sin necesidad de un inicio de sesión del servidor MSSQL asociado a la base de datos maestra.

  Para una mayor seguridad, se recomienda utilizar la autenticación de Windows en lugar de usuarios SQL con contraseñas. Sin embargo, tenga en cuenta que si utiliza usuarios de Windows, la función de bóveda de infraestructura de Devolutions Server no podrá gestionar estos usuarios, ya que actualmente solo admite usuarios autenticados mediante SQL.
* **Cliente Remote Desktop Manager**: al utilizar el cliente Remote Desktop Manager con un Microsoft SQL Server en una configuración de alta disponibilidad (HA), habilite la [configuración de conmutación por error de varias subredes](https://docs.devolutions.net/rdm/es/knowledge-base/knowledge-base-articles/sql-server-always-on-availability-groups). Esta configuración es especialmente útil para instalaciones de alta disponibilidad de Microsoft SQL Server y no es necesaria para Devolutions Server.\
  Para configurar la conmutación por error de varias subredes en RDM:

  1. En Remote Desktop Manager, vaya a ***Archivo*** – ***Espacios de trabajo***.
  2. Seleccione el espacio de trabajo de Microsoft SQL Server en la lista de espacios de trabajo y, a continuación, haga clic en ***Editar espacio de trabajo***.

     <figure><img src="https://cdnweb.devolutions.net/docs/RDMW2084_2024_3.png" alt=""><figcaption></figcaption></figure>
  3. En la pestaña ***Avanzado***, haga clic en ***Más opciones de configuración***.

     <figure><img src="https://cdnweb.devolutions.net/docs/RDMW2085_2024_3.png" alt=""><figcaption></figcaption></figure>
  4. Establezca el ***Valor*** de la configuración ***MultiSubnetFailover*** en ***True***.

     <figure><img src="https://cdnweb.devolutions.net/docs/RDMW2086_2024_3.png" alt=""><figcaption></figcaption></figure>
  5. Haga clic en ***Ok*** y en ***Guardar*** para guardar los cambios y cerrar las ventanas.

  Esta configuración permite al cliente Remote Desktop Manager gestionar varias subredes, garantizando una conmutación por error rápida entre servidores SQL en un entorno de alta disponibilidad.

### Proceso de verificación

* **Validación del correo electrónico**: compruebe que cualquier correo electrónico generado por el sistema contenga el URI público correcto, en lugar del nombre del servidor. Esto puede comprobarse utilizando la función de mensajería de Devolutions Server.

  <figure><img src="https://cdnweb.devolutions.net/docs/DVLS2045_2024_3.png" alt=""><figcaption></figcaption></figure>
* **Historial e intentos de inicio de sesión**: la tabla ***LoginHistory*** contiene la dirección IP del cliente, no de los servidores intermedios. La tabla ***LoginAttempts*** también incluye la dirección IP, pero contempla más escenarios:
  * Fallos de inicio de sesión (p. ej., credenciales incorrectas)
  * IP en listas de bloqueo
  * IP identificadas como nodo de salida de TOR


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.devolutions.net/server/es/knowledge-base/how-to-articles/deploy-in-a-high-availability-or-load-balancing-environment.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
