Red de conocimiento del abogados - Preguntas y respuestas jurídicas - ¿Cómo configurar el equilibrio de carga de Redis usando nginx?

¿Cómo configurar el equilibrio de carga de Redis usando nginx?

Todos encontraremos un problema durante la operación del proyecto. Cuando el proyecto necesite actualizarse, es posible que debamos apagar temporalmente el servidor para actualizar. Pero puede haber algunas situaciones:

1. El usuario todavía está operando y se ve obligado a finalizar (podemos mirar el registro y actualizarlo cuando nadie está operando, pero siempre existe la posibilidad)

2. Los usuarios desconocidos pueden preguntarse si el sitio web ha sido atacado, lo que reduce su confianza en el sitio web y provoca la pérdida de algunos clientes potenciales. Esto es especialmente perjudicial para las empresas financieras de Internet.

Después de verificar cierta información, decidí usar Tomcat + Nginx + Redis para lograr el equilibrio de carga y compartir sesiones. Registraré mi proceso de práctica a continuación. Si hay algún error o deficiencia, no dude en señalarlo. Si no le gusta, no me critique.

1. Breve introducción y activación de Nginx

Nginx es un servidor proxy inverso y HTTP ligero y de alto rendimiento. El llamado proxy inverso significa que cuando el usuario inicia una solicitud de acceso, el servidor proxy la recibe, luego reenvía la solicitud al servidor formal y devuelve los datos procesados ​​por el servidor formal al cliente. El servidor se comporta como un servidor. Esto parece ser un paso adicional y un poco problemático, pero de hecho tiene muchos beneficios, que reflejaré en la demostración a continuación.

Primero vamos al sitio web oficial de Nginx para descargar Nginx. Estoy en mi propia computadora, así que, por supuesto, descargué la versión de Windows. Después de la descarga, simplemente colóquelo directamente en un disco, no se requiere instalación. A continuación, abrimos cmd, ingresamos al directorio nginx e ingresamos start nginx.

Podemos ver una ventana parpadeando, indicando que nginx se ha iniciado y podemos encontrar su proceso en el administrador de tareas.

Ahora ingresamos a localhost en el navegador. Puede ver que aparece una página. Aunque es un poco tosca, de hecho es la página de bienvenida de nginx, al igual que la página de bienvenida de locahost:8080 que Tomcat acaba de iniciar.

2. Utilice Nginx para implementar el proxy inverso.

Ahora construimos un proyecto maven basado en el marco SpringMVC + Spring + Mybaties. El proceso de construcción no se describirá en detalle. La función es muy simple, solo necesita poder saltar a una página. Por supuesto, también se pueden usar otros marcos.

Ejecute la demostración. Mi puerto Tomcat es 8080. Ingrese localhost:8080 en el navegador y aparecerá nuestra página.

En este momento, todavía accedemos al servidor Tomcat directamente. Ahora quiero acceder a Tomcat a través de nginx, es decir, al ingresar a localhost se mostrará nuestra página de demostración.

Esto requiere que modifiquemos el archivo de configuración principal de nginx, el archivo nginx.conf en la carpeta conf en su directorio, luego primero debemos comprender la función de algunos nodos en el archivo.

worker_processes: el número de procesos de trabajo, múltiples configuraciones son posibles

worker_connections: el número máximo de conexiones para un solo proceso

servidor: cada servidor es equivalente a un servidor proxy

lister: puerto de escucha, predeterminado 80

server_name: el nombre de dominio del servicio actual, puede haber varios, separados por espacios (somos locales, por lo que es localhost)

ubicación: indica la ruta coincidente. En este momento, / está configurado para indicar que todas las solicitudes coinciden aquí

índice: cuando no se especifica la página de inicio, se especifica. El archivo se seleccionará de forma predeterminada. Varios se pueden separar con espacios.

proxy_pass: las solicitudes se redirigen a una lista de servidores personalizada

nombre ascendente{ }: nombre del clúster de servidores

