English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Implementação de separação dinâmica e balanceamento de carga entre Nginx e Tomcat

Este artigo apresenta a implementação de separação dinâmica e estática e balanceamento de carga entre Nginx e Tomcat, onde a separação dinâmica é alcançada através do Nginx (ou Apache e outros) para lidar com pedidos de usuários de arquivos estáticos como imagens, html, enquanto o Tomcat (ou WebLogic) lida com arquivos dinâmicos como jsp, do, etc., para que, durante o acesso de páginas estáticas e dinâmicas, diferentes contêineres sejam usados para processamento.

I. Introdução ao Nginx:

O Nginx é um servidor HTTP e proxy reverso de alta performance, com alta estabilidade e suporte a implantação quente e fácil expansão de módulos. Quando há picos de acesso ou alguém iniciar conexões lentas maliciosas, também pode levar ao esgotamento frequente da memória física do servidor, troca frequente, perda de resposta e necessidade de reiniciar o servidor. O Nginx adota a tecnologia de alocação de recursos em estágios, acelera a processamento de arquivos estáticos e proxy reverso sem cache, realiza balanceamento de carga e tolerância a falhas, e pode suportar o processamento de altas taxas de acesso.

II. Instalação e Configuração do Nginx

Primeiro passo: Baixar o pacote de instalação do Nginx   http://nginx.org/en/download.html

Segundo passo: Instalar o Nginx no Linux

#tar zxvf nginx-1.7.8.tar.gz //Unzip
#cd nginx-1.7.8
#./configure --com-http_stub_status_module --com-http_ssl_module//Iniciar a página de status do servidor e o módulo HTTPS

an error indicating that the PCRE library is missing will be reported, as shown in the figure:

First, execute the third step to install PCRE, and then3Execute it, that's all

4.make && make install //Compile and install

5. Test if the installation and configuration are correct, Nginx is installed in/usr/local/nginx

#/usr/local/nginx/sbin/nginx -t, as shown in the figure:

Third step: Install PCRE on Linux

#tar zxvf pcre-8.10.tar.gz //Unzip
cd pcre-8.10
./configure
make && make install//Compile and install

Three. Nginx +Tomcat Implementation of Dynamic and Static Separation

 Dynamic and static separation means that Nginx handles the static pages (html pages) or images requested by the client, and Tomcat handles the dynamic pages (jsp pages) requested by the client, because the efficiency of Nginx in handling static pages is higher than that of Tomcat.

First step: We need to configure the Nginx file

 #vi /usr/local/nginx/conf/nginx.conf

 #user nobody; 
