Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Bagaimana Nginx dan Tomcat mencapai pemisahan dinamik dan statik serta pengimbangan beban

Bagaimana Nginx dan Tomcat mencapai pemisahan dinamik dan statik serta pengimbangan beban

王林
王林ke hadapan
2023-05-18 17:10:06885semak imbas

1. Pengenalan kepada nginx:

nginx ialah pelayan proksi http dan terbalik berprestasi tinggi Ia mempunyai kestabilan tinggi dan menyokong penggunaan panas dan pengembangan modul yang mudah. Apabila menghadapi puncak akses, atau seseorang secara berniat jahat memulakan sambungan perlahan, ia juga berkemungkinan menyebabkan memori fizikal pelayan menjadi letih dan kerap bertukar, mengakibatkan kehilangan respons Pelayan hanya boleh dimulakan semula teknologi peruntukan untuk memproses fail statik dan pecutan proksi terbalik tanpa Cache mencapai pengimbangan beban dan toleransi kesalahan, dan boleh menahan pemprosesan serentak tinggi dalam situasi capaian serentak tinggi sedemikian.

2. pemasangan dan konfigurasi nginx

Langkah 1: Muat turun pakej pemasangan nginx

Langkah 2: Pasang nginx pada linux

#tar zxvf nginx-1.7.8.tar.gz //解压

#cd nginx-1.7.8

#./configure --with-http_stub_status_module --with-http_ssl_module//启动server状态页和https模块

akan melaporkan ralat perpustakaan pcre yang hilang, Seperti yang ditunjukkan dalam gambar:

Bagaimana Nginx dan Tomcat mencapai pemisahan dinamik dan statik serta pengimbangan beban

Pada masa ini, mula-mula lakukan langkah ketiga untuk memasang pcre, dan kemudian laksanakannya dalam 3, dan itu sahaja

4 .make && make install //Kompil dan pasang

5 Uji sama ada konfigurasi pemasangan adalah betul di /usr/local/nginx

#/usr/local/. nginx/sbin/ nginx -t, seperti yang ditunjukkan dalam gambar:

Bagaimana Nginx dan Tomcat mencapai pemisahan dinamik dan statik serta pengimbangan beban

Langkah 3: Pasang pcre pada linux

#tar zxvf pcre-8.10.tar.gz //解压

cd pcre-8.10

./configure

make && make install//编译并安装

Tiga . nginx + tomcat merealisasikan pemisahan dinamik dan statik

Pemisahan dinamik dan statik bermakna nginx mengendalikan halaman statik (halaman html) atau gambar yang diminta oleh pelanggan, dan tomcat mengendalikan halaman dinamik (halaman jsp) yang diminta oleh pelanggan, kerana nginx Kecekapan memproses halaman statik adalah lebih tinggi daripada tomcat.

Langkah 1: Kita perlu mengkonfigurasi fail 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 application/octet-stream; 
  log_format main '$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 main; 
  sendfile    on; 
keepalive_timeout 65; 
gzip on;  
gzip_min_length 1k;  
gzip_buffers   4 16k;  
gzip_http_version 1.0;  
gzip_comp_level 2;  
gzip_types text/plain application/x-javascript text/css application/xml;  
gzip_vary on;  
  server { 
    listen    80 default; 
    server_name localhost; 
    <span style="color:#ff0000;"> location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ //由nginx处理静态页面</span> 
       {  
         root  /usr/tomcat/apache-tomcat-8081/webapps/root;  
          expires   30d; //缓存到客户端30天 
        }  
    error_page 404       /404.html; 
 
    #redirect server error pages to the static page /50x.html 
     
    error_page  500 502 503 504 /50x.html; 
    location = /50x.html { 
      root  html; 
    } 
     <span style="color:#ff0000;"> location ~ \.(jsp|do)$ {//所有jsp的动态请求都交给tomcat处理 </span> 
      <span style="color:#ff0000;"> proxy_pass http://192.168.74.129:8081; //来自jsp或者do的后缀的请求交给tomcat处理</span> 
      proxy_redirect off; 
      proxy_set_header host $host;  //后端的web服务器可以通过x-forwarded-for获取用户真实ip 
      proxy_set_header x-real-ip $remote_addr; 
      proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; 
      client_max_body_size 10m;  //允许客户端请求的最大单文件字节数 
      client_body_buffer_size 128k; //缓冲区代理缓冲用户端请求的最大字节数 
       proxy_connect_timeout 90;  //nginx跟后端服务器连接超时时间 
       proxy_read_timeout 90;   //连接成功后,后端服务器响应时间 
       proxy_buffer_size 4k;   //设置代理服务器(nginx)保存用户头信息的缓冲区大小 
       proxy_buffers 6 32k;    //proxy_buffers缓冲区,网页平均在32k以下的话,这样设置 
      proxy_busy_buffers_size 64k;//高负荷下缓冲大小(proxy_buffers*2) 
      proxy_temp_file_write_size 64k; //设定缓存文件夹大小,大于这个值,将从upstream服务器传 
    } 
    
  }  
 
}

