最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx+Tomcat負(fù)載均衡、動(dòng)靜分離群集全過(guò)程

 更新時(shí)間:2025年10月09日 15:46:20   作者:ikun·  
Nginx與Tomcat分別作為高性能Web服務(wù)器和Java應(yīng)用容器,常用于負(fù)載均衡與動(dòng)靜分離,提升系統(tǒng)性能與可用性,Nginx處理靜態(tài)資源及反向代理,Tomcat承載動(dòng)態(tài)業(yè)務(wù),二者協(xié)作可優(yōu)化架構(gòu)并應(yīng)對(duì)高并發(fā)場(chǎng)景

一、 nginx 簡(jiǎn)介

Nginx 是一款輕量級(jí)的高性能 Web 服務(wù)器、反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,在 BSD-like 協(xié)議下發(fā)行。

其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),在同類型的網(wǎng)頁(yè)服務(wù)器中表現(xiàn)優(yōu)異,常用于處理高并發(fā)場(chǎng)景。

1. 核心功能

高性能

  • 采用事件驅(qū)動(dòng)的異步非阻塞架構(gòu)(epoll/kqueue),單進(jìn)程可處理數(shù)萬(wàn)并發(fā)連接,資源消耗極低。
  • 靜態(tài)文件處理速度極快,適合作為靜態(tài)資源服務(wù)器。

反向代理與負(fù)載均衡

  • 支持 HTTP、HTTPS、SMTP、POP3、IMAP 等協(xié)議的代理轉(zhuǎn)發(fā)。
  • 提供多種負(fù)載均衡算法(輪詢、IP 哈希、加權(quán)負(fù)載等),可自動(dòng)檢測(cè)后端服務(wù)器健康狀態(tài)。

高可用性

  • 支持熱部署,更新配置無(wú)需重啟服務(wù)。
  • 通過(guò) keepalive 機(jī)制減少連接開(kāi)銷,提升穩(wěn)定性。

模塊化設(shè)計(jì)

  • 支持豐富的第三方模塊(如緩存、壓縮、認(rèn)證等),可擴(kuò)展性強(qiáng)。

2. 典型應(yīng)用場(chǎng)景

Web 服務(wù)器

  • 直接托管靜態(tài)網(wǎng)站(HTML、CSS、JS、圖片等)。
  • 通過(guò) fastcgi 模塊支持 PHP 等動(dòng)態(tài)語(yǔ)言(需配合后端服務(wù))。

反向代理與負(fù)載均衡

  • 作為前端代理服務(wù)器,隱藏真實(shí)后端服務(wù)器,提升安全性。
  • 分?jǐn)偭髁康蕉鄠€(gè)后端服務(wù)器,避免單點(diǎn)故障。

HTTP 終端代理

  • 集中處理 SSL/TLS 加密,降低后端服務(wù)器負(fù)載。

API 網(wǎng)關(guān)

  • 實(shí)現(xiàn)請(qǐng)求路由、限流、鑒權(quán)等功能。

3. 對(duì)比 apache

特性NginxApache
架構(gòu)事件驅(qū)動(dòng)(異步非阻塞)多進(jìn)程 / 線程(同步阻塞)
并發(fā)處理高(單進(jìn)程數(shù)萬(wàn)連接)中等(受進(jìn)程 / 線程數(shù)限制)
資源消耗
模塊擴(kuò)展需編譯時(shí)添加運(yùn)行時(shí)動(dòng)態(tài)加載
配置復(fù)雜度簡(jiǎn)潔(基于塊結(jié)構(gòu))靈活但復(fù)雜

4. 適用場(chǎng)景

  • 高并發(fā)場(chǎng)景:如電商大促、流量突發(fā)的網(wǎng)站。
  • 微服務(wù)架構(gòu):作為 API 網(wǎng)關(guān)或服務(wù)間的負(fù)載均衡器。
  • 靜態(tài)資源服務(wù):托管前端項(xiàng)目、CDN 節(jié)點(diǎn)等。

5. 基礎(chǔ)配置示例

以下是一個(gè)簡(jiǎn)單的 Nginx 配置文件片段,展示了靜態(tài)網(wǎng)站托管和反向代理的基本配置:

# 全局配置
worker_processes auto;
error_log /var/log/nginx/error.log warn;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    # 靜態(tài)網(wǎng)站配置
    server {
        listen 80;
        server_name example.com;

        root /var/www/html;
        index index.html;

        location / {
            try_files $uri $uri/ =404;
        }
    }

    # 反向代理配置
    server {
        listen 80;
        server_name api.example.com;

        location / {
            proxy_pass http://backend_server:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
}

二、 tomcat 簡(jiǎn)介

Apache Tomcat 是一個(gè)開(kāi)源的 Servlet 容器,由 Apache 軟件基金會(huì)開(kāi)發(fā)和維護(hù)。

它實(shí)現(xiàn)了 Java Servlet、JavaServer Pages (JSP)、Java Expression Language (EL) 和 WebSocket 等技術(shù)規(guī)范,是運(yùn)行 Java Web 應(yīng)用程序的核心平臺(tái)。

1. 核心功能

輕量級(jí)

  • 相比完整的 Java EE 應(yīng)用服務(wù)器(如 WebLogic、WebSphere),Tomcat 體積小、啟動(dòng)快,適合開(kāi)發(fā)和測(cè)試環(huán)境。

開(kāi)源免費(fèi)

  • 基于 Apache License 2.0 發(fā)布,可自由使用和修改。

擴(kuò)展性強(qiáng)

  • 支持各種插件和連接器(如 APR、NIO2),可通過(guò)修改配置文件靈活調(diào)整。

與 Apache HTTP Server 集成

  • 可作為后端 Servlet 容器,與 Apache HTTP Server 配合實(shí)現(xiàn)負(fù)載均衡。

2. 基本架構(gòu)

Tomcat 的核心組件包括:

  • Server:代表整個(gè) Servlet 容器,包含多個(gè) Service
  • Service:連接 Connector 和 Container
  • Connector:負(fù)責(zé)接收客戶端請(qǐng)求(如 HTTP、HTTPS)
  • Container:處理請(qǐng)求的核心組件,包含 Engine、Host、Context 等
  • Web 應(yīng)用:部署在 Context 中的 WAR 或目錄

3. 典型應(yīng)用場(chǎng)景

Java Web 應(yīng)用部署

  • 運(yùn)行基于 Spring、Spring Boot、Struts 等框架開(kāi)發(fā)的 Web 應(yīng)用。

微服務(wù)架構(gòu)

  • 作為輕量級(jí)服務(wù)容器,部署獨(dú)立的微服務(wù)實(shí)例。

開(kāi)發(fā)測(cè)試環(huán)境

  • 快速啟動(dòng)和調(diào)試 Web 應(yīng)用,支持熱部署。

與其他服務(wù)器配合

  • 作為應(yīng)用服務(wù)器,與 Nginx/Apache HTTP Server 配合實(shí)現(xiàn)動(dòng)靜分離。

4. 配置示例

以下是一個(gè)簡(jiǎn)化的server.xml配置片段,展示了基本的 HTTP 連接器和虛擬主機(jī)配置:

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  
  <Service name="Catalina">
    <!-- HTTP連接器 -->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    
    <!-- 引擎 -->
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
      
      <!-- 虛擬主機(jī) -->
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>
</Server>

5. 與 nginx 的協(xié)作模式

在生產(chǎn)環(huán)境中,Tomcat 通常與 Nginx 配合使用:

Nginx 作為反向代理

server {
    listen 80;
    server_name example.com;
    
    location / {
        proxy_pass http://tomcat_server:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

動(dòng)靜分離

  • Nginx 處理靜態(tài)資源(HTML、CSS、JS、圖片)
  • Tomcat 處理動(dòng)態(tài)請(qǐng)求(Servlet、JSP)

負(fù)載均衡

Nginx 通過(guò) upstream 模塊將請(qǐng)求分發(fā)到多個(gè) Tomcat 實(shí)例:

upstream tomcat_cluster {
    server tomcat1:8080;
    server tomcat2:8080;
}

server {
    listen 80;
    location / {
        proxy_pass http://tomcat_cluster;
    }
}

6. 性能優(yōu)化建議

(1) 調(diào)整 JVM 參數(shù)

修改catalina.shsetenv.sh,設(shè)置合適的堆內(nèi)存和垃圾回收器:

JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"

(2) 優(yōu)化連接器

server.xml中調(diào)整 HTTP 連接器參數(shù):

<Connector port="8080" protocol="org.apache.coyote.http11.Http11Nio2Protocol"
           maxThreads="200" acceptCount="100" />

(3) 禁用不必要的服務(wù)

注釋掉server.xml中不需要的組件(如 AJP 連接器)。

(4) 使用 APR 連接器

對(duì)于高并發(fā)場(chǎng)景,啟用 APR(Apache Portable Runtime)以提升性能:

<Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol" />

三、 實(shí)驗(yàn)步驟

1. 實(shí)驗(yàn)環(huán)境

部署nginx+tomcat負(fù)載均衡需要以下設(shè)備

tomcat1 服務(wù)器192.168.10.102
tomcat2 服務(wù)器192.168.10.103
nginx 服務(wù)器192.168.10.101

2. 準(zhǔn)備 tomcat 網(wǎng)站

##兩臺(tái)tomcat服務(wù)器配置一致
[root@localhost /]# dnf -y install java         //安裝實(shí)驗(yàn)需要的環(huán)境
[root@localhost /]# mkdir -p /web/webapp1
[root@localhost webapp1]# ls
index.jsp
 
##第一臺(tái)tomcat服務(wù)器
[root@localhost webapp1]# cat index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<html>   
<head>
     <title>JSP test2 page</title>   </head>
   <body>
     <% out.println("動(dòng)態(tài)頁(yè)面 1,http://www.test2.com");%>
   </body> 
   <body> 
    <div>動(dòng)態(tài)頁(yè)面的圖片 1</div><br><img src="logo.png"> 
   </body> 
</html>
 
 
##第二臺(tái)tomcat服務(wù)器
[root@localhost webapp1]# cat index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<html>   
<head>
     <title>JSP test2 page</title>   </head>
   <body>
     <% out.println("動(dòng)態(tài)頁(yè)面 2,http://www.test2.com");%>
   </body> 
   <body>  
   <div>動(dòng)態(tài)頁(yè)面的圖片 2</div><br><img src="logo.png"> ##為了方便驗(yàn)證兩臺(tái)服務(wù)器頁(yè)面可以不一致
   </body> 
</html>

3. 修改 nginx 的配置文件

[root@nginx /]# vim /usr/local/nginx/conf/nginx.conf
##這個(gè)要寫(xiě)在http部分
 upstream my_tomcat {
            server 192.168.10.102:8080 weight=1;
            server 192.168.10.103:8080 weight=2;
    }
 
 
##新添加的localtion部分
location ~ .*\.jsp$ {
                proxy_set_header HOST $host; 
                proxy_pass http://my_tomcat;
}
 
##檢查配置文件是否有誤
[root@nginx /]# nginx -t
 
##重載nginx服務(wù)
[root@nginx /]# nginx -s reload

4. 修改 tomcat 的配置文件

##兩臺(tái)服務(wù)器都要配置
[root@localhost /]# vim /usr/local/tomcat/conf/server.xml       
<Context docBase="/web/webapp1" path="" reloadable="false">        ##在150行添加
            </Context>
 
docBase  ##指定網(wǎng)頁(yè)的路徑
path=""  ##定義 Web 應(yīng)用的訪問(wèn)路徑(上下文路徑)
reloadabel   ##控制 Tomcat 是否自動(dòng)檢測(cè)應(yīng)用文件的修改并重新加載應(yīng)用 
false(默認(rèn)值)   ##不自動(dòng)重新加載,修改文件后需手動(dòng)重啟 Tomcat 或應(yīng)用。
true            ##開(kāi)啟自動(dòng)重新加載
 
##重啟兩臺(tái)服務(wù)器,使配置文件生效
[root@localhost /]# /usr/local/tomcat/bin/shutdown.sh
[root@localhost /]# /usr/local/tomcat/bin/startup.sh

5. 驗(yàn)證

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

宝丰县| 临桂县| 澜沧| 祁东县| 淮南市| 西宁市| 个旧市| 长治县| 宜黄县| 三原县| 临汾市| 英山县| 梓潼县| 台州市| 桐柏县| 阳江市| 介休市| 松原市| 涡阳县| 景德镇市| 沙河市| 崇义县| 米易县| 壶关县| 霸州市| 拜泉县| 全椒县| 绥宁县| 呼玛县| 宿迁市| 哈尔滨市| 宕昌县| 中卫市| 陆良县| 乌拉特中旗| 高淳县| 恭城| 昭苏县| 米脂县| 德钦县| 古蔺县|