欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

千鋒扣丁學(xué)堂Linux培訓(xùn)之如何輕松配置Nginx+Tomcat的集群和負(fù)載均衡

2019-06-13 13:50:21 1148瀏覽

今天千鋒扣丁學(xué)堂Linux培訓(xùn)老師給大家分享一篇關(guān)于如何輕松配置Nginx+Tomcat的集群和負(fù)載均衡的詳細(xì)介紹,首先Tomcat集群是當(dāng)單臺服務(wù)器達(dá)到性能瓶頸,通過橫向擴(kuò)展的方式提高整體系統(tǒng)性能的有效手段。Nginx是一個高性能的HTTP和反向代理web服務(wù)器,可以通過簡單的配置實現(xiàn)Tomcat集群的負(fù)載均衡。本文使用的Tomcat是8.5.35版本,Nginx是1.14.2版本。



1.概述

對于Web應(yīng)用來說,集群最大的問題就是Session信息的共享,一般有以下解決方法:

使用粘性會話,比如,使用IPHash的負(fù)載均衡策略,將當(dāng)前用戶的請求都集中到一臺服務(wù)器上;缺點(diǎn)是單點(diǎn)故障,會話丟失

使用Session復(fù)制,使用Tomcat自帶的Session復(fù)制策略,將會話信息同步到集群的各個節(jié)點(diǎn);缺點(diǎn)是消耗更多內(nèi)存和帶寬,適用于小型集群

使用第三方緩存中間件緩存整個集群會話信息,比如Redis緩存,可由應(yīng)用程序控制與Session的關(guān)聯(lián),也可以適配Tomcat

當(dāng)然了,也可以把會話信息存到共享文件系統(tǒng)或者數(shù)據(jù)庫

在配置Nginx的過程中,可能會遇到以下問題:

配置upstream名稱時不能使用下劃線,比如tomcat_ha,否則Tomcat會拋出Thecharacter[_]isnevervalidinadomainname的異常

在windows上殺掉所有的nginx.exe進(jìn)程,taskkill/fi"imagenameeqnginx.exe"/f

在windows上有個pid為4的系統(tǒng)進(jìn)程會占用80端口,所以這里將nginx改為了8000

在配置Tomcat集群的過程中,需要注意的問題:

確保web.xml配置了元素

確保Context的Manager別被替換成了標(biāo)準(zhǔn)會話管理器

Receiver.address不要配置成auto,因為默認(rèn)可能會綁定127.0.0.1;Receiver.port可改也可不改,Tomcat會自行檢測4000-4100范圍內(nèi)的可用端口,自動處理沖突

如果在不同服務(wù)器上,需要關(guān)閉防火墻或開端口,還有時間同步

2.Nginx核心配置

Nginx使用的是默認(rèn)配置,添加和修改的核心配置如下:

http { 
  ... 
  #gzip  on; 
   
  #設(shè)置負(fù)載均衡的服務(wù)器列表和權(quán)重 
  upstream tomcat-ha { 
      #ip_hash;  
      server 172.31.1.41:8080 weight=1; 
      server 172.31.1.42:8080 weight=1; 
  } 
   
  server { 
      listen       8000; 
      server_name  localhost; 
 
      #charset koi8-r; 
      #access_log  logs/host.access.log  main; 
 
      location / { 
          root   html; 
          index  index.html index.htm; 
          #轉(zhuǎn)發(fā)請求 
          proxy_pass http://tomcat-ha$request_uri; 
          proxy_set_header Host $http_host; 
          proxy_set_header X-Real-IP $remote_addr; 
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
          proxy_set_header X-Forwarded-Proto $scheme; 
      } 
      ... 
  } 
} 

3.Tomcat集群配置

啟用集群配置,在元素中添加以下配置:

