Separación estática y dinámica de Nginx + Tomcat + alta disponibilidad mantenida

Separación estática y dinámica de Nginx + Tomcat + alta disponibilidad mantenida

Uno: separación de movimiento y estática

  • Separación estática y dinámica:
    los recursos estáticos del sitio (archivos HTML, JavaScript, CSS, img, etc.) y las aplicaciones de back-office se implementan por separado , lo que aumenta la velocidad de acceso del usuario al código estático, reduce el acceso a las aplicaciones de back-end.

  • Los recursos estáticos se implementan en Nginx y el
    proyecto en segundo plano se implementa en el servidor de aplicaciones De acuerdo con ciertas reglas, todas las solicitudes de recursos estáticos se transfieren al servidor nginx para lograr el propósito de separar dinámicas y estáticas.

  • Los recursos estáticos se implementan en la red de distribución de contenido CDN (Content Delivery Network)
    . Los archivos JavaScript, CSS e img del proyecto se almacenan en el servidor CDN. Una vez que los archivos HTML se almacenan juntos en la CDN, los recursos estáticos se pueden unificado en un servidor Es conveniente para el mantenimiento de front-end; y los usuarios pueden hacer un buen uso de las ventajas de CDN al acceder a recursos estáticos

  • La API de back-end proporciona datos y la aplicación de back-end proporciona la API
    para el procesamiento de acuerdo con la solicitud de front-end, y el resultado del procesamiento se devuelve al front-end en formato JSON. En la actualidad, la aplicación se desarrolla principalmente en la plataforma Java, por lo que el servidor de aplicaciones es principalmente el servidor Tomcat. Ahora algunas aplicaciones se desarrollan usando el nodo, y el servidor de aplicaciones también comienza a usar el servidor del nodo.

1.1 Ventajas y desventajas de la separación dinámica y estática

  • Ventajas: interfaz API orientada a servicios; desarrollo paralelo de front-end y back-end; reducir la presión sobre el servidor de back-end y aumentar la velocidad del acceso a recursos estáticos

  • Desventajas: No es propicio para el SEO de sitios web (optimización de motores de búsqueda); la cantidad de desarrollo se vuelve grande; debe considerarse cuidadosamente cuando el negocio se desarrolla a alta velocidad.

1.2 Escenarios de separación dinámica y estática

  1. El volumen de acceso a archivos estáticos es grande, la carga del servidor es alta y el problema de E / S hace que el acceso del usuario se bloquee
  2. Gran cantidad de archivos estáticos, espacio de almacenamiento del servidor insuficiente
  3. Los archivos estáticos tienen una gran cantidad de acceso de usuario y se distribuyen en varios lugares
  4. Descargas concurrentes altas

Dos: Nginx + Tomcat se da cuenta de la separación dinámica y estática

  • Debido a que Tomcat en sí no es eficiente en el procesamiento de estática, también traerá consumo de recursos, por lo que Nginx maneja la solicitud estática y Tomcat maneja la solicitud dinámica.

  • Nginx juzga si la url solicitada es un recurso estático en función de la url solicitada por el cliente. Si la url solicitada contiene jpg, png, será procesada por Nginx; si la url solicitada es .php o .jsp, se considera dinámica y reenviará el procesamiento de tomcat. Es decir, Nginx distingue el tipo de solicitud a través de url y la reenvía a diferentes servidores

  • Diagrama de estructura de red:
    Inserte la descripción de la imagen aquí

Tres, operación

3.1 Medio Ambiente

nginx1 ip: 192.168.100.10 programador maestro
nginx2 ip: 192.168.100.11 desde el programador
tomcat1 IP: 192.168.100.12
tomcat2 IP: 192.168.100.13
servidor NFS ip: 192.168.100.14
autenticación acceso cliente ip: 192.168.100.15

3.2 Configurar el servidor nfs

  1. Instalar nfs-utils rpcbind
yum -y install nfs-utils rpcbind
  1. Crea un directorio para almacenar recursos
mkdir /web1
mkdir /web2
  1. Editar recursos web compartidos de jsp
vim /web1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>	  
<html>								  
  <head>								  
    <title>tomcat1</title>					  
  </head>								  
  <body>								  
  <% out.println ("This is tomcat1 server"); %>		  
  <div>动态页面</div><br/><img src="a.jpg" />				  
  </body>								  
</html>		
:wq			
vim /web2/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>	  
<html>								  
  <head>								  
    <title>tomcat2</title>		                     //这里不同			  
  </head>								  
  <body>								  
  <% out.println ("This is tomcat2 server"); %>		  //这里不同 
  <div>动态页面</div><br/><img src="b.jpg" />	      //这里不同			  
  </body>								  
</html>	
:wq				
  1. Editar archivo de configuración
vim /etc/exports
/web1 192.168.100.12(ro)
/web2 192.168.100.13(ro)
:wq
  1. Iniciar nfs systemctl iniciar nfs
systemctl start nfs
systemctl start rpcbind

3.3 configurar tomcat

3.3.1 Configurar el entorno java

  1. Descomprimir jdk
tar zxvf jdk-8u91-linux-x64.tar.gz -C /opt
mv /opt/jdk1.8.0_91 /usr/local/java
  1. Variable de entorno PATH para agregar una ruta de Java
cd /etc/profile.d/
vim java.sh
export JAVA_HOME=/usr/local/java/                //设置java根目录
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre             //在PATH环境变量中添加java根目录下的bin子目录
  1. prueba
source java.sh
echo $PATH		 			
java -version       //查看版本

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Escriba un pequeño script Java para probar si funciona normalmente