<. p>Después de conocer la función del nodo, sabemos lo que necesitamos modificar. La parte del servidor en el archivo, este es su código original, eliminé su parte de comentario.

Ahora podemos entender por qué al ingresar a localhost,

accede a su página de bienvenida, index.html.

Hagamos algunas modificaciones menores a este código. Eso es para redirigir la solicitud al servidor que definimos.

Luego ingrese el comando nginx -s reload en cmd para reiniciar nginx.

Después de reiniciar, ingresamos nuevamente a localhost y podemos ver que la página a la que salta es nuestra demo.

En este punto, el proxy inverso se ha completado, por lo que todas las solicitudes deben pasar por el servidor proxy para acceder al servidor oficial, lo que puede proteger la seguridad del sitio web hasta cierto punto.

3. Utilice Nginx para lograr el equilibrio de carga

El equilibrio de carga significa que el servidor proxy distribuye las solicitudes recibidas a cada servidor de manera equilibrada.

Las ventajas del equilibrio de carga pueden no ser obvias cuando el número de visitas o la concurrencia es pequeña, sin mencionar el nivel de visitas y la alta concurrencia de Taobao Double 11 y la obtención de boletos del Ministerio de Ferrocarriles, que es. el sitio web promedio. Durante las actividades de compra urgentes, también ejercerá mucha presión sobre el servidor y puede provocar que el servidor falle. El equilibrio de carga puede reducir significativamente o incluso eliminar esta situación. Hablemos de cómo implementarlo.

En primer lugar, abramos un servidor tomcat. Distingámoslo aquí y llamémoslo tomcat2. El original se llama tomcat1. Copie el proyecto en tomcat1 a tomcat2 y modifique ligeramente el texto en la página para distinguir a qué tomcat se distribuirá nuestra solicitud más adelante. El puerto tomcat2 aquí es 8081. Ingrese localhost:8081 en el navegador.

El servidor está listo. Necesitamos definir un clúster de servidores fuera del servidor, usando la etiqueta upstream mencionada anteriormente. El nombre del clúster de servidores es prueba.

Al mismo tiempo, necesitamos modificar el servidor y transferir la ruta dirigida a su clúster de servidores.

Reinicie nginx, ingrese localhost en el navegador, actualice varias veces y podrá ver las dos páginas alternando.

Con ello se consigue el equilibrio de la deuda. Supongamos que uno de los gatos cuelga mientras nuestro servidor se está ejecutando y el otro aún está accesible. Al actualizar, también puede cerrar solo uno de ellos primero y actualizar uno por uno. Además, puede aliviar eficazmente la presión sobre el servidor, ¿no es genial?

Por supuesto, la configuración de nginx anterior está simplificada. De hecho, también podemos configurar nginx para almacenar en caché recursos estáticos, etc. Aquí discutiremos No más manifestaciones.

4. Resumen

Me tomó un tiempo, pero finalmente terminé de escribirlos uno tras otro. Los resumiré aquí.

Como servidor proxy inverso, nginx puede almacenar en caché los archivos estáticos de nuestro proyecto e implementar proxy inverso y equilibrio de carga, lo que puede reducir efectivamente la presión del servidor y puede usarse incluso si el proyecto es pequeño.

Todos también deberían haber descubierto un problema. Aunque dichas solicitudes se pueden realizar a dos gatos respectivamente, si generalmente es sin verificación de identidad u otros métodos de autenticación, está bien, pero si esto sucede Situación similar:

Iniciamos sesión en tomcat1. En este momento, la sesión de usuario ciertamente existe en tomcat1 y la solicitud para ingresar al centro personal se producirá en tomcat2. Tomcat2 le dirá que no ha iniciado sesión, lo cual obviamente no es lo que queremos ver.

Esto implica compartir sesiones, cómo hacer que las sesiones en los dos servidores estén disponibles. Lo guardaré para la próxima vez. Como codificador, estoy bastante ocupado y puede que me lleve varios días. Además, esta vez cargué el código fuente de demostración. Lo usaré la próxima vez. La configuración de nginx no se cargará. Puede probarlo usted mismo.