1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Nginx搭配Tomcat實現(xiàn)負載均衡

        共 4588字,需瀏覽 10分鐘

         ·

        2020-12-26 07:46

        Python實戰(zhàn)社群

        Java實戰(zhàn)社群

        長按識別下方二維碼,按需求添加

        掃碼關(guān)注添加客服

        進Python社群▲

        掃碼關(guān)注添加客服

        進Java社群


        作者丨非科班的科班
        來源丨黎杜編程

        Nginx簡介

        Nginx 是一款自由的、開源的、高性能的 HTTP 服務(wù)器和反向代理服務(wù)器,中國互聯(lián)網(wǎng)大廠使用nginx網(wǎng)站有:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等。

        什么是反向代理呢?
        反向代理(Reverse Proxy)方式是指以代理服務(wù)器來接受internet上的連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請求連接的客戶端,此時代理服務(wù)器對外就表現(xiàn)為一個反向代理服務(wù)器。簡單來說就是真實的服務(wù)器不能直接被外部網(wǎng)絡(luò)訪問,所以需要一臺代理服務(wù)器。

        Nginx 的負載均衡算法:

        (1)weight 輪詢(默認):接收到的請求按照順序逐一分配到不同的后端服務(wù)器,即使在使用過程中,某一臺后端服務(wù)器宕機,Nginx 會自動將該服務(wù)器剔除出隊列,請求受理情況不會受到任何影響。

        這種方式下,可以給不同的后端服務(wù)器設(shè)置一個權(quán)重值(weight),用于調(diào)整不同的服務(wù)器上請求的分配率。權(quán)重數(shù)據(jù)越大,被分配到請求的幾率越大;該權(quán)重值,主要是針對實際工作環(huán)境中不同的后端服務(wù)器硬件配置進行調(diào)整的。

        (2)ip_hash:每個請求按照發(fā)起客戶端的 ip 的 hash 結(jié)果進行匹配,這樣的算法下一個固定 ip 地址的客戶端總會訪問到同一個后端服務(wù)器,這也在一定程度上解決了集群部署環(huán)境下 Session 共享的問題。

        (3)fair:智能調(diào)整調(diào)度算法,動態(tài)的根據(jù)后端服務(wù)器的請求處理到響應(yīng)的時間進行均衡分配。

        響應(yīng)時間短處理效率高的服務(wù)器分配到請求的概率高,響應(yīng)時間長處理效率低的服務(wù)器分配到的請求少,它是結(jié)合了前兩者的優(yōu)點的一種調(diào)度算法。但是需要注意的是 Nginx 默認不支持 fair 算法,如果要使用這種調(diào)度算法,請安裝 upstream_fair 模塊。

        (4)url_hash:按照訪問的 URL 的 hash 結(jié)果分配請求,每個請求的 URL 會指向后端固定的某個服務(wù)器,可以在 Nginx 作為靜態(tài)服務(wù)器的情況下提高緩存效率。同樣要注意 Nginx 默認不支持這種調(diào)度算法,要使用的話需要安裝 Nginx 的 hash 軟件包。

        安裝Nginx

        下載Nginx安裝包

        Nginx 官網(wǎng)(https://nginx.org)
        本次選擇的是nginx-1.6.3.tar.gz版本,安裝環(huán)境是centos7。
        然后把下載好的安裝包通過SecureCRT工具上傳至Centos7中或者使用wget命令下載安裝包

        #下載nginx-1.6.3.tar.gz
        wget?-c?https://nginx.org/download/nginx-1.6.3.tar.gz

        若是出現(xiàn)下面的提示

        -bash:?wget:?command?not?found

        則執(zhí)行

        yum?install?wget

        安裝Nginx的前提環(huán)境

        1)安裝 gcc 環(huán)境

        yum?install?gcc-c++

        2) 安裝 PCRE 依賴庫

        yum?install?-y?pcre?pcre-devel

        3)安裝 zlib 依賴庫

        yum?install?-y?zlib?zlib-devel

        4) 安裝 OpenSSL 安全套接字層密碼庫

        yum?install?-y?openssl?openssl-devel

        5)解壓 Nginx

        #解壓文件夾
        tar?-zxvf?nginx-1.6.3.tar.gz

        6)執(zhí)行配置命令

        cd進入文件夾
        cd?nginx-1.6.3
        #執(zhí)行配置命令
        ./configure

        出現(xiàn)如下圖:表示成功


        7)執(zhí)行編譯安裝命令

        make?install

        8)查找安裝路徑

        whereis?nginx

        結(jié)果如下:


        9)啟動服務(wù)

        進入 nginx 的目錄

        cd?/usr/local/nginx/sbin/

        執(zhí)行如下命令

        #啟動
        ./nginx

        #
        停止,此方式相當(dāng)于先查出nginx進程id再使用kill命令強制殺掉進程
        ./nginx?-s?stop

        #
        停止,此方式停止步驟是待nginx進程處理任務(wù)完畢進行停止
        ./nginx?-s?quit

        #
        重新加載配置文件,Nginx服務(wù)不會中斷
        ./nginx?-s?reload

        10)修改配置文件

        比如,修改端口號,默認端口號為80,咱們這里改成83;

        進入配置文件夾

        cd?/usr/local/nginx/conf

        備份原始配置文件

        cp?nginx.conf?nginx.conf.back

        編輯nginx.conf配置文件

        vim?nginx.conf

        找到server中的listen,修改端口號為83


        啟動服務(wù)

        #要進入sbin/下才能執(zhí)行
        ./nginx

        查看 nginx 進程

        ps?-ef|grep?nginx

        到此,nginx 安裝基本完成,直接在瀏覽器上訪問服務(wù)器地址:虛擬機的ip:83,就可以進入頁面

        安裝Tomcat

        tomcat 官網(wǎng)(http://tomcat.apache.org/)
        本次選擇的是最新版本,本次安裝環(huán)境是centos7。

        我是直接用wget命令下載

        解壓文件夾

        tar?-zxvf?apache-tomcat-8.5.40.tar.gz

        重新命名

        mv?apache-tomcat-8.5.40?tomcat-1

        同樣的,再次解壓安裝包,命名為tomcat-2

        mv?apache-tomcat-8.5.40?tomcat-2

        1)修改 tomcat 端口號

        將 tomcat-1 的 http 端口設(shè)置為8080,將 tomcat-2 的 http 端口設(shè)置為8081。

        進入tomcat的conf文件夾,修改server.xml

        vim?server.xml

        修改SHUTDOWN、HTTP/1.1、redirectPort、AJP/1.3端口,使其錯開,避免重啟的時候,報端口被占用問題

        tomcat-1 的SHUTDOWN、HTTP/1.1、redirectPort、AJP/1.3設(shè)置如下:


        <Server?port="9005"?shutdown="SHUTDOWN">
        ...

        <Connector?port="8080"?protocol="HTTP/1.1"
        ???????????????connectionTimeout="20000"
        ???????????????redirectPort="9443"?/>



        <Connector?port="9009"?protocol="AJP/1.3"?redirectPort="9443"?/>
        ...
        Server>

        tomcat-2 的SHUTDOWN、HTTP/1.1、redirectPort、AJP/1.3設(shè)置如下:


        <Server?port="10005"?shutdown="SHUTDOWN">
        ...

        <Connector?port="8081"?protocol="HTTP/1.1"
        ???????????????connectionTimeout="20000"
        ???????????????redirectPort="10443"?/>



        <Connector?port="10009"?protocol="AJP/1.3"?redirectPort="10443"?/>
        ...
        Server>

        2)啟動服務(wù)

        分別進入 tomcat-1 、 tomcat-2 的bin文件夾,執(zhí)行腳本,啟動服務(wù)

        sh?startup.sh

        查看服務(wù)是否啟動成功

        ps?-ef|grep?tomcat

        可以直接在瀏覽器上分別輸入ip:8080、ip:8081進行訪問了,結(jié)果如下:


        3)編寫Html,為了便于測試,我們創(chuàng)建一個html格式的頁面,進入tomcat-1的webapps文件夾,刪除ROOT文件夾里面的東西,創(chuàng)建index.html文件,內(nèi)容如下:


        <html>
        ????<head>
        ????????<meta?charset="utf-8">
        ????????<title>title>
        ????head>
        ????<body>
        ????????Hello?server1!
        ????body>
        html>

        4)進入tomcat-2的webapps文件夾,刪除ROOT文件夾里面的東西,創(chuàng)建index.html文件;


        <html>
        ????<head>
        ????????<meta?charset="utf-8">
        ????????<title>title>
        ????head>
        ????<body>
        ????????Hello?server2!
        ????body>
        html>

        5)測試,創(chuàng)建好了之后,分別在瀏覽器上訪問ip:8080、ip:8081。結(jié)果如下:


        Nginx負載均衡配置

        1)進入 Nginx 的配置文件夾

        cd?/usr/local/nginx/conf

        2)編輯nginx.conf配置文件

        vim?nginx.conf

        3)新增upstream集群配置點,配置如下:

        worker_processes??1;

        events?{
        ????worker_connections??1024;
        }

        http?{??
        ????include???????mime.types;

        ????default_type??application/octet-stream;

        ????sendfile????????on;

        ????keepalive_timeout??65;

        ????gzip??on;

        ?????#服務(wù)器的集群(這個就是我們要配置的地方)
        ?????#test.com:服務(wù)器集群名字,自定義
        ????upstream??test.com?{
        ????????#服務(wù)器配置?? weight是權(quán)重的意思,權(quán)重越大,分配的概率越大。
        ????????#127.0.0.1:8080、127.0.0.1:8081對應(yīng)tomcat服務(wù)器地址
        ????????server????127.0.0.1:8080??weight=1;
        ????????server????127.0.0.1:8081??weight=2;
        ????}

        ????server?{??
        ????????listen???????83;
        ????????server_name??localhost;

        ????location?/?{
        ????·????????#配置反向代理地址
        ????????????proxy_pass?http://test.com;
        ????????????proxy_redirect?default;
        ????????}


        ????????error_page???500?502?503?504??/50x.html;??
        ????????location?=?/50x.html?{??
        ????????????root???html;??
        ????????}??
        ????}??
        }

        參數(shù)說明:

        • worker_processes:工作進程的個數(shù),一般與計算機的cpu核數(shù)一致

        • worker_connections:單個進程最大連接數(shù)(最大連接數(shù)=連接數(shù)*進程數(shù))

        • include:文件擴展名與文件類型映射表

        • default_type:默認文件類型

        • sendfile :開啟高效文件傳輸模式,sendfile指令指定nginx是否調(diào)用sendfile函數(shù)來輸出文件,對于普通應(yīng)用設(shè)為
          on,如果用來進行下載等應(yīng)用磁盤IO重負載應(yīng)用,可設(shè)置為off,以平衡磁盤與網(wǎng)絡(luò)I/O處理速度,降低系統(tǒng)的負載。注意:如果圖片顯示不正常把這個改成off。

        • keepalive_timeout:長連接超時時間,單位是秒

        • upstream:服務(wù)器的集群配置點

        4)配置好之后,進入/usr/local/nginx/sbin/ 文件夾,重新刷新配置文件

        ./nginx?-s?reload

        5)測試,訪問Nginx服務(wù)器所在ip:83地址,多次刷新,看看效果:


        多刷幾次

        搭建失敗的原因:
        在搭建的過程很多人都可能搭建失敗,訪問不了Nginx的頁面,最主要的原因還是防火墻的原因,當(dāng)值訪問被攔截,訪問不了Nginx頁面。


        程序員專欄
        ?掃碼關(guān)注填加客服?
        長按識別下方二維碼進群

        近期精彩內(nèi)容推薦:??

        ?為何說IT科技公司應(yīng)該留住35歲員工?

        ?工友們!大家好,今天你摸魚了嗎?

        ?緩存穿透,雪崩,擊穿以及解決方案分析

        ?圖文詳解:如何給女朋友解釋什么是微服務(wù)?




        在看點這里好文分享給更多人↓↓

        瀏覽 31
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            免费做爱视频网站大尺度在线播放 | 粉嫩高清一区二区三区精品视频 | 国产黄色视频在线 | 又大又长又爽免费视频 | 国产91清纯白嫩初高中漫画 | 亚洲无码视频播放 | 欧美AAAAAA | 黄色小视频在线观看 | 嗯啊亚洲| 一级黄色生活片 |