Uso de balanceadores de carga compartidos (nivel avanzado)
Escenarios
Tiene dos aplicaciones web que se despliegan en ECS separados pero que utilizan el mismo nombre de dominio para el acceso. Puede establecer diferentes URLs para procesar solicitudes.
Para reenviar solicitudes basadas en URL, debe crear un balanceador de carga, agregar un oyente de HTTP o de HTTPS y agregar políticas de reenvío para especificar los URL.
Un oyente de HTTP se usa como ejemplo para describir cómo enrutar solicitudes desde dos URLs (/ELB01 y /ELB02) del mismo nombre de dominio (www.example.com) a diferentes servidores backend.
Requisitos previos
Para garantizar las comunicaciones normales entre el balanceador de carga y los servidores backend, debe comprobar las reglas de grupo de seguridad y las reglas de ACL de red configuradas para los servidores backend.
Cuando los servidores backend reciben solicitudes del balanceador de carga, las direcciones IP de origen se traducen en 100.125.0.0/16.
- Las reglas de grupo de seguridad deben permitir el tráfico desde 100.125.0.0/16 a los servidores backend.
- Las reglas de ACL de red son opcionales para las subredes. Si se configuran reglas de ACL de red para la subred backend del balanceador de carga, las reglas de ACL de red deben permitir el tráfico desde la subred backend del balanceador de carga a los servidores backend.
Si Transfer Client IP Address está habilitado para los oyentes TCP o UDP, las reglas de ACL de red y las reglas de grupo de seguridad no tendrán efecto. Puede usar el control de acceso para limitar qué direcciones IP pueden acceder al oyente.
Creación de ECS
Los ECS se utilizan como servidores backend para procesar solicitudes. Cada ECS necesita una EIP para acceder a Internet y configurar la aplicación en el ECS.
- Inicie sesión en la consola de gestión.
- En la esquina superior izquierda de la página, haga clic en y seleccione la región y el proyecto deseados.
- Pase el ratón sobre en la esquina superior izquierda para mostrar Service List y elija Compute > Elastic Cloud Server.
- Haga clic en Buy ECS, configure los parámetros y haga clic en Next.
La siguiente tabla enumera las especificaciones de los dos ECS.
Tabla 1 Especificaciones de ECS Concepto
Valor de ejemplo
Name
ECS01 and ECS02
OS
CentOS 7.2 64bit
vCPUs
2
Memory
4 GiB
System disk
40 GiB
Data disk
100 GiB
Bandwidth
5 Mbit/s
- Envíe su solicitud.
Despliegue de la aplicación
Despliegue Nginx en los dos ECS y edite dos páginas HTML para que una página con el mensaje "Welcome to ELB test page one!" se devuelva cuando se acceda a ECS01, y la otra página con el mensaje "Welcome to ELB test page two!" se devuelve cuando se accede a ECS02.
- Inicie sesión en los ECS.
- Instalar e iniciar Nginx.
- Ejecute el comando wget para descargar el paquete de instalación de Nginx para su sistema operativo en uso. CentOS 7.6 se usa como ejemplo aquí.
wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
- Ejecute el siguiente comando para crear el repositorio Nginx yum:
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
- Ejecute el siguiente comando para instalar Nginx:
yum -y install nginx
- Ejecute los siguientes comandos para iniciar Nginx y configurar la habilitación automática de Nginx al iniciar ECS:
systemctl start nginx systemctl enable nginx
- Ingrese http://EIP bound to the ECS en el cuadro de dirección de su navegador. Si se muestra la siguiente página, se ha instalado Nginx.
Figura 1 Nginx instalado correctamente
- Ejecute el comando wget para descargar el paquete de instalación de Nginx para su sistema operativo en uso. CentOS 7.6 se usa como ejemplo aquí.
- Modifique la página de HTML de ECS01.
Mueva el archivo index.html del directorio raíz predeterminado de Nginx /usr/share/nginx/html al directorio ELB01 y modifique el archivo para identificar el acceso a ECS01.
- Cree el directorio ELB01 y copie el archivo index.html en este directorio:
mkdir /usr/share/nginx/html/ELB01
cp /usr/share/nginx/html/index.html /usr/share/nginx/html/ELB01/
- Abra el archivo index.html.
vim /usr/share/nginx/html/ELB01/index.html
- Pulse i para entrar en el modo de edición.
- Modifique el archivo index.html para que sea el siguiente:
... <body> <h1>Welcome to <strong>ELB</strong> test page one!</h1> <div class="content"> <p>This page is used to test the <strong>ELB</strong>!</p> <div class="alert"> <h2>ELB01</h2> <div class="content"> <p><strong>ELB test (page one)!</strong></p> <p><strong>ELB test (page one)!</strong></p> <p><strong>ELB test (page one)!</strong></p> </div> </div> </div> </body>
- Pulse Esc para salir del modo de edición. A continuación, escriba :wq para guardar la configuración y salir del archivo.
- Cree el directorio ELB01 y copie el archivo index.html en este directorio:
- Modifique la página HTML de ECS02.
Mueva el archivo index.html del directorio raíz predeterminado de /usr/share/nginx/html Nginx al directorio ELB02 y modifique el archivo para identificar el acceso a ECS02.
- Cree el directorio ELB02 y copie el archivo index.html en este directorio:
mkdir /usr/share/nginx/html/ELB02
cp /usr/share/nginx/html/index.html /usr/share/nginx/html/ELB02/
- Abra el archivo index.html.
vim /usr/share/nginx/html/ELB02/index.html
- Pulse i para entrar en el modo de edición.
- Modifique el archivo index.html para que sea el siguiente:
... <body> <h1>Welcome to <strong>ELB</strong> test page two!</h1> <div class="content"> <p>This page is used to test the <strong>ELB</strong>!</p> <div class="alert"> <h2>ELB02</h2> <div class="content"> <p><strong>ELB test (page two)!</strong></p> <p><strong>ELB test (page two)!</strong></p> <p><strong>ELB test (page two)!</strong></p> </div> </div> </div> </body>
- Pulse Esc para salir del modo de edición. A continuación, escriba :wq para guardar la configuración y salir del archivo.
- Cree el directorio ELB02 y copie el archivo index.html en este directorio:
- Utilice su navegador para acceder a http://ECS01 EIP/ELB01/ y http://ECS02 EIP/ELB02/ para verificar que Nginx se ha desplegado.
Si se muestran las páginas HTML modificadas, se ha desplegado Nginx.
- Página de HTML de ECS01
Figura 2 Nginx desplegado correctamente en ECS01
- Página de HTML de ECS02
Figura 3 Nginx desplegado correctamente en ECS02
- Página de HTML de ECS01
Creación de un balanceador de carga
El balanceador de carga necesita una EIP para acceder a la aplicación desplegada en los ECS por Internet. Puede determinar si desea vincular una EIP al balanceador de carga en función de sus requisitos. Para obtener más información, consulte Equilibrio de carga en una red pública o privada.
- En la esquina superior izquierda de la página, haga clic en y seleccione la región y el proyecto deseados.
- Pase el ratón sobre en la esquina superior izquierda para mostrar Service List y elija Networking > Elastic Load Balance.
- Haga clic en Buy Elastic Load Balancer y, a continuación, configure los parámetros.
Figura 4 Comprar balanceador de carga elástica
- Haga clic en Next.
- Confirme la configuración y envíe su solicitud.
- Vea el balanceador de carga recién creado en la lista de balanceadores de carga.
Adición de un oyente
Agregue un oyente al balanceador de carga creado. Cuando agregue el oyente, cree un grupo de servidores backend, configure una comprobación de estado y agregue los dos ECS al grupo de servidores backend creado.
- Pase el ratón sobre en la esquina superior izquierda para mostrar Service List y elija Networking > Elastic Load Balance.
- Busque el balanceador de carga creado y haga clic en su nombre.
- En Listeners, haga clic en Add Listener.
- Configure los parámetros de la siguiente manera:
- Name: Introduzca un nombre, por ejemplo, listener-HTTP.
- Frontend Protocol: Seleccione un protocolo, por ejemplo, HTTP.
- Frontend Port: Ingrese un puerto, por ejemplo, 80.
- Cree un grupo de servidores backend, configure una comprobación de estado y haga clic en Finish.
- Grupo de servidores backend
- Name: Introduzca un nombre, por ejemplo, server_group-ELB.
- Load Balancing Algorithm: Seleccione un algoritmo que el balanceador de carga utilizará para enrutar solicitudes, por ejemplo, Weighted round robin.
- Comprobación de estado
- Protocol: Seleccione un protocolo para que el balanceador de carga realice comprobaciones de estado en los servidores backend. Si el balanceador de carga utiliza TCP, HTTP o HTTPS para recibir solicitudes, el protocolo de comprobación de estado puede ser TCP o HTTP. Aquí usamos HTTP como ejemplo. Tenga en cuenta que el protocolo no se puede cambiar después de agregar el oyente.
- Domain Name: Ingrese un nombre de dominio que se utilizará para las comprobaciones de estado, por ejemplo, www.example.com.
- Health Check Port: Ingrese un puerto para que el balanceador de carga realice comprobaciones de estado en servidores backend, por ejemplo, 80.
- Grupo de servidores backend
Adición de una política de reenvío
- Busque el oyente recién agregado y haga clic en Add/Edit Forwarding Policy en la columna Forwarding Policies.
- Haga clic en Add Forwarding Policy y configure una política de reenvío.
- Name: Ingrese un nombre de política de reenvío, por ejemplo, forwarding_política-ELB01.
- Domain name: Ingrese un nombre de dominio que se utilizará para reenviar las solicitudes, por ejemplo, www.example.com. El nombre de dominio de la solicitud debe coincidir exactamente con el especificado en la política de reenvío.
- URL: También puede especificar un URL para reenviar las solicitudes, por ejemplo, /ELB01/.
- URL matching rule: Seleccione una regla para hacer coincidir la cadena de URL especificada con el URL de la solicitud. Hay tres opciones disponibles: Exact match, Prefix match y Regular expression match. Exact match tiene la máxima prioridad y Regular expression match la más baja. Seleccione Exact match aquí.
- Action: Seleccione Forward to a backend server group.
- Backend Server Group: Seleccione Create Backend Server Group.
- Cree un grupo de servidores backend y configure una comprobación de estado.
- Grupo de servidores backend
- Name: Introduzca un nombre, por ejemplo, server_group-ELB01.
- Load Balancing Algorithm: Seleccione un algoritmo que el balanceador de carga utilizará para enrutar solicitudes, por ejemplo, Weighted round robin.
- Comprobación de estado
- Protocol: Seleccione un protocolo para que el balanceador de carga realice comprobaciones de estado en los servidores backend. Si el balanceador de carga utiliza TCP, HTTP o HTTPS para recibir solicitudes, el protocolo de comprobación de estado puede ser TCP o HTTP. Aquí usamos HTTP como ejemplo. Tenga en cuenta que el protocolo no se puede cambiar después de agregar el oyente.
- Domain Name: Ingrese un nombre de dominio que se utilizará para las comprobaciones de estado, por ejemplo, www.example.com.
- Health Check Port: Ingrese un puerto para que el balanceador de carga realice comprobaciones de estado en servidores backend, por ejemplo, 80.
Figura 6 Configuración de una comprobación de estado
- Grupo de servidores backend
- Haga clic en el nombre del grupo de servidores backend configurado para la política de reenvío recién agregada.
- En la ficha Backend Servers, haga clic en la ficha Backend Servers y haga clic en Add.
- Seleccione el servidor que desea agregar, establezca el puerto de backend y haga clic en Finish.
- Servidor backend: ECS01
- Puerto backend: configúrelo en 80. Los servidores backend usarán este puerto para comunicarse con el balanceador de carga.
- Repita los pasos anteriores para agregar otra política de reenvío, cree un grupo de servidores backend y agregue ECS02 al grupo de servidores backend.
Verificación del equilibrio de carga
Después de configurar el balanceador de carga, puede acceder al nombre de dominio o al URL especificada para comprobar si los dos ECS son accesibles.
- Modifique el archivo C:\Windows\System32\drivers\etc\hosts en su PC para asignar el nombre de dominio al EIP del balanceador de carga.
Vea el balanceador de carga de EIP en la página Summary del balanceador de carga.Figura 7 Archivo hosts en su PC
- En la CLI de su PC, ejecute el siguiente comando para comprobar si el nombre de dominio está asignado al EIP del balanceador de carga:
Si se devuelven paquetes de datos, el nombre de dominio se ha asignado al EIP del balanceador de carga.
- Utilice su navegador para acceder a http://www.example.com/ELB01/. Si se muestra la página siguiente, el balanceador de carga ha enrutado la solicitud a ECS01.
Figura 8 Acceso a ECS01
ELB01/ indica que se accede al directorio predeterminado llamado ECS01 mientras que ELB01 indica el nombre del archivo. Por lo tanto, se debe conservar la barra (/) que sigue a ELB01.
- Utilice su navegador para acceder a http://www.example.com/ELB02/. Si se muestra la página siguiente, el balanceador de carga ha enrutado la solicitud a ECS02.
Figura 9 Acceso a ECS02