Langkah 2: Masuk Buat halaman statik index.html baharu di bawah webapps/root di bawah tomcat, seperti yang ditunjukkan dalam rajah:

Bagaimana Nginx dan Tomcat mencapai pemisahan dinamik dan statik serta pengimbangan beban

Langkah 3: Mulakan perkhidmatan nginx

#sbin/nginx Seperti yang ditunjukkan dalam gambar:

Bagaimana Nginx dan Tomcat mencapai pemisahan dinamik dan statik serta pengimbangan beban

Langkah 4: Akses halaman kami boleh memaparkan kandungan biasa, seperti yang ditunjukkan dalam gambar:

Bagaimana Nginx dan Tomcat mencapai pemisahan dinamik dan statik serta pengimbangan beban

Langkah 5: Uji prestasi nginx dan tomcat dalam memproses halaman statik di bawah konkurensi tinggi?

Menggunakan arahan ujian tekanan laman web linux ab untuk menguji prestasi

1. Uji prestasi nginx dalam memproses halaman statik

ab -c 100 -n 1000

Ini bermakna memproses 100 permintaan pada masa yang sama dan menjalankan fail index.html 1000 kali, seperti yang ditunjukkan dalam rajah:


Bagaimana Nginx dan Tomcat mencapai pemisahan dinamik dan statik serta pengimbangan beban

2. Ujian tomcat memproses halaman statik Prestasi

ab -c 100 -n 1000

Ini bermakna memproses 100 permintaan pada masa yang sama dan menjalankan fail index.html 1000 kali, seperti yang ditunjukkan dalam rajah :


Bagaimana Nginx dan Tomcat mencapai pemisahan dinamik dan statik serta pengimbangan beban

Untuk pemprosesan fail statik yang sama, prestasi statik nginx adalah lebih baik daripada tomcat. nginx boleh meminta 5388 kali sesaat, manakala tomcat hanya meminta 2609 kali.

Ringkasan: Dalam fail konfigurasi nginx, kami menyerahkan konfigurasi statik kepada nginx untuk diproses dan menyerahkan permintaan dinamik kepada tomcat, yang meningkatkan prestasi.

4. nginx +tomcat load balancing dan fault tolerance

Untuk meningkatkan prestasi pelayan dan mengurangkan tekanan concurrency pada pelayan tunggal di bawah keadaan concurrency yang tinggi, kami mengguna pakai penempatan kluster, yang juga boleh menyelesaikan masalah mengelak Apabila pelayan tunggal ditutup dan perkhidmatan tidak dapat diakses, isu toleransi kesalahan ditangani.

Langkah pertama: Kami telah menggunakan pelayan tomcat di sini selama dua hari, 192.168.74.129:8081 dan 192.168.74.129:8082

Langkah kedua: nginx berfungsi sebagai pelayan proksi dan permintaan pelanggan bahagian pelayan, pengimbangan beban digunakan untuk mengendalikannya, supaya permintaan perkhidmatan pelanggan boleh diagihkan secara sama rata kepada pelayan setiap hari, sekali gus mengurangkan tekanan pada bahagian pelayan. Konfigurasikan fail nginx.conf di bawah 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 application/octet-stream; 
  log_format main &#39;$remote_addr - $remote_user [$time_local] "$request" &#39; 
           &#39;$status $body_bytes_sent "$http_referer" &#39; 
           &#39;"$http_user_agent" "$http_x_forwarded_for"&#39;; 
 
  access_log logs/access.log main; 
  sendfile    on; 
