DataSunrise Logra el Estado de Competencia en AWS DevOps en AWS DevSecOps y Monitoreo, Registro, Rendimiento

Balanceo de Carga con HAProxy

Balanceo de Carga con HAProxy

HAProxy es una herramienta de software libre que funciona como un balanceador de carga y servidor proxy inverso para aplicaciones basadas en TCP y HTTP. La herramienta distribuye las solicitudes de conexión entre varios nodos de servidor. Con muy poco uso de recursos, te permite manejar grandes volúmenes de tráfico HTTP y HTTPS. Además, HAProxy realiza comprobaciones de salud del servidor y redirige a los usuarios a un nodo en funcionamiento en caso de que uno de los servidores esté caído, lo que lo convierte en una solución útil para failover.

Asumiendo los beneficios mencionados, hemos configurado HAProxy para distribuir conexiones para MySQL RDBMS y nuestra interfaz de usuario.

En este artículo, consideraremos los pasos para realizar el balanceo de carga para tres proxies de DataSunrise en modo de Alta Disponibilidad en las siguientes direcciones: 192.168.1.100, 192.168.1.101, 192.168.1.102.

Requisitos Previos

Hay varios pasos a realizar antes de comenzar a trabajar con HAProxy.

Antes de configurar el balanceo de carga, es necesario instalar DataSunrise en modo de alta disponibilidad en varios servidores. Para implementar el modo de Alta Disponibilidad en DataSunrise, realiza lo siguiente:

  1. El asistente de instalación de DataSunrise te permite seleccionar la ubicación local o remota para una pestaña de configuración. Selecciona Remote.
  2. En la pestaña DataSunrise Server Details, especifica los detalles de la instancia actual de DataSunrise: nombre del servidor, nombre de host donde está instalada la instancia de DataSunrise, número de puerto de la interfaz web de la instancia (11000, por defecto).
  3. En la pestaña Ubicación del Diccionario, especifica la base de datos para almacenar la configuración de DataSunrise (Diccionario). Todos los servidores configurados para usar esta base de datos compartirán configuraciones comunes (incluyendo credenciales comunes para acceder a las interfaces web).

Consulta la Guía de Administración de DataSunrise para obtener instrucciones más detalladas sobre el modo de alta disponibilidad de DataSunrise. También asegúrate de que la misma versión del producto esté instalada en todos los servidores.

Crear Instancia

A continuación, necesitamos crear una instancia de DataSunrise en el host virtual donde está instalado MySQL y abrir proxies en las máquinas que se conectarán a la base de datos MySQL.

Para crear una instancia, realiza lo siguiente en la máquina principal:

  1. Entra en la interfaz gráfica de DataSunrise y ve a la subsección Bases de Datos de la sección Configuraciones.
  2. Haz clic en el botón Database +.
  3. Introduce el nombre de host, el número de puerto y otra información requerida.
  4. Una vez creada la instancia, selecciona la nueva instancia creada de la lista y haz clic en Editar.
  5. Se abrirá una ventana con las configuraciones de la instancia, haz clic en el botón Proxy +.
  6. Especifica el servidor, el nombre del host y el número de puerto (mysql0, 192.168.1.100, 3306 respectivamente) y haz clic en Guardar.
  7. Abre proxies en las máquinas esclavas en la misma instancia especificando el nombre del servidor correspondiente y el nombre del host para cada proxy.

Al final, la configuración de la instancia se verá así:

HAProxy

Configurando HAProxy para MySQL

Configurar HAProxy para sistemas de gestión de bases de datos es bastante simple. A continuación, configuraremos HAProxy para que funcione como un distribuidor de conexiones para los proxies de DataSunrise (192.168.1.100:3306, 192.101.1.101:3306, 192.168.1.102:3306).

Después de instalar HAProxy, abre el archivo /etc/haproxy/haproxy.cfg y edita el bloque de configuración ‘listen’ de la siguiente manera:

listen af_mysql_balancer         mode tcp         bind *:3306         balance leastconn         server mysql0 192.168.1.100:3306 check         server mysql1 192.168.1.101:3306 check         server mysql2 192.168.1.102:3306 check

HAProxy realizará comprobaciones de salud y distribuirá las conexiones de acuerdo con el número de conexiones en el nodo del servidor, redirigiendo al usuario al servidor con el menor número de conexiones.

balance <algorithm> sirve para seleccionar algoritmos de balanceo.

roundrobinRound Robin es el algoritmo predeterminado, selecciona los servidores por turnos.
leastconnCon este algoritmo, HAProxy dirige a cada nuevo usuario al servidor con el menor número de conexiones.
sourceEl algoritmo para dirigir a los usuarios a los servidores basado en un hash de la dirección IP del usuario.

Para la lista completa de algoritmos de balanceo consulta el Manual de Configuración de HAProxy.

En caso de que el servidor actualmente utilizado por un usuario esté caído, la conexión se cerrará. El usuario tendrá que reconectarse y HAProxy abrirá una nueva conexión a la base de datos en el servidor que esté activo y tenga la menor cantidad de conexiones.


HAProxy

Todos los demás sistemas de gestión de bases de datos pueden configurarse de la misma manera, solo es necesario cambiar los puertos.

Configurando HAProxy como un Balanceador de Carga para el Servicio Backend de DataSunrise (GUI)

En esta sección, consideraremos los pasos para realizar el balanceo de carga para tres proxies de DataSunrise en modo de Alta Disponibilidad en las siguientes direcciones: 192.168.1.100, 192.168.1.101, 192.168.1.102.

Instala HAProxy en un servidor separado y abre /etc/haproxy/haproxy.cfg con cualquier editor de texto. Especifica la configuración del oyente de la siguiente manera:

listen af_gui_balancer         timeout client 50000         timeout server 50000         mode http         bind *:11000 ssl crt /home/anon/proxy.pem         redirect scheme https if !{ ssl_fc }         cookie HA_BACKEND_ID insert         balance leastconn         server node0 192.168.1.100:11000 ssl verify none check cookie 0         server node1 192.168.1.101:11000 ssl verify none check cookie 1         server node2 192.168.1.102:11000 ssl verify none check cookie 2

Desglose de la Configuración

Tiempo de Inactividad del Usuario

timeout client <timeout> – establece el máximo período de inactividad del usuario después del cual la conexión se cerrará (milisegundos).
timeout server <timeout> – establece el máximo período de inactividad del servidor después del cual la conexión se cerrará (milisegundos).

Protocolo de la Instancia

mode { tcp|http } – define el protocolo de la instancia. En nuestro caso, el balanceo se realizará a nivel del protocolo HTTP. La solicitud del cliente será analizada en profundidad antes de conectar con cualquier servidor. Cualquier solicitud que no cumpla con la RFC será rechazada. El filtrado, procesamiento y conmutación de capa 7 serán posibles.
HAProxy también puede balancear a nivel de TCP, pero las especificidades de las aplicaciones web que tienen una condición de sesión de usuario hacen difícil realizar un balanceo de carga adecuado sin la oportunidad de analizar o modificar ciertas partes de las consultas HTTP. Usamos el modo http porque necesitamos que HAProxy asigne y lea una cookie de persistencia que permitirá a HAProxy determinar a qué servidor debe dirigirse el usuario. Así, el servidor web operará correctamente con la sesión del usuario.

Dirección y Puerto de Escucha

bind [<address>]:<port_range> – la opción bind define una o varias direcciones y puertos de escucha en un frontend. <address> puede ser un nombre de host, dirección IPv4, dirección IPv6 o ‘*’. ‘*’ significa que el puerto estará abierto en todas las direcciones IP disponibles.
ssl crt /home/anon/proxy.pem – La opción ssl habilita el descifrado SSL, lo que requiere certificados. Los certificados y claves se tomarán del archivo /home/anon/proxy.pem. Los usuarios del sistema deben tener acceso de lectura al archivo. El contenido del archivo pem debe estar en el siguiente formato:

-----BEGIN CERTIFICATE-----
HLDXjCDSAkY...
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
HLDEpgIBDSKC....
-----END RSA PRIVATE KEY-----

Reenvío

redirect scheme https if !{ ssl_fc } la siguiente configuración reenvía todas las conexiones HTTP de texto claro en el puerto 11000 al esquema HTTPS. Así, los usuarios no podrán usar el servicio de administración sin cifrado.

Cookie Persistente

cookie HA_BACKEND_ID insert. La opción dada define la cookie persistente. Después de la primera solicitud, HAProxy envía la cookie al usuario. Según el valor de la cookie, HAProxy determinará qué nodo del servidor debe usarse para las consultas posteriores del usuario.
HA_BACKEND_ID es el nombre de la cookie.
La opción insert define que HAProxy asignará esos valores de cookie después de la primera consulta. El valor de la cookie persistente se usa hasta que el usuario borre las cookies del navegador o finalice la sesión.

Las tres últimas líneas definen las instancias.

node0 es un nombre arbitrario de la instancia utilizado solo para identificación en términos de HAProxy.
192.168.1.100:11000 – la dirección y puerto de la instancia.
ssl – define que la instancia acepta conexiones https.
verify [none | optional | required]. Por defecto, la configuración se establece en none, lo que significa que el certificado SSL enviado por el servidor no será verificado, es decir, HAProxy confiará en el certificado del servicio backend de DataSunrise.
La opción check habilita el mecanismo de verificación de salud. Antes de reenviar la consulta del cliente al nodo, HAProxy verifica si el nodo está disponible.
cookie <value> – el parámetro establece el valor de la cookie asignada al servidor.

Guarda los cambios de configuración y vuelve a iniciar HAProxy.

Conclusión

Como resultado, tendremos la configuración que permite a HAProxy funcionar de la siguiente manera:

  • Un usuario se conecta a HAProxy.
  • HAProxy realiza una verificación de salud de los servidores.
  • HAProxy redirige al usuario al nodo del servidor con la menor carga, lo que realmente equilibra la carga.