worker_processes 1; 
error_log logs/error.log; 
pid    logs/nginx.pid; 
events { 
  use epoll; 
  worker_connections 1024; 
{} 
http { 
  include    mime.types; 
  default_type aplicação/octet-stream; 
  log_format principal '$remote_addr - $remote_user [$time_local] "$request" ' 
           '$status $body_bytes_sent "$http_referer" ' 
           '"$http_user_agent" "$http_x_forwarded_for"'; 
  access_log logs/access.log principal; 
  sendfile    ligado; 
keepalive_timeout 65; 
gzip ligado;  
gzip_min_length 1k;  
gzip_buffers   4 16k;  
gzip_http_version 1.0;  
gzip_comp_level 2;  
gzip_types texto/puro aplicação/x-javascript texto/css aplicação/xml;  
gzip_vary ligado;  
  servidor { 
    escutar    80 padrão; 
    server_name localhost; 
    <span style="color:#ff0000;">localização ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ //Páginas estáticas são processadas pelo nginx</span> 
       {  
         root  /usr/tomcat/apache-tomcat-8081/webapps/ROOT;  
          expires   30d; //Cache no cliente30 dia 
        {}  
    error_page 404       /404.html; 
    #redirecionar páginas de erro do servidor para a página estática /50x.html 
    error_page  500 502 503 504 /50x.html; 
    location = /50x.html { 
      root  html; 
    {} 
     <span style="color:#ff0000;"> location ~ \.(jsp|do)$ {//Todas as solicitações dinâmicas de jsp são encaminhadas para o Tomcat</span> 
      <span style="color:#ff0000;"> proxy_pass http://192.168.74.129:8081; //As solicitações com sufixo jsp ou do são encaminhadas para o tomcat</span> 
      proxy_redirect off; 
      proxy_set_header Host $host;  //O servidor web backend pode usar X-Forwarded-Para obter o IP real do usuário 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-Para $proxy_add_x_forwarded_for; 
      client_max_body_size 10m;  //Número máximo de bytes de arquivo solicitado pelo cliente 
      client_body_buffer_size 128k; //Número máximo de bytes do buffer de solicitação do usuário do proxy 
       proxy_connect_timeout 90;  //Tempo de espera de conexão do nginx com o servidor backend 
       proxy_read_timeout 90;   //Tempo de resposta do servidor backend após a conexão estabelecida 
       proxy_buffer_size 4k;   //Configure o tamanho do buffer do servidor proxy (nginx) para armazenar informações de cabeçalho do usuário 
       proxy_buffers 6 32k;    //O buffer proxy_buffers, a página da web média está32Se for k ou menos, configure assim 
      proxy_busy_buffers_size 64k;//Tamanho do buffer sob alta carga (proxy_buffers*2) 
      proxy_temp_file_write_size 64k; //Defina o tamanho da pasta de cache. Se o valor for maior que este, a informação será transmitida do servidor upstream 
    {} 
  {}  
{}

Second step: In the webapps under tomcat/Create a new static page index.html under the ROOT, as shown in the figure:

Third step: Start the Nginx service

 #sbin/nginx, as shown in the figure:

Fourth step: We access the pagehttp://192.168.74.129/index.html It can display normal content normally, as shown in the figure:

Fifth step: Test how Nginx and Tomcat handle static page performance under high concurrency?

We used the Linux ab website stress test command to test performance

1. Test the performance of Nginx in handling static pages

ab -c 100 -n 1000 http://192.168.74.129/index.html

 This indicates simultaneous processing100 requests and run1000 times index.html file, as shown in the figure:

2. Test the performance of Tomcat in handling static pages

ab -c 100 -n 1000 http://192.168.74.129:8081/index.html

This indicates simultaneous processing100 requests and run1000 times index.html file, as shown in the figure:

The same static files are processed, and Nginx's static performance is better than Tomcat. Nginx can handle5388Next, while Tomcat only requests2609Next.

Summary: In the Nginx configuration file, we configure static content to be handled by Nginx and dynamic requests to be handled by Tomcat, which provides performance.

Four. Nginx +Tomcat Load Balancing and Fault Tolerance

Under high concurrency, in order to improve server performance, we have reduced the concurrency pressure on a single server by adopting cluster deployment. This also helps to solve the fault tolerance problem in the event that a single server fails and the service cannot be accessed.

 Primeiro passo: Nós temos dois servidores Tomcat implantados aqui,192.168.74.129:8081e192.168.74.129:8082

 Segundo passo: O Nginx foi configurado como um servidor proxy, quando o cliente faz uma solicitação ao servidor, ele usa balanceamento de carga para processar, distribuindo assim de maneira equitativa as solicitações do cliente para cada servidor, reduzindo assim a pressão do lado do servidor. Configure o arquivo nginx.conf no Nginx.

  #vi /usr/local/nginx/conf/nginx.conf

 

 #user nobody; 
worker_processes 1; 
error_log logs/error.log; 
pid    logs/nginx.pid; 
events { 
  use epoll; 
  worker_connections 1024; 
{} 
http { 
  include    mime.types; 
  default_type aplicação/octet-stream; 
  log_format principal '$remote_addr - $remote_user [$time_local] "$request" ' 
           '$status $body_bytes_sent "$http_referer" ' 
           '"$http_user_agent" "$http_x_forwarded_for"'; 
  access_log logs/access.log principal; 
  sendfile    ligado; 
keepalive_timeout 65; 
gzip ligado;  
gzip_min_length 1k;  
gzip_buffers   4 16k;  
gzip_http_version 1.0;  
gzip_comp_level 2;  
gzip_types texto/puro aplicação/x-javascript texto/css aplicação/xml;  
gzip_vary ligado;  
<span style="color:#ff0000;">upstream localhost_server { 
    ip_hash; 
    servidor 192.168.74.129:8081; 
    servidor 192.168.74.129:8082; 
  }</span>/span> 
  servidor { 
    escutar    80 padrão; 
    server_name localhost; 
    <span style="color:#ff0000;">localização ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ //Páginas estáticas são processadas pelo nginx</span> 
       {  
         root  /usr/tomcat/apache-tomcat-8081/webapps/ROOT;  
          expires   30d; //Cache no cliente30 dia 
        {}  
    error_page 404       /404.html; 
    #redirecionar páginas de erro do servidor para a página estática /50x.html 
    error_page  500 502 503 504 /50x.html; 
    location = /50x.html { 
      root  html; 
    {} 
     <span style="color:#ff0000;">location ~ \.(jsp|do)$ {//Todas as solicitações dinâmicas de jsp são encaminhadas para o Tomcat</span> 
      <span style="color:#ff0000;">proxy_pass http://localhost_server; //As solicitações com sufixo jsp ou do são encaminhadas para o tomcat</span> 
      proxy_redirect off; 
      proxy_set_header Host $host;  //O servidor web backend pode usar X-Forwarded-Para obter o IP real do usuário 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-Para $proxy_add_x_forwarded_for; 
      client_max_body_size 10m;  //Número máximo de bytes de arquivo solicitado pelo cliente 
      client_body_buffer_size 128k; //Número máximo de bytes do buffer de solicitação do usuário do proxy 
       proxy_connect_timeout 90;  //Tempo de espera de conexão do nginx com o servidor backend 
       proxy_read_timeout 90;   //Tempo de resposta do servidor backend após a conexão estabelecida 
       proxy_buffer_size 4k;   //Configure o tamanho do buffer do servidor proxy (nginx) para armazenar informações de cabeçalho do usuário 
       proxy_buffers 6 32k;    //O buffer proxy_buffers, a página da web média está32Se for k ou menos, configure assim 
      proxy_busy_buffers_size 64k;//Tamanho do buffer sob alta carga (proxy_buffers*2) 
      proxy_temp_file_write_size 64k; //Defina o tamanho da pasta de cache. Se o valor for maior que este, a informação será transmitida do servidor upstream 
    {} 
  {}  
{}

Notas:

1.upstream server é o endereço IP (domínio) e a porta do servidor, que pode conter parâmetros adicionais

1)weight: configura o peso de encaminhamento do servidor. O valor padrão é1。

2)max_fails: é usado em conjunto com fail_timeout, significa que, durante o período de fail_timeout, se o número de falhas de encaminhamento do servidor exceder o valor configurado por max_fails, este servidor não estará disponível. O valor padrão de max_fails é1

3)fail_timeout: indica quantas vezes o encaminhamento falhou durante este período de tempo antes de considerar este servidor inutilizável.

4)down: indica que este servidor não pode ser usado.

 5)backup: faz com que a configuração ip_hash para este servidor seja ineficaz. A solicitação será encaminhada para o servidor apenas quando todos os servidores não de backup estiverem inativos.

 2A configuração .ip_hash é usada nos servidores do cluster. Se o mesmo cliente solicitar o encaminhamento a vários servidores, cada servidor pode armazenar a mesma informação, o que causaria desperdício de recursos. A configuração ip_hash garantirá que, quando o cliente fizer a segunda solicitação da mesma informação, o encaminhamento será feito para o servidor da primeira solicitação. No entanto, o ip_hash não pode ser usado ao mesmo tempo com weight.

Isso é tudo sobre o conteúdo deste artigo. Esperamos que ajude na sua aprendizagem e que você apoie mais o tutorial Yell.

Declaração: o conteúdo deste artigo é de origem na internet, pertencente ao autor original. O conteúdo é contribuído e carregado voluntariamente pelos usuários da internet. Este site não possui direitos autorais, não foi editado artificialmente e não assume responsabilidade legal. Se você encontrar conteúdo suspeito de infringência de direitos autorais, por favor, envie um e-mail para: notice#oldtoolbag.com (ao enviar e-mail, substitua # por @) para denunciar, e forneça provas relevantes. Assim que confirmado, o site deletará imediatamente o conteúdo suspeito de infringência.

Você também pode gostar