vim test.java
public class test {
    
    
  public static void main (String[] args) {
    
    
    System.out.println("你好,世界!!!");
  }
}
执行:javac test.java   编译后生成可执行文件
测试:java test  原样输出则为成功!

Inserte la descripción de la imagen aquí

3.3.2 gato

  1. Instalar tomcat
tar zxvf apache-tomcat-8.5.16.tar.gz -C /opt/
mv apache-tomcat-8.5.16 /usr/local/tomcat8
  1. inicio y apagado de tomcat
/usr/local/tomcat8/bin/startup.sh
netstat -anpt | grep 8080
/usr/local/tomcat8/bin/shutdown.sh   //关闭tomcat
netstat -anpt | grep 8080

Inserte la descripción de la imagen aquí
3. Vincula tomcat para iniciar y cerrar el programa

ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup
ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown
  1. Cree un punto de montaje de recursos web y móntelo
mkdir /webapp1
mkdir /webapp2
mount 192.168.100.14:/web1 /webapp1
mount 192.168.100.14:/web2 /webapp2
  1. Edite el archivo de configuración server.xml de tomcat
vim /usr/local/tomcat8/conf/server.xml
<Host name="localhost" appBase="webapps"
	       unpackWARs="true" autoDeploy="true">

<Context docBase="/webapp1" path="" reloadable="false">
</Context>                                                 //添加//
</Host>
  //注释:docBase   web应用的文档基准目录
  //reloadable:值为true时,当web.xml或者class有改动的时候,都会自动reload无需重启的服务
 // path=""  指定访问路径uri  ,访问url路径下是否跟内容

3.3.3 Instalar nginx y configurar la programación

  1. Compila e instala nginx
yum -y install pcre-devel zlib-devel openssl-devel
useradd -M -s /sbin/nologin nginx
tar zxvf nginx-1.12.2 -C /opt
cd /opt/nginx-1.12.2/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx \
--with-file-aio \                 //同时提交多个io请求给内核
--with-http_stub_status_module \      //状态统计
--with-http_gzip_static_module \
--with-http_flv_module \         //支持对FLV(flash)文件的拖动播放
--with-http_ssl_module          //支持安全ssl模块
make && make install 
  1. Edite el archivo de configuración de nginx para lograr una separación dinámica y estática
vim /usr/local/nginx/conf/nginx.conf
      keepalive_timeout   65;
      #gzip on;
   添加:   upstream tomcat_server {
    
                   //添加
          server 192.168.100.12:8080 weight=1;
          server 192.168.100.13:8080 weight=1;
       }
       
       server {
    
    
           listen       80;
            ... ... 省略
          location / {
    
    
	        root html;
	        index index.html index.htm;
          }
   ######添加
             location ~ \.jsp$ {
    
                    //添加
	           proxy_pass http://tomcat_server;
             }
         }
:wq
  1. Vincular el programa de inicio de nginx
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
nginx -t
  1. Pruebe el efecto de la separación dinámica y estática. El
    navegador visita http://192.168.100.10/index.jsp
    http://192.168.100.10/index.jsp. La imagen no se muestra.
    Utilice el software de captura de paquetes para encontrar que La imagen estática de recursos se busca en el servidor nginx.
    Entonces necesitas poner recursos en nginx / usr / local / nginx / html
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí

Cuarto, nginx + mantiene alta disponibilidad

4.1 programador maestro nginx

  1. Compile e instale keepalived
tar zxvf keepalived.-2.0.13.tar.gz
yum -y install popt-devel kernel-devel openssl-devel       //编译安装所需环境
cd keepalived-2.0.13/
./configure --prefix=/
make && make install
  1. Copie el archivo init.d keepalived
cp keepalived/etc/init.d/keepalived /etc/init.d/
  1. Edite el archivo de configuración keepalived
vim /etc/keepalived/keepalived.conf
global_defs {
    
    
  notification_email {
    
    
    1391578633@qq.com
  }
  notification_email_from sns-lvs@gmail.com
  smtp_server smtp.qq.com
  smtp_connection_timeout 30
  router_id nginx_master                   //可以只设置这一个
}
vrrp_script chk_http_port {
    
    
  script "/usr/local/src/check_nginx_pid.sh"       //最后手动执行此脚本,确保它正常执行
  interval 2
  weight -20
}
vrrp_instance VI_1 {
    
    
  state MASTER
  interface ens33                 
  virtual_router_id 66           //虚拟路由编号,主从一致
  priority 110
  advert_int 1
  authentication {
    
    
	auth_type PASS
	auth_pass 1111
  }
  track_script {
    
    
  chk_http_port                        //调用脚本
  }
  virtual_ipaddress {
    
    
	192.168.100.200  
  }
}
:wq
  1. Edite el archivo de script definido
vim /usr/local/src/check_nginx_pid.sh       //检测是否开启nginx服务,并开启nginx服务
#!/bin/bash
A=`ps -C nginx --no-header | wc -l`
if [ $A -eq 0 ];  then
  /usr/local/nginx/sbin/nginx
  if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then
    exit 1
  else exit 0
  fi
else
  exit 0
fi
:wq
chmod +x /usr/local/src/check_nginx_pid.sh
  1. Inicie el servidor nginx
nginx
  1. Iniciar keepalived
systemctl start keepalived

4.2 programador esclavo nginx

La configuración es aproximadamente la misma que la del servidor principal, con solo tres diferencias

  router_id nginx_backup
  state BACKUP
  priority 105

4.3 Efecto de verificación

Visite VIP 192.168.100.200/index.jsp
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_46480020/article/details/111028050
Recomendado
Clasificación