<!-- channelSendOptions=6 同步復(fù)制 --> 
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6"> 
  <!-- 集群 Session 管理器 --> 
  <Manager className="org.apache.catalina.ha.session.BackupManager" 
             expireSessionsOnShutdown="false" 
             notifyListenersOnReplication="true" 
             mapSendOptions="6"/> 
  <!-- 
  <Manager className="org.apache.catalina.ha.session.DeltaManager" 
           expireSessionsOnShutdown="false" 
           notifyListenersOnReplication="true"/> 
  --> 
  <!-- 集群內(nèi)部通信配置 --> 
  <Channel className="org.apache.catalina.tribes.group.GroupChannel"> 
    <Membership className="org.apache.catalina.tribes.membership.McastService" 
                address="228.0.0.4" 
                port="45564" 
                frequency="500" 
                dropTime="3000"/> 
    <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 
              address="192.168.10.2" 
              port="5000" 
              selectorTimeout="100" 
              maxThreads="6"/> 
    <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> 
      <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> 
    </Sender> 
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> 
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/> 
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/> 
  </Channel> 
  <!-- 此 vavle 攔截請求,并將 Session 信息發(fā)給內(nèi)部節(jié)點(diǎn) --> 
  <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" 
         filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/> 
  <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> 
</Cluster> 

簡單描述下工作原理:

nginx將請求轉(zhuǎn)發(fā)給Tomcat1,請求登錄認(rèn)證,創(chuàng)建會話,生成Cookie,在響應(yīng)返回之前,將Session信息復(fù)制到Tomcat2

再次請求時,nginx將帶著會話Cookie的請求轉(zhuǎn)發(fā)給了Tomcat2,Tomcat2發(fā)現(xiàn)內(nèi)部Session池中有關(guān)聯(lián)的已認(rèn)證成功的Session對象,不再認(rèn)證返回請求資源

4.驗證負(fù)載均衡和Session復(fù)制

4.1測試環(huán)境

使用兩臺PC部署Tomcat,對應(yīng)關(guān)系是:172.31.1.41-Tomcat1,172.31.1.42-Tomcat2

部署基于使用Tomcat自帶的SessionExample程序,編寫了一個tomcat-benchmark的web應(yīng)用

結(jié)合Tomcat自帶的Manager應(yīng)用,查看已部署應(yīng)用內(nèi)部Session池

4.2負(fù)載均衡

修改tomcat-benchmark部署描述符文件中的context-param為"I'mTomcat1/2"用于區(qū)分兩個Tomcat,啟動Nginx和Tomcat,在瀏覽器訪問172.31.1.42:8000可以看到請求在兩個服務(wù)器間切換:

4.3Session復(fù)制

為了方便理解,這里先把Nginx的負(fù)載均衡策略設(shè)置成ip_hash:

假設(shè)Nginx始終將請求定位到Tomcat1上,然后在Tomcat1上創(chuàng)建會話,往會話中添加一些屬性

關(guān)閉Tomcat1模擬故障,此時Nginx會帶著之前的會話Cookie將請求轉(zhuǎn)發(fā)到Tomcat2,上

查看Tomcat2上是否存在與Cookie(JSESSIONID)關(guān)聯(lián)的Session信息,若有表示復(fù)制成功

整個過程如下:

正好與上述描述的相反,可以看到Session信息從Tomcat2復(fù)制到了Tomcat1中。

以上就是關(guān)于千鋒扣丁學(xué)堂Linux培訓(xùn)之如何輕松配置Nginx+Tomcat的集群和負(fù)載均衡的全部內(nèi)容,最后想要了解更多關(guān)于Linux方面內(nèi)容的小伙伴,請關(guān)注扣丁學(xué)堂Linux培訓(xùn)官網(wǎng)、微信等平臺,扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育平臺為您提供權(quán)威的Linux開發(fā)視頻,Linux培訓(xùn)后的前景無限,行業(yè)薪資和未來的發(fā)展會越來越好的,扣丁學(xué)堂老師精心推出的Linux在線教程定能讓你快速掌握Linux從入門到精通開發(fā)實戰(zhàn)技能。扣丁學(xué)堂Linux技術(shù)交流群:422345477。


扣丁學(xué)堂微信公眾號                          Python全棧開發(fā)爬蟲人工智能機(jī)器學(xué)習(xí)數(shù)據(jù)分析免費(fèi)公開課直播間


      【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】         【掃碼進(jìn)入Python全棧開發(fā)免費(fèi)公開課】



查看更多關(guān)于“Linux培訓(xùn)資訊”的相關(guān)文章>>

標(biāo)簽: Linux培訓(xùn) Linux視頻教程 紅帽Linux視頻 Linux學(xué)習(xí)視頻 Linux入門視頻

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費(fèi)咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部