Cómo crear equilibrio de carga de capa 4 para el servidor de aplicaciones de WordPress en ubuntu 14.0
Si solo está ejecutando una única aplicación de servidor web, entonces el equilibrio de carga de Capa 4 será más apropiado. Si su entorno es más complejo (por ejemplo, desea ejecutar WordPress y un servidor web estático en diferentes servidores a través de un único portal), es posible que desee centrarse en el equilibrio de carga de la capa de aplicación (capa 7).
Este artículo utiliza WordPress como ejemplo, pero los conceptos generales se pueden aplicar a aplicaciones web sin estado con equilibrio de carga.
Conocimientos preliminares
Antes de continuar con este tutorial, primero debe completar el tutorial sobre cómo configurar un sitio web de WordPress con un servidor de base de datos independiente (o seguir pasos similares): Cómo configurar crear una base de datos remota para optimizarla utilizando el rendimiento del sitio web MYSQL.
Después de completar el tutorial sobre cómo configurar WordPress con aplicaciones web y servidores de bases de datos separados, deberías tener dos VPS. Dado que estamos tratando con varios VPS, a modo de referencia nombraremos estos dos VPS:
wordpress-1: Su servidor de aplicaciones web WrodPress
mysql- 1: Su servidor Mysql
Ahora, una vista abstracta de su entorno se ve así:
Además de su entorno actual, necesitaremos dos VPS adicionales para completar este tutorial. Los llamamos:
wordpress-2: Segundo servidor de aplicaciones web de WordPress
haproxy-www: Servidor HAProxy para equilibrio de carga
Si no estás familiarizado con el Conceptos básicos o datos de equilibrio de carga, como equilibrio de carga de cuatro capas o fondo o ACL, aquí hay un artículo que explica estos conceptos básicos: Introducción a HAProxy y conceptos de equilibrio de carga (Nota del traductor: se puede encontrar en Baidu).
Nuestro objetivo
En última instancia, queremos tener un entorno donde:
Es decir, sus usuarios acceden al sitio web de WordPress a través del servidor HAProxy, y HAProxy El La carga del servidor equilibra las solicitudes de los usuarios al servidor de aplicaciones de WordPress en forma circular. Ambos servidores de aplicaciones de WordPress (o más, si lo prefiere) solicitarán la base de datos MYSQL.
Instantánea del entorno actual
Opcional: es posible que desees crear una instantánea del entorno actual antes de continuar con este tutorial. El propósito de crear instantáneas en este tutorial es doble:
Si se produce un error, puede volver a un entorno de trabajo
Copiar el servidor original de una sola vez sin tener que reinstalar y configurar PHP y Nginx
Nota: Crear una instantánea del entorno requiere apagar el VPS brevemente.
Realice instantáneas de wordpress-1 y mysql-1. Tome una instantánea de ambos VPS.
Ahora que tenemos la instantánea, podemos continuar construyendo el resto del entorno.
Crear un segundo servidor de aplicaciones web
Ahora, necesitamos crear un segundo VPS para descargar el servidor de aplicaciones original.
Hay dos opciones:
Crear un nuevo VPS a partir de una instantánea anterior de wordpress-1
Crear un nuevo VPS desde cero y usar el mismo software que wordpress-1 y Configurar para configurar arriba
Cualquiera que sea el método que utilice, asegúrese de que esté seleccionado "Red personal" si la red está disponible. Todos los VPS de este tutorial requieren una red personal.
Si la opción "Red personal" no está disponible, utilice la IP pública del VPS en lugar de la IP interna. Es importante tener en cuenta que utilizar una IP pública no es una buena opción al transferir datos confidenciales, como contraseñas de bases de datos no cifradas, entre el servidor de aplicaciones y el servidor de bases de datos, ya que esta información debe transmitirse a través de Internet.
Método 1: Crear un nuevo VPS usando instantáneas
Cree un nuevo VPS llamado wordpress-2, usando la instantánea que creó para wordpress-1.
Si eliges este método, puedes saltarte el "Método 2" e ir directamente a la sección "Sincronizar archivos de aplicaciones web".
Método 2: Crear un nuevo VPS desde cero
Este método y el "Método 1" son opcionales.
Si desea configurar un servidor wordpress-2 desde cero, en lugar de utilizar una instantánea de wordpress-1, deberá asegurarse de tener el mismo software instalado. Si olvida cómo instalar y configurar el servidor de WordPress original, puede consultar la sección "Cómo configurar un servidor web" en el capítulo "Conocimientos de preparación".
Para una referencia rápida, aquí hay una lista del software relevante y los archivos de configuración que necesita instalar o copiar:
Software:
Cliente Mysql
Nginx
PHP
Después de instalar todo este software, ejecute el siguiente comando en el servidor wordpress-2:
sudo apt-get update
sudo apt-get install mysql-client
sudo apt-get install nginx php5-fpm php5-mysql
Archivos de configuración que deben crearse o editarse:
p>/etc/php5/fpm/php.ini
/etc/php5/fpm/pool.d/www.conf
/etc/ nginx/sites-available/example.com
/etc/ nginx/sites-enabled/example.com
Después de modificar el archivo de configuración, no olvide actualizar PHP y Nginx Puede utilizar el siguiente comando:
sudo service php5-fpm restart
sudo service nginx restart
Una vez completada la instalación y configuración del nuevo servidor. , necesitamos sincronizar los archivos de la aplicación WordPress.
Sincronización de archivos de aplicaciones web
Antes de equilibrar la carga de la aplicación, debemos asegurarnos de que los archivos de la aplicación en el nuevo servidor de aplicaciones estén sincronizados con los archivos en el servidor de WordPress original. La ubicación de estos archivos también es donde instaló WordPress, así como algunos otros archivos. Además de los archivos de configuración necesarios para la ejecución de WordPress, también es necesario sincronizar los archivos cargados y los archivos de instalación de los complementos instalados a través de la interfaz de WordPress y los archivos cargados por estos complementos. En el artículo "Preparación de conocimientos", instalamos WordPress en la ruta /var/www/example.com; usaremos esta ruta en todos los ejemplos, pero deberá reemplazar esta ruta con su La ruta real donde está instalado WordPress.
Hay muchas formas de sincronizar archivos entre servidores, NFS o glusterFS son buenas opciones. Usaremos glusterFS para todas las necesidades de sincronización porque permite que cada servidor de aplicaciones almacene una copia de los archivos de la aplicación manteniendo la coherencia del sistema de archivos. Aquí hay un diagrama conceptual de nuestra solución de almacenamiento habilitada:
Si no está completamente familiarizado con glusterFS utilizado en esta sección, consulte este tutorial de GlusterFS (/community/tutorials/how-to- crear-un-grupo-de-almacenamiento-redundante-usando-glusterfs-en-servidores-ubuntu), que es la base de esta sección.
Nota: El siguiente contenido suele saltar entre los servidores wordpress-1 y wordpress-2. Asegúrese de ejecutar el comando de respuesta en el servidor correcto; de lo contrario, encontrará problemas.
Edite el archivo de host
Si tiene un DNS interno y el DNS registra la dirección IP interna del VPS, puede omitir este paso y configurar y ejecutar directamente las funciones relacionadas con glusterFS. dominio.
De lo contrario, deberá editar los archivos /etc/hosts en wordpress-1 y wordpress-2:
sudo vi /etc/hosts
Agregue el siguientes dos OK, reemplace el texto rojo con la IP respectiva del servidor de aplicaciones:
wordpress_1_private_IP wordpress-1
wordpress_2_private_IP wordpress-2
Guardar y salir.
Instale GlusterFS y configure discos redundantes
Utilice el comando apt-get para instalar el software del servidor glusterFS en wordpress-1 y wordpress-2:
sudo apt- get install glusterfs-server
Ejecute el siguiente comando en wordpress-1 para emparejar con wordpress-2:
sudo gluster peer probe wordpress-2
En wordpress Ejecute el siguiente comando en -2 para emparejar con wordpress-1:
sudo gluster peer probe wordpress-1
Para crear rutas de almacenamiento de archivos administradas por glusterFS en wordpress-1 y wordpress-2, ejecute:
sudo mkdir /gluster-storage
Cree una copia de glusterFS en wordpress-1, llamémoslo volumen1, glusterFS la almacenará en todos los servidores de aplicaciones en /gluster- para los datos almacenados. en el almacenamiento, ejecute
sudo gluster volume create volume1 replica 2 transport tcp wordpress-1:/gluster-storage wordpress-2:/gluster-storage force
El resultado esperado es el siguiente :
volumen create.volume1: éxito: inicie el volumen para acceder a los datos
Ejecute el siguiente comando nuevamente en wordpress-1 para iniciar el volumen glusterFS recién creado en el volumen1: < / p>
sudo gluster volumen inicio volumen1
El resultado esperado es el siguiente:
volumen inicio: volumen1: éxito
En wordpress-1, si usted Para ver información sobre el volumen de glusterFS que acaba de crear e iniciar, ejecute:
sudo gluster volume info
Lo que necesita saber es que actualmente hay dos "aliados" de glusterFS, uno por cada Aliado corresponde a un servidor de wordpress.
Ahora que tenemos un disco glusterFS ejecutándose, para poder usarlo para sincronizar archivos, necesitamos montar el disco.
Cargar *** Disfrute del almacenamiento
Primero cargue el sistema de archivos en wordpress-1.
En wordpress-1, modifique el archivo fstab para que el sistema de archivos ****heed pueda iniciarse aleatoriamente:
sudo vi /etc/fstab
Agregue la siguiente línea a fstab para usar el directorio /storage-pool como punto de montaje:
wordpress-1. /volume1/storage-pool glusterfs defaults,_netdev 0 0
Guardar y salir.
En wordpress-1, ahora monte el disco glusterFS en el sistema de archivos /storage_pool:
sudo mkdir /storage-pool
sudo mount /storage-pool
Después de montar *** enjoy disk/storage-pool en wordpress-1, puedes ejecutar el comando df -h para enumerar los archivos actualmente montados. A continuación, utilizaremos un proceso similar para montar el sistema de archivos ****hedge en wordpress-2.
En wordpress-2, edite fstab para iniciar aleatoriamente el sistema ****HELP:
sudo vi /etc/fstab
Agregue lo siguiente a fstab Una línea para usar el directorio /storage-pool como punto de montaje:
wordpress-2:/ volume1 /storage-pool glusterfs defaults,_netdev 0 0
En wordpress-2, Ahora monte el disco glusterFS en el sistema de archivos /storage_pool:
sudo mkdir /storage-pool
sudo mount /storage-pool
Ahora, en /storage -All Los archivos creados, modificados o eliminados en el sistema de archivos -pool se sincronizarán entre los dos servidores de WordPress, incluso si uno de los servidores está temporalmente inactivo.
Mueva los archivos de wordpress a *** Enjoy Storage
El siguiente paso es mover los archivos de wordpress de wordpress-1 a *** Enjoy Storage. Reemplace la fuente roja con sus propios valores. /var/www/example.com representa la ubicación de los archivos de wordpress (nginx también busca archivos aquí), example.com en sí es solo el directorio raíz.
Ejecute el siguiente comando en wordpress-1 para mover los archivos de wordpress a *** enjoy filesystem/storage-pool:
sudo mv /var/www/example.com/storage -pool/
sudo chown www -data:www-data /storage-pool/example.com
A continuación, es posible que desees crear un enlace simbólico que apunte a *** WordPress ubicación en el archivo de herencia:
sudo ln -s /storage-pool/example.com /var/www/example.com /var/ www/example.com.
Los archivos de WordPress se encuentran actualmente en el sistema de archivos ****heed/storage-pool, que acepta el acceso de Nginx a su ruta original /var/www/example.com.
Apunte el nuevo servidor de aplicaciones para que tenga en cuenta el almacenamiento
A continuación, señalaremos el nuevo servidor de aplicaciones para que tenga en cuenta el almacenamiento
Nuevo El servidor de aplicaciones apunta al almacenamiento ****heed
El nuevo servidor de aplicaciones apunta al almacenamiento ****heed
A continuación, vamos a crear un enlace simbólico en la nueva aplicación web. servidor que apunta a WordPress File*** Disfrute del sistema de archivos.
Si elige utilizar una instantánea para crear wordpress-2, ejecute el siguiente comando en wordpress-2:
sudo rm /var/www/example.com
sudo ln -s /storage-pool/example.com /var/ www/example.com
Si está creando un servidor wordpress-2 desde cero, ejecute el siguiente comando en wordpress-2 :
p>
sudo mkdir -p /var/www
sudo ln -s /storage-pool/example.com /var/www/example.com p>
Esto es wordpress Sincronización de archivos de aplicaciones. El siguiente paso es conseguir que el nuevo servidor wordpress-2 se conecte a la base de datos.
Crear un nuevo usuario de base de datos
Dado que Mysql usa el nombre de usuario y el host de origen para distinguir a los usuarios, necesitamos crear un nuevo usuario de WordPress para conectarnos al nuevo servidor WordPress-2.
Conéctese a la consola MYSQL en el servidor de base de datos (mysql-1):
mysql -u root -p
En la siguiente instrucción mysql, use The Los parámetros en el entorno real se reemplazan en fuente roja:
usuario de wordpress: usuario de wordpress en Mysql. Asegúrese de que coincida con un nombre de usuario existente.
wordpress2private_IP: La IP interna del servidor wordpress-2.
Contraseña: Contraseña de la base de datos Mysql del usuario de wordpress. Elimine el informe para que coincida con el nombre de usuario y la contraseña existentes.
Ejecute el siguiente comando en la consola mysql de wordpress-2:
Crear usuario 'wordpressuser'@'wordpress_2_private_IP' IDENTIFICADO POR 'contraseña';
Conceder SELECCIONAR, ELIMINAR, INSERTAR, ACTUALIZAR ENwordpress.* TO 'wordpressuser'@'wordpress_2_private_IP';
VACIAR PRIVILEGIOS;
Ahora el segundo servidor wordpress -2 podrá iniciar sesión servidor mysql mysql -1.
Aún no hay equilibrio de carga
Tenga en cuenta que, aunque hay dos servidores de aplicaciones en ejecución, no tienen equilibrio de carga porque se debe acceder a cada servidor a través de su IP externa. Queremos poder acceder a la aplicación a través de la misma URL (como /) y distribuir el tráfico entre los dos servidores.
Instalar HAProxy
Crea un nuevo VPS en la intranet, al que llamaremos haproxy-www en este tutorial.
Utilice el comando apt-get para instalar HAProxy en el servidor haproxy-www:
sudo apt-get update
sudo apt-get install haproxy p>
Necesitamos usar el script de inicio de HAProxy para iniciar y detener HAProxy:
sudo vi /etc/default/haproxy
Cambie el valor ENABLED a 1 y abra el script de inicio:
p>ENABLED=1
Guardar y salir.
HAProxy ahora se puede iniciar y detener en el servidor.
Por supuesto, ahora puedes usar comandos para controlar HAProxy. Comprobemos si se está ejecutando:
/etc/init.d$ sudo service haproxy status
Salida:
haproxy no se está ejecutando
HAProxy no se está ejecutando. Esto es correcto ya que primero debe configurarse.
Configuración de HAProxy
El archivo de configuración de HAProxy se divide en las siguientes dos partes principales:
Global: configuración de parámetros a nivel de proceso
Agente : Incluye parámetros predeterminados, de escucha, de front-end y de back-end
Configuración global
Todas las configuraciones de HAProxy deben realizarse en el servidor HAProxy haproxy-www.
Primero, copie el archivo haproxy.cfg predeterminado:
cd /etc/haproxy; sudo cp haproxy.cfg haproxy.cfg.orig
Luego, use Abra el archivo haproxy.cfg con un editor de texto:
cd /etc/haproxy; sudo cp haproxy.cfg Ahora, abra el archivo haproxy.cfg con un editor de texto:
. sudo vi /etc/haproxy/haproxy.cfg
Verás dos secciones definidas: Global y Predeterminada.
De forma predeterminada, busque las siguientes dos líneas:
modo (pero su instalación puede diferir):
cd /var/www/example .com; vi wp-config.
Busque la línea donde se encuentra "DB_NAME" agregue la siguiente configuración en la parte superior de la línea y reemplácela con rojo:
define('WP_SITEURL'; , '/community/tutorials/how-to-use-haproxy-as-a-layer-4-load-balancer-for-wordpress-application-servers-on-ubuntu-14-04)