HAProxy opera en Linux y Solaris. Para el sistema operativo Windows, prueba la solución más avanzada Nginx.

Si necesitas asistencia mientras configuras HAProxy o DataSunrise en modo de alta disponibilidad, no dudes en contactarnos. Nuestros ingenieros de soporte te ayudarán.

Siguiente

Seguridad de Datos IoT: Desafíos y Soluciones Exploradas

Seguridad de Datos IoT: Desafíos y Soluciones Exploradas

Más información

¿Necesita la ayuda de nuestro equipo de soporte?

Nuestros expertos estarán encantados de responder a sus preguntas.

Countryx
United States
United Kingdom
France
Germany
Australia
Afghanistan
Islands
Albania
Algeria
American Samoa
Andorra
Angola
Anguilla
Antarctica
Antigua and Barbuda
Argentina
Armenia
Aruba
Austria
Azerbaijan
Bahamas
Bahrain
Bangladesh
Barbados
Belarus
Belgium
Belize
Benin
Bermuda
Bhutan
Bolivia
Bosnia and Herzegovina
Botswana
Bouvet
Brazil
British Indian Ocean Territory
Brunei Darussalam
Bulgaria
Burkina Faso
Burundi
Cambodia
Cameroon
Canada
Cape Verde
Cayman Islands
Central African Republic
Chad
Chile
China
Christmas Island
Cocos (Keeling) Islands
Colombia
Comoros
Congo, Republic of the
Congo, The Democratic Republic of the
Cook Islands
Costa Rica
Cote D'Ivoire
Croatia
Cuba
Cyprus
Czech Republic
Denmark
Djibouti
Dominica
Dominican Republic
Ecuador
Egypt
El Salvador
Equatorial Guinea
Eritrea
Estonia
Ethiopia
Falkland Islands (Malvinas)
Faroe Islands
Fiji
Finland
French Guiana
French Polynesia
French Southern Territories
Gabon
Gambia
Georgia
Ghana
Gibraltar
Greece
Greenland
Grenada
Guadeloupe
Guam
Guatemala
Guernsey
Guinea
Guinea-Bissau
Guyana
Haiti
Heard Island and Mcdonald Islands
Holy See (Vatican City State)
Honduras
Hong Kong
Hungary
Iceland
India
Indonesia
Iran, Islamic Republic Of
Iraq
Ireland
Isle of Man
Israel
Italy
Jamaica
Japan
Jersey
Jordan
Kazakhstan
Kenya
Kiribati
Korea, Democratic People's Republic of
Korea, Republic of
Kuwait
Kyrgyzstan
Lao People's Democratic Republic
Latvia
Lebanon
Lesotho
Liberia
Libyan Arab Jamahiriya
Liechtenstein
Lithuania
Luxembourg
Macao
Madagascar
Malawi
Malaysia
Maldives
Mali
Malta
Marshall Islands
Martinique
Mauritania
Mauritius
Mayotte
Mexico
Micronesia, Federated States of
Moldova, Republic of
Monaco
Mongolia
Montserrat
Morocco
Mozambique
Myanmar
Namibia
Nauru
Nepal
Netherlands
Netherlands Antilles
New Caledonia
New Zealand
Nicaragua
Niger
Nigeria
Niue
Norfolk Island
North Macedonia, Republic of
Northern Mariana Islands
Norway
Oman
Pakistan
Palau
Palestinian Territory, Occupied
Panama
Papua New Guinea
Paraguay
Peru
Philippines
Pitcairn
Poland
Portugal
Puerto Rico
Qatar
Reunion
Romania
Russian Federation
Rwanda
Saint Helena
Saint Kitts and Nevis
Saint Lucia
Saint Pierre and Miquelon
Saint Vincent and the Grenadines
Samoa
San Marino
Sao Tome and Principe
Saudi Arabia
Senegal
Serbia and Montenegro
Seychelles
Sierra Leone
Singapore
Slovakia
Slovenia
Solomon Islands
Somalia
South Africa
South Georgia and the South Sandwich Islands
Spain
Sri Lanka
Sudan
Suriname
Svalbard and Jan Mayen
Swaziland
Sweden
Switzerland
Syrian Arab Republic
Taiwan, Province of China
Tajikistan
Tanzania, United Republic of
Thailand
Timor-Leste
Togo
Tokelau
Tonga
Trinidad and Tobago
Tunisia
Turkey
Turkmenistan
Turks and Caicos Islands
Tuvalu
Uganda
Ukraine
United Arab Emirates
United States Minor Outlying Islands
Uruguay
Uzbekistan
Vanuatu
Venezuela
Viet Nam
Virgin Islands, British
Virgin Islands, U.S.
Wallis and Futuna
Western Sahara
Yemen
Zambia
Zimbabwe
Choose a topicx
Información General
Ventas
Servicio al Cliente y Soporte Técnico
Consultas sobre Asociaciones y Alianzas
Información general:
info@datasunrise.com
Servicio al Cliente y Soporte Técnico:
support.datasunrise.com
Consultas sobre Asociaciones y Alianzas:
partner@datasunrise.com