<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Nginx搭配Tomcat實(shí)現(xiàn)負(fù)載均衡

          共 4588字,需瀏覽 10分鐘

           ·

          2020-12-26 07:46

          Python實(shí)戰(zhàn)社群

          Java實(shí)戰(zhàn)社群

          長(zhǎng)按識(shí)別下方二維碼,按需求添加

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

          進(jìn)Python社群▲

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

          進(jìn)Java社群


          作者丨非科班的科班
          來(lái)源丨黎杜編程

          Nginx簡(jiǎn)介

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

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

          Nginx 的負(fù)載均衡算法:

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

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

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

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

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

          (4)url_hash:按照訪問的 URL 的 hash 結(jié)果分配請(qǐng)求,每個(gè)請(qǐng)求的 URL 會(huì)指向后端固定的某個(gè)服務(wù)器,可以在 Nginx 作為靜態(tài)服務(wù)器的情況下提高緩存效率。同樣要注意 Nginx 默認(rèn)不支持這種調(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 依賴庫(kù)

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

          3)安裝 zlib 依賴庫(kù)

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

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

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

          5)解壓 Nginx

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

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

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

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


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

          make?install

          8)查找安裝路徑

          whereis?nginx

          結(jié)果如下:


          9)啟動(dòng)服務(wù)

          進(jìn)入 nginx 的目錄

          cd?/usr/local/nginx/sbin/

          執(zhí)行如下命令

          #啟動(dòng)
          ./nginx

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

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

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

          10)修改配置文件

          比如,修改端口號(hào),默認(rèn)端口號(hào)為80,咱們這里改成83;

          進(jìn)入配置文件夾

          cd?/usr/local/nginx/conf

          備份原始配置文件

          cp?nginx.conf?nginx.conf.back

          編輯nginx.conf配置文件

          vim?nginx.conf

          找到server中的listen,修改端口號(hào)為83


          啟動(dòng)服務(wù)

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

          查看 nginx 進(jìn)程

          ps?-ef|grep?nginx

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

          安裝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 端口號(hào)

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

          進(jìn)入tomcat的conf文件夾,修改server.xml

          vim?server.xml

          修改SHUTDOWN、HTTP/1.1、redirectPort、AJP/1.3端口,使其錯(cuò)開,避免重啟的時(shí)候,報(bào)端口被占用問題

          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)啟動(dòng)服務(wù)

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

          sh?startup.sh

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

          ps?-ef|grep?tomcat

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


          3)編寫Html,為了便于測(cè)試,我們創(chuàng)建一個(gè)html格式的頁(yè)面,進(jìn)入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)進(jìn)入tomcat-2的webapps文件夾,刪除ROOT文件夾里面的東西,創(chuàng)建index.html文件;


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

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


          Nginx負(fù)載均衡配置

          1)進(jìn)入 Nginx 的配置文件夾

          cd?/usr/local/nginx/conf

          2)編輯nginx.conf配置文件

          vim?nginx.conf

          3)新增upstream集群配置點(diǎn),配置如下:

          worker_processes??1;

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

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

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

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

          ????keepalive_timeout??65;

          ????gzip??on;

          ?????#服務(wù)器的集群(這個(gè)就是我們要配置的地方)
          ?????#test.com:服務(wù)器集群名字,自定義
          ????upstream??test.com?{
          ????????#服務(wù)器配置?? weight是權(quán)重的意思,權(quán)重越大,分配的概率越大。
          ????????#127.0.0.1:8080、127.0.0.1:8081對(duì)應(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:工作進(jìn)程的個(gè)數(shù),一般與計(jì)算機(jī)的cpu核數(shù)一致

          • worker_connections:?jiǎn)蝹€(gè)進(jìn)程最大連接數(shù)(最大連接數(shù)=連接數(shù)*進(jìn)程數(shù))

          • include:文件擴(kuò)展名與文件類型映射表

          • default_type:默認(rèn)文件類型

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

          • keepalive_timeout:長(zhǎng)連接超時(shí)時(shí)間,單位是秒

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

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

          ./nginx?-s?reload

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


          多刷幾次

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


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

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

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

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

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

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




          在看點(diǎn)這里好文分享給更多人↓↓

          瀏覽 31
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91美女裸体网站 | 色五月天激情 | 天天干视频在线91 | 五月天色色图 | 天堂av影院 |