keepalive_timeout 65; 
gzip on;  
gzip_min_length 1k;  
gzip_buffers   4 16k;  
gzip_http_version 1.0;  
gzip_comp_level 2;  
gzip_types text/plain application/x-javascript text/css application/xml;  
gzip_vary on;  
<span style="color:#ff0000;">upstream localhost_server { 
    ip_hash; 
    server 192.168.74.129:8081; 
    server 192.168.74.129:8082; 
  }</span> 
 
  server { 
    listen    80 default; 
    server_name localhost; 
    <span style="color:#ff0000;"> location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ //由nginx处理静态页面</span> 
       {  
         root  /usr/tomcat/apache-tomcat-8081/webapps/root;  
          expires   30d; //缓存到客户端30天 
        }  
    error_page 404       /404.html; 
 
    #redirect server error pages to the static page /50x.html 
     
    error_page  500 502 503 504 /50x.html; 
    location = /50x.html { 
      root  html; 
    } 
     <span style="color:#ff0000;">location ~ \.(jsp|do)$ {//所有jsp的动态请求都交给tomcat处理 </span> 
      <span style="color:#ff0000;">proxy_pass http://localhost_server; //来自jsp或者do的后缀的请求交给tomcat处理</span> 
      proxy_redirect off; 
      proxy_set_header host $host;  //后端的web服务器可以通过x-forwarded-for获取用户真实ip 
      proxy_set_header x-real-ip $remote_addr; 
      proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; 
      client_max_body_size 10m;  //允许客户端请求的最大单文件字节数 
      client_body_buffer_size 128k; //缓冲区代理缓冲用户端请求的最大字节数 
       proxy_connect_timeout 90;  //nginx跟后端服务器连接超时时间 
       proxy_read_timeout 90;   //连接成功后,后端服务器响应时间 
       proxy_buffer_size 4k;   //设置代理服务器(nginx)保存用户头信息的缓冲区大小 
       proxy_buffers 6 32k;    //proxy_buffers缓冲区,网页平均在32k以下的话,这样设置 
      proxy_busy_buffers_size 64k;//高负荷下缓冲大小(proxy_buffers*2) 
      proxy_temp_file_write_size 64k; //设定缓存文件夹大小,大于这个值,将从upstream服务器传 
    } 
    
  }  
 
}

Penjelasan:

1 pelayan IP (nama domain) dan port juga boleh diikuti oleh parameter

1) berat: Tetapkan berat pemajuan pelayan Nilai lalai ialah 1.

2) max_fails: Ia digunakan bersama fail_timeout Ini bermakna dalam tempoh masa fail_timeout, jika bilangan kegagalan pemajuan pelayan melebihi nilai yang ditetapkan oleh max_fails, pelayan tidak akan tersedia nilai max_fails ialah 1

3)fail_timeout: Menunjukkan berapa kali pemajuan gagal dalam tempoh masa ini sebelum pelayan dianggap tidak tersedia.

4)bawah: Menunjukkan bahawa pelayan ini tidak boleh digunakan.

5) sandaran: Menunjukkan bahawa tetapan ip_hash tidak sah untuk pelayan ini Permintaan akan dimajukan kepada pelayan hanya selepas semua pelayan bukan sandaran gagal.

2. Tetapan ip_hash berada dalam pelayan kluster Jika permintaan klien yang sama dimajukan ke berbilang pelayan, setiap pelayan mungkin menyimpan maklumat yang sama, yang akan menyebabkan pembaziran sumber Tetapan ip_hash digunakan Apabila klien yang sama meminta maklumat yang sama untuk kali kedua, ia akan dimajukan kepada pelayan yang meminta kali pertama. Tetapi ip_hash tidak boleh digunakan bersama dengan berat.

Atas ialah kandungan terperinci Bagaimana Nginx dan Tomcat mencapai pemisahan dinamik dan statik serta pengimbangan beban. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam