1. 程式人生 > >Nginx + Tomcat 反向代理 負載均衡 叢集 部署指南

Nginx + Tomcat 反向代理 負載均衡 叢集 部署指南

Nginx是一種伺服器軟體,也是一種高效能的http和反向代理伺服器,同時還是一個代理郵件伺服器。也就是說,我們在Nginx上可以釋出網站,可以實現負載均衡(提高應答效率,避免伺服器崩潰),還可以作為郵件伺服器實現收發郵件等功能。而最常見的就是使用Nginx實現負載均衡。

Nginx與其他伺服器的效能比較:

Tomcat伺服器面向Java語言,是重量級的伺服器,而Nginx是輕量級的伺服器。Apache伺服器穩定、開源、跨平臺,但是Apache伺服器不支援高併發,Nginx能支援處理百萬級的TCP連線,10萬以上的併發連線,並且是一個很好的跨平臺伺服器。
Nginx主要優點有可以實現高併發、部署簡單、記憶體消耗少、成本低等,主要缺點有rewrite功能不夠強大,模組沒有Apache的多。

本篇主要講解 Nginx + Tomcat 反向代理和負載均衡的部署,以通俗實用為主。本篇文章每個部分之間沒有太大關係,可根據需求分開學習。

下來看一下Nginx反向代理的過程:
Nginx反向代理的過程

Nginx負載均衡的過程(會自動選擇壓力較小的伺服器進行訪問):

Nginx負載均衡的過程

可以看出,負載均衡是通過反向代理的原理實現的,所以也稱 反向代理的負載均衡 。所以我們會部署負載均衡,那麼反向代理也就會了。

總的來說,負載均衡實現的方式分為軟體實現和硬體實現兩種,硬體實現執行的效率非常高,但是對應的成本也非常高。軟體實現執行效率不如硬體,但是成本相對來說低得多。而使用Nginx伺服器實現負載均衡,那麼就是通過軟體的方式來實現負載均衡,並且Nginx本身支援高併發等。故而使用Nginx伺服器實現負載均衡,能大大節約企業的成本,並且由於Nginx是伺服器軟體,其執行效率也是非常高。本篇的目的也就是幫助大家使用Nginx實現負載均衡。

負載均衡的核心就是建立一個伺服器叢集,然後使用者首先訪問到第三方代理伺服器(這裡我們選用Nginx),然後由代理伺服器選擇一個叢集中的伺服器,然後將請求引入選定的伺服器(這裡我們選用Tomcat)。

如下圖,通過反向代理我們實現下面的負載均衡,這裡我們 假定 四臺伺服器公網的ip,一臺做代理伺服器,三臺做負載均衡下的伺服器:

具體實現負載均衡

好了,整體架構已經基本上清晰了,下來我們來具體實現下:

提示:本篇我們基本上都是使用SSH進行相關操作的,Windows下可以嘗試安裝PuTTY,Mac下直接使用系統自帶的終端工具即可。

1.Linux下搭建Nginx伺服器

我們在 192.168.2.20 這臺伺服器上搭建Nginx伺服器:

2)上傳伺服器Nginx安裝包

$ scp ~/Downloads/nginx-1.10.2.tar.gz [email protected]:/usr/local

3)安裝Nginx

$ ssh [email protected]                          //SSH連線
# yum -y install gcc gcc-c++ autoconf automake   //gcc、gcc-c++的庫檔案
# yum install -y pcre pcre-devel                 //安裝Nginx依賴包
# yum install -y zlib zlib-devel

注意:-y表示遇到判斷全部yes,autoconf表示自動配置,automake表示自動編譯。

# cd /usr/local
# tar -zxvf nginx-1.10.2.tar.gz                 //解壓縮
# cd nginx-1.10.2                               //切換到該目錄下
# ./configure                                   //配置
# make
# make install                                  //安裝

檢驗是否完成安裝:

# cd /usr/local
# ls                                            //如果存在nginx資料夾,則安裝成功

經過上面的安裝步驟和目錄設定,nginx的啟動程式就是/usr/local/nginx/sbin/nginx,預設配置檔案是/usr/local/nginx/conf/nginx.conf,但是不建議直接編輯nginx.conf,一般我們都選擇新建配置檔案,然後在新建的配置檔案中修改埠、反向代理路徑等。

2.Nginx的啟動、停止、訊號控制

1)啟動Nginx伺服器(格式:Nginx可執行檔案 -c Nginx配置檔案):

# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

2)停止Nginx伺服器:

停止Nginx伺服器首先要查詢Nginx的主程序號(master process),假設此處查詢得到1060(方便下面演示使用):

# ps -ef|grep nginx

下來看如何停止Nginx伺服器,停止Nginx有三種方式:

從容停止:

# ps -ef|grep nginx    //檢視Nginx的主程序號(master process),假設此處查詢得到1060
# kill -quit 1060

快速停止:

# kill -term 1060

強制停止:

# pkill -9 nginx

3)重啟Nginx伺服器:

當我們修改了Nginx配置檔案,需要重啟才能生效。我們在重啟之前還需要驗證配置檔案的正確性,然後進行重啟操作:

# /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf      //驗證
# /usr/local/nginx/sbin/nginx -s reload                                   //重啟

4)平滑升級Nginx伺服器

平滑升級不會停掉在執行著的程序,這些程序會繼續處理請求,但不會再接受新請求,在這些老程序在處理完還在處理的請求後,停止。此平滑升級的過程中,新開的程序會被處理。這就是平滑升級。

# /usr/local/nginx/sbin/nginx -v             //檢視當前版本

下面進行平滑升級:

# cd /usr/local
# tar -zxvf nginx-1.11.6.tar.gz              //解壓縮 新版本Nginx
# cd nginx-1.11.6                            //切換到該目錄下
# ./configure                                //配置
# make
# cd /usr/local/nginx/sbin                   //開啟 舊版本Nginx可執行檔案位置
# cp nginx nginx.old                  //備份 舊版本Nginx可執行檔案,防止升級錯誤而無法恢復
# cp -rfp /usr/local/nginx-1.11.6/objs/nginx /usr/local/nginx/sbin     //複製新版本可執行檔案到舊版本處
# rm -f /usr/local/nginx-1.11.6.tar.gz       //善後工作 刪除壓縮檔案
# rm -rf /usr/local/nginx-1.11.6             //刪除資料夾

至此,Nginx伺服器平滑升級成功。

3.Nginx中負載均衡的實現

我們還是先連線SSH,然後進行下面操作(一般不建議修改預設主配置檔案nginx.conf,所以我們新建負載均衡配置檔案fzjh.conf,保證伺服器安全,如下):

# cd /usr/local/nginx/conf
# touch fzjh.conf
# vi fzjh.conf    //用vi編輯器開啟檔案,然後按鍵盤的i

注意:vi編輯器中,鍵盤按 i 進入 INSERT 狀態,按 Esc 退出 INSERT 狀態。
然後輸入以下配置程式碼(註釋部分按需開啟):

#設定低許可權使用者,為了安全而設定的
user nobody;

#工作衍生程序數
worker_processes 4;

#設定錯誤檔案存放路徑
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#設定pid存放路徑(pid是控制系統中重要檔案)
#pid logs/nginx.pid;

#設定最大連線數
events{
    worker_connections 1024;
}

http{
    #主要是用於設定一組可以在proxy_pass和fastcgi_pass指令中使用額代理伺服器,預設負載均衡方式為輪詢
    upstream tomcat_client {
        #設定同一個cookie的兩次/多次請求,請求的是同一臺伺服器
        ip_hash;
        #weight權重,預設1,權重越大訪問概率越大,backup備用伺服器,伺服器全部崩潰後啟動
        server 192.168.2.21:8080 weight=5;
        server 192.168.2.22:8080 weight=5;
        server 192.168.2.23:8080 weight=5 backup;
    }

    #開啟gzip壓縮,開啟後,訪問網頁會自動壓縮
    #gzip on;

    #指定伺服器的名稱和引數
    server {
        listen 80;
        server_name  test.nginxtest.net;

        #設定字元
        #charset koi8-r;

        #location / 指用根目錄做負載均衡
        location / {
            proxy_pass http://tomcat_client;
            proxy_redirect default;
            #設定代理
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
}

輸入完成後按下Esc,然後輸入:

:wq!

就可以儲存並退出負載均衡的配置檔案了,下來我們載入我們的配置檔案:

# /usr/local/nginx/sbin/nginx                                           //啟動Nginx
# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/fzjh.conf        //載入配置檔案

如果存在端口占用,可以使用如下命令Kill掉Nginx的程式:

# killall -9 nginx

至此,Nginx伺服器部署完畢。下面我們開始部署負載均衡下的那三臺真實提供資料的伺服器。





相關推薦

Nginx + Tomcat 反向代理 負載均衡 叢集 部署指南

Nginx是一種伺服器軟體,也是一種高效能的http和反向代理伺服器,同時還是一個代理郵件伺服器。也就是說,我們在Nginx上可以釋出網站,可以實現負載均衡(提高應答效率,避免伺服器崩潰),還可以作為郵件伺服器實現收發郵件等功能。而最常見的就是使用Nginx實現負載均衡。

centos7下配置nginx反向代理負載均衡叢集

一,實驗介紹利用三臺centos7虛擬機器搭建簡單的nginx反向代理負載叢集,三臺虛擬機器地址及功能介紹192.168.1.188    nginx負載均衡器192.168.1.189    web01伺服器192.168.1.190    web02伺服器軟體準備:   

Centos 7配置nginx反向代理負載均衡叢集

一,實驗介紹 利用三臺centos7虛擬機器搭建簡單的nginx反向代理負載叢集, 三臺虛擬機器地址及功能介紹 192.168.2.76    nginx負載均衡器 192.168.2.82    web01伺服器 192.168.2.78  &nb

nginx實現反向代理負載均衡

反向代理負載均衡 Nginx實現反向代理 nginx代理基於是ngx_http_proxy_module模塊的功能,該模塊有很多屬性配置選項,如: proxy_pass:指定將請求代理至server的URL路徑; proxy_set_header:將發送至 server的報文的某首部進行重寫

Nginx實現反向代理負載均衡功能

運維 出現 正常 技術分享 remote eas ups 單個 搭建 反向代理軟件Nginx:本身支持反向代理、負載均衡功能,屬於L7層負載均衡。Nginx反向代理簡單易用,受到大部分中小企業的青睞。LVS:支持L4層負載均衡,haproxy:支持L4、L7層負載均衡L4、

nginx2-nginx實現反向代理-負載均衡|宕機處理

叢集會產生哪些問題 分散式job冪等性問題(重複),例如任務排程 會話session共享問題 分散式生成全域性id(提前生成好,存在redis) 反向代理 不暴露真實ip地址 先配置反向代理,再配置負載均衡(叢集) www.fangwen.com已

NGINX+TOMCAT搭建高效能負載均衡叢集 配置方法

一、       工具   nginx   apache-tomcat     二、    目標   實現高效能負載均衡的Tomcat叢集:  

nginx+tomcat+memcached搭建負載均衡叢集實現交叉快取

tomcat tomcat簡介 Tomcat 伺服器是一個免費的開放原始碼的Web 應用伺服器,屬於輕量級應用伺服器,在中小型系統和併發訪問使用者不是很多的場合下被普遍使用,是開發和除錯JSP 程式的首選。對於一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache 伺服器,可

Nginx+Tomcat搭建高效能負載均衡叢集

一、       工具   nginx-1.8.0   apache-tomcat-6.0.33 二、    目標   實現高效能負載均衡的Tomcat叢集: 三、    步驟   1、首先下載Nginx,要下載穩定版:   2、然後解壓兩

Nginx+Tomcat搭建高效能負載均衡叢集之枯藤老樹

--枯藤老樹昏鴉,小橋流水人家,古道西風瘦馬。夕陽西下,斷腸人      在天涯。 一、     工具   nginx-1.8.0   apache-tomcat-6.0.33 二、    目標   實現高效能負載均衡的Tomcat叢集:   

[反向代理 + 負載均衡 + 線上部署 + PM2 + 快取策略]

準備工作 方向代理 負載均衡 nginx 負載均衡的實現 HTTP Uptream模組 其他負載均衡的方法 快取策略 實戰 首先安裝nginx centos 可以用 yum

Windows下Apache+Tomcat反向代理負載均衡(HTTP)

0、資料準備       下載:httpd-2.2.25-win32-x86-openssl-0.9.8y        準備:tomcat 6 1、配置2個tomcat例項 tomcat1 <

Nginx+Tomcat反向代理負載均衡,redis存放session,keepalived暫未搭建

註意 image 依次 shutdown 占用 securecrt moni secure memcache 由於公司特定機器還未申請到位,本人之前對這一塊也不是很了解,所以前期需要先探路的原因,直接在阿裏雲上申請了一臺測試機,這裏部署的所有服務及操作全部在一臺機器上,經過

Nginx+Tomcat反向代理+負載均衡

案例 一臺Nginx做反向代理,tomcat 負載均衡 實際中 兩臺tomcat的網站應該是一樣的,不過為了實驗效果我們做不一樣的。 1、關閉防火牆,安裝JDK,配置JAVA環境。 2、安裝配置Tomcat #主要目錄說明 #配置檔案說明 3、建立java的web站

Nginx+Tomcat反向代理負載均衡

2. 與Apache伺服器對比。 Nginx相對於apache的優點:輕量級,同樣為web伺服器,比apache佔用更少的資源,抗併發,nginx處理請求是非同步非阻塞的,而apache是阻射型的, 在高併發下nginx能保持低資源低消耗高效能,高

Apache+Tomcat叢集實現反向代理負載均衡

一. Apache+Tomcat叢集實現反向代理的負載均衡的原理: Apache作為排程器,轉發HTTP請求。然後等待實際伺服器的HTTP響應,並轉發給使用者。 Tomcat叢集作為實際的伺服器,處理HTTP請求。二. 需要安裝的程式: 1. Apache2.2.4 2.

Nginx反向代理負載均衡的容器化部署

首先,在home目錄建立microservices目錄,開啟第一篇章。 cd ~ && mkdir microservices && cd microservices 建立nginx目錄,在目錄下分別建立三個節點目錄:nginx01、nginx02、nginx03,目的是使ng

nginx反向代理+負載均衡

-- lib 安裝環境 vim dev usr 代理服務 png 安裝nginx 關閉防火墻 檢查zlib-devel pcre-devel是否安裝 源碼編譯安裝Nginx ./configure --prefix=/usr/local/nginx make &&a

nginx反向代理負載均衡

nginx 負載均衡1.反向代理概述反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個反向代理服務器。環境準備:主機名IP地址角色系統

nginx正向代理反向代理負載均衡

索引 三方 send nec nginx 服務端 nbsp 公網 服務器配置 1.1 Nginx簡介 Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行。由俄羅斯的程序設計師Igor S