tomcat基於Nginx、apache、以及第三方模塊的負載均衡

tomcat基礎概念及基於Nginx、apache、以及第三方模塊的負載均衡


【背景】 

   客戶端動態:是由客戶端請求,服務器端把源代碼原封不動的發給客戶端,然後客戶端的瀏覽器來解析。但是這樣存在的弊端就是,如果C語言編譯過,不是所有的客戶端平臺都和C編譯的平臺相同。那麼其他的用戶就沒辦使用。而java是基於客戶端的虛擬主機運行的。客戶端只要安裝了java虛擬機。不管使用的什麼平臺,都會通過java虛擬磨平底層架構的區別。這樣只要服務器編譯,客戶端運行即可。

程序接口:有開發接口,和運行接口。這樣就實現了,一次開發到處運行。

存在問題:1.客戶端運行不安全,萬一下載到病毒,繞過應用級,後果很嚴重。2:容易被反編譯,代碼容易被獲取。

於是之後又產生了服務器端的動態:也就是基於CGI協議的實現, 這是一種更安全的協議。web是充當一個反向代理的方式來實現的。

【java的技術體系】

JAVA的技術體系由四個組成部分:

    java程序設計語言:

    java應用程序接口:(API

    Java class類文件格式:

    java 虛擬機

【java的實現過程】

JAVA的底層實現過程:

通常一個大的應用程序,裏面包含很多小的java程序。他們想要運行就必須先通過JAVA編譯器編譯,編譯的過程就是把java語言變成類文件(*.class),也就是字節碼。但是JAVA程序想要被運行,必須運行在JVM上。但是一個程序被運行,還需要其依賴的類。這時就需要在依賴的jAVA虛擬機中,有一個類加載器,這個類加載器把Java程序需要的類,加載到虛擬機上。這樣一個JAVA就可以實現在虛擬機上運行了。但是我們的可以查看到java程序處理的結果,還需要我們的物理機通過系統調用或者庫調用,實現最終終端java程序的效果。

wKioL1TCM-jBeSSIAAE_WZHNr3c917.jpg


【基於nginx的負載均衡】 

lftp 172.16.0.1:/pub/Sources/6.x86_64/jdk> mget jdk-7u67-linux-x64.rpm  // 下載jdk程序包
126857158 bytes transferred in 14 seconds (8.42M/s)                         
lftp 172.16.0.1:/pub/Sources/6.x86_64/jdk> bye     
[root@localhost ~ ]# ls
anaconda-ks.cfg  apache-tomcat-7.0.55.tar.gz  install.log install.log.syslog  jdk-7u67-linux-x
[root@localhost~ ]# ls      
anaconda-ks.cfg              install.log         jdk-7u67-linux-x64.rpm
apache-tomcat-7.0.55.tar.gz  install.log.syslog
[root@localhost ~ ]#rpm -ivh jdk-7u67-linux-x64.rpm
Preparing...               ########################################### [100%]
   1:jdk                   ########################################### [100%]

 

爲了讓java可以運行起來,我們需要爲java添加一個環境變量;JAVA_HOME

注意在;這個JAVA_HOME.就是我們安裝的jdk的文件位置。我們使用最新的一個,也就是

JAVA_HOME--> /usr/java/latest

[root@localhost jdk1.7.0_67 ]# cd /etc/profile.d/
[root@localhost profile.d ]# vim java.sh 
  1 export JAVA_HOME=/usr/java/latest
  2 export PATH=$JAVA_HOME/bin:$PATH
[root@localhost profile.d ]# printenv   //重讀環境變量,查看生成的變量HOSTNAME=localhost.localdomain
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=172.16.250.222
53438 22
QTDIR=/usr/lib64/qt-3.3
QTINC=/usr/lib64/qt-3.3/include
SSH_TTY=/dev/pts/0
USER=root
[root@localhost ~ ]# java -version     //查看java版本,觀察是否正常
java version "1.7.0_67" Java(TM) SE Runtime
Environment (build 1.7.0_67-b01) Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
#################################部署tomcat ##########################################
tar xf apache-tomcat-7.0.55.tar.gz  -C /usr/local 
Ln
-sv apache-tomcat-7.0.55 tmocat
[root@localhost profile.d ]# vim tomcat.sh  //或者tomcat.sh 添加tomcat的環境變量
  1 export CATALINA_HOME=/usr/local/tomcat
  2 export PATH=$CATALINA_HOME/bin:$PATH
####################################重讀路徑文件#######################################
 #. /etc/profie.d/tomcat.sh
[root@localhost bin]# . /etc/profile.d/tomcat.sh
[root@localhostbin ]# catalina.sh start
#################其他節點相同操作,佈置不同的顯示頁面,便於查看效果####################

################################配置基於Nginx的負載均衡實驗########################################

在http後端端定義upstream組。

[root@node1 nginx ]# vim nginx.conf
 36     #gzip on;
 37
 38    upstream tcsrvs {
 39        server 192.168.0.104:8080;
 40        server 192.168.0.103:8080;
 41     }

#################################### 定義前端引用############################################

 [root@node1 conf.d ]#vim default.conf 
  4 server {
  5    listen       80 default_server;
  6    server_name  _;    :x 
 12    location / {
 13    #rewrite /(.*) /bbs/$1 break;
 14       # root   /usr/share/nginx/html/;
 15        index  index.html index.htm;
 16        proxy_pass http://tcsrvs;
 17     }

重啓測試訪問NGINX

wKioL1TCNdzwwo2fAADjp2aoLQ8488.jpg

wKiom1TCNSST-H2CAADkoYnoGMU709.jpg

【基於apache的負載均衡】

httpd配置文件如下配置,但是要把中心主機關閉,開啓虛擬主機。

 #vim /etc/httpd/conf/httpd.conf
  1 NameVirtualHost*:80
  2 <Proxy balancer://tcsrvs>              ####定義的負載均衡的後端主機組
  3    BalancerMember  loadfactor=1   各後端主機
  4    BalancerMember http://192.168.0.103:80 loadfactor=1
  5 #  ProxySet lbmethod=byrequests
  6 </Proxy>
  7 <VirtualHost *:80>
  8     ServerName www.stu11.com
  9     ErrorLog logs/error_log
 10     CustomLog logs/access_log common
 11     ProxyVia On
 12     ProxyRequests OFF
 13     proxypreserveHost On
 14     <Proxy *>                              ####定義訪問控制限爲all
 15     Order deny,allow
 16     Allow from all
 17     </Proxy>
 18     Proxypass /status !
 19     ProxyPass / balancer://tcsrvs/
 20     proxypa***everse / balancer://tcsrvs/  ####引用定義的組
 21     <location />
 22     Order deny,allow
 23     Allow from all
 24     </location>
 25 </VirtualHost>

【使用apache基於ajp協議實現負載均衡配置文件如下】

  1 NameVirtualHost*:80
  2 <Proxy balancer://tcsrvs>
  3    BalancerMember ajp://192.168.0.104:8009 loadfactor=1
  4    BalancerMember http://192.168.0.103:8009 loadfactor=1
  5 #  ProxySet lbmethod=byrequests
  6 </Proxy>
  7 <VirtualHost *:80>
  8     ServerName www.stu11.com
  9     ErrorLog logs/error_log
 10     CustomLog logs/access_log common
 11     ProxyVia On
 12     ProxyRequests OFF
 13     proxypreserveHost On
 14     <Proxy *>
 15     Order deny,allow
 16     Allow from all
 17     </Proxy>
 18     Proxypass /status !
 19     ProxyPass / balancer://tcsrvs/
 20     proxypa***everse / balancer://tcsrvs/
 21     <location />
 22     Order deny,allow
 23     Allow from all
 24     </location>
 25 </VirtualHost>

wKioL1TCN6TSFtfbAADcq-gyDYk082.jpg

wKiom1TCNuihnJIYAADczoVkM1o912.jpg

【制定管理頁面不代理】

 

1 NameVirtualHost *:80
  2 <Proxy balancer://tcsrvs>
  3    BalancerMember  loadfactor=1
  4    BalancerMember http://192.168.0.103:80 loadfactor=1
  5 #  ProxySet lbmethod=byrequests
  6 </Proxy>
  7 <VirtualHost *:80>
  8     ServerName www.stu11.com
  9     ErrorLog logs/error_log
 10     CustomLog logs/access_log common
 11     ProxyVia On
 12     ProxyRequests OFF
 13     proxypreserveHost On
 14     <Proxy *>
 15     Order deny,allow
 16     Allow from all
 17     </Proxy>
 18     <Location /balancer-manager> ####定義管理頁面
 19     SetHandler balancer-manager
 20     Proxypass !                  ###不給於代理  
 21     Order Deny,Allow
 22     ALLow from all
 23     </Location>
 24     Proxypass /status !
 25     ProxyPass / balancer://tcsrvs/
 26     proxypa***everse / balancer://tcsrvs/
 27     <location /> 
 28     Order deny,allow
 29     Allow from all
 30     </location>
 31 </VirtualHost>

wKiom1TCOH_Sfpi-AAFm8TQYVsU996.jpg


【基於第三方模塊mod_jk實現負載均衡】

[root@node1 conf.d
]# vim workers.propeties
  1 worker.list=tcsrvs,StatA
  2 worker.TomcatA.port=8009
  3 worker.TomcatA.host=172.16.249.11
  4 worker.TomcatA.type=ajp13
  5 worker.TomcatA.lbfactor=1
  6
  7 worker.TomcatB.port=8009
  8 worker.TomcatB.host=172.16.249.12
  9 worker.TomcatB.type=ajp13
 10 worker.TomcatB.lbfactor=1
 11 worker.tcsrvs.type=lb
 12 worker.tcsrvs.sticky_session=1
 13
worker.tcsrvs.balance_workers=TomcatA,TomcatB
 14 worker.statA.type=status 
[root@node1 conf.d]# vim mod_jk.conf
  1 Loadmodule jk_module modules/mod_jk.so
  2 JkWorkersFile /etc/httpd/conf.d/workers.propeties
  3 JklogFile logs/mod_jk.log
  4 JklogLevel info
  5 JkMOunt /status !
  6 JkMount /jk-status StatA
  7 JkMount /* tcsrvs

wKioL1TCOhmySOqUAADOfkd02Lk890.jpg

wKiom1TCOVzh9ZMlAADskdw9lE8760.jpg

















































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章