Red de conocimiento informático - Material del sitio web - Explicación detallada de cómo instalar la configuración de equilibrio de carga de nginx

Explicación detallada de cómo instalar la configuración de equilibrio de carga de nginx

Equilibrio de carga

Primero, comprendamos brevemente qué es el equilibrio de carga. Para entenderlo literalmente, puede explicar que N servidores comparten la carga por igual. servidor. Una situación en la que la carga es alta y un determinado servidor está inactivo. Entonces, la premisa del equilibrio de carga es que se puede lograr mediante varios servidores, es decir, más de dos servidores son suficientes.

Entorno de prueba

Dado que no hay servidor, esta prueba aloja directamente el nombre de dominio especificado y luego instala tres CentOS en VMware.

Nombre de dominio de prueba: a.com

IP del servidor A: 192.168.5.149 (principal)

IP del servidor B: 192.168.5.27

IP del servidor C: 192.168.5.126

Ideas de implementación

Un servidor sirve como servidor principal, el nombre de dominio se resuelve directamente en un servidor (192.168.5.149) y A la carga del servidor se equilibra en el servidor B (192.168.5.27) y el servidor C (192.168.5.126).

Resolución de nombre de dominio

Dado que no es un entorno real, el nombre de dominio es solo a.com para pruebas, por lo que la resolución de a.com solo se puede configurar en los hosts. archivo.

Abrir: C:WindowsSystem32driversetchosts

Agregar

192.168.5.149 a.com al final

Guardar y salir, luego iniciar el comando modo ping Verifique a continuación para ver si la configuración es exitosa

En la captura de pantalla, a.com se resolvió exitosamente en 192.168.5.149IP

Configuración de un servidor nginx.conf

Abra nginx.conf. La ubicación del archivo está en el directorio conf del directorio de instalación de nginx.

En {

servidor 192.168.5.126: 80;

servidor 192.168.5.27

}

<; p>servidor{

escuchar 80;

nombre_servidor a.com;

ubicación / {

proxy_pass

proxy_set_header Host $host

proxy_set_header X-Real-IP $remote_addr

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for

}

}

Guarde y reinicie nginx

Configuración de nginx.conf del servidor B y C

Abra nginx.confi, en

<; p > index index.html;

root /data0/htdocs/www;

}

Guardar y reiniciar nginx

Prueba

Al acceder a a.com, para distinguir a qué servidor se redirige para su procesamiento, escribí un archivo index.html con diferentes contenidos en los servidores B y C respectivamente para hacer una distinción.

Abra el navegador para acceder a.com. Actualizar y encontrará que todas las solicitudes son distribuidas por el servidor principal (192.168.5.149) al servidor B (192.168.5.27) y al servidor C (192.168.5.126). ), logrando un efecto de equilibrio de carga.

Página de procesamiento del servidor B

Página de procesamiento del servidor C

¿Qué pasa si uno de los servidores deja de funcionar?

Cuando un servidor cae, ¿se verá afectado el acceso?

Primero echemos un vistazo al ejemplo. Según el ejemplo anterior, supongamos que el servidor C de la máquina 192.168.5.126 está inactivo (ya que es imposible simular el tiempo de inactividad, apagué el servidor C). ) y luego visitarlo nuevamente.

Resultados del acceso:

Descubrimos que, aunque el servidor C (192.168.5.126) estaba inactivo, el acceso al sitio web no se vio afectado. De esta manera, no tendrá que preocuparse por arrastrar todo el sitio hacia abajo porque una determinada máquina está inactiva en modo de equilibrio de carga.

¿Qué pasa si b.com también necesita configurar el equilibrio de carga?

Es muy sencillo, igual que la configuración de a.com. De la siguiente manera:

Supongamos que la IP del servidor principal de b.com es 192.168.5.149 y que la carga está equilibrada entre las máquinas 192.168.5.150 y 192.168.5.151

Ahora resuelva el dominio. nombre b.com a 192.168.5.149IP.

Agregue el siguiente código al nginx.conf del servidor principal (192.168.5.149):

upstream b.com {

servidor 192.168.5.150: 80 ;

servidor 192.168.5.151: 80;

}

servidor{

escuchar

nombre_servidor; b.com;

ubicación / {

proxy_pass

proxy_set_header Host $host

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for

}

}

Guardar y reiniciar nginx

en 192.168. Configure nginx en las máquinas 5.150 y 192.168.5.151, abra nginx.conf y agregue el siguiente código al final:

server{

listening

;

nombre_servidor b. com;

índice index.html;

raíz /data0/htdocs/www; Guarde y reinicie nginx

Después de completar los siguientes pasos, puede implementar la configuración de equilibrio de carga de b.com.

¿El servidor principal no puede proporcionar servicios?

En los ejemplos anteriores, hemos aplicado el equilibrio de carga del servidor principal a otros servidores, por lo que se puede agregar el servidor principal a la lista de servidores, de modo que un servidor no se desperdicie y se use exclusivamente. como servidor? función de reenvío, pero también participa en la prestación de servicios.

Tres servidores en el caso anterior:

IP del servidor A: 192.168.5.149 (principal)

IP del servidor B: 192.168.5.27

IP del servidor C: 192.168.5.126

Resolvemos el nombre de dominio al servidor A y luego lo reenviamos al servidor B y al servidor C desde el servidor A. Entonces el servidor A solo realiza una función de reenvío. También se proporcionan servicios del sitio A del servidor.

Analicémoslo primero. Si agrega el servidor principal al flujo ascendente, pueden ocurrir las dos situaciones siguientes:

1. El servidor principal reenvía a otras IP y otras IP al servidor. lo maneja normalmente;

2. El servidor principal lo reenvía a su propia IP y luego va al servidor principal para asignar IP. Si siempre se asigna a la máquina local, provocará un bucle infinito. .

¿Cómo solucionar este problema? Debido a que el puerto 80 se ha utilizado para monitorear el procesamiento de equilibrio de carga, el puerto 80 ya no se puede usar en este servidor para procesar solicitudes de acceso a a.com y se debe usar uno nuevo. Entonces agregamos el siguiente código al nginx.conf del servidor principal:

server{

listening

server_name a.com; p> index index.html;

root /data0/htdocs/www;

}

Reinicie nginx e ingrese a.com: 8080 en el navegador para prueba a ver si puedes acceder a él. Se puede acceder al resultado normalmente

Dado que se puede acceder normalmente, podemos agregar el servidor principal al flujo ascendente, pero es necesario cambiar el puerto, como se muestra en el siguiente código:

upstream a.com {

servidor 192.168.5.126: 80;

servidor 192.168.5.27:

servidor 127.0.0.1: 8080; p>

}

Dado que aquí puede agregar la IP del servidor principal 192.168.5.149 o 127.0.0.1, ambas significan acceso a usted mismo.

Reinicie Nginx y luego visite a.com para ver si se asignará al servidor principal.