天天看點

nginx做前端反代負載均衡,後端httpd+tomcat

實驗内容:用nginx做前端反代負載均衡後端httpd+tomcat

實驗環境:實體機win7,虛拟機centos7;

node1:172.18.11.111 httpd+tomcat

node2:172.18.11.112 httpd+tomcat

node3:172.18.11.113 nginx反代負載均衡

說明:httpd有兩種方式與tomcat通信;

(1)httpd可使用http子產品反代tomcat,此時tomcat使用http連結器;

(2)httpd還可使用ajp子產品反代tomcat,此時tomcat使用ajp連結器;

<a href="http://s1.51cto.com/wyfs02/M01/82/C1/wKiom1df9KKxa2-kAABeLevrCLc804.png" target="_blank"></a>

在node3上:

安裝nginx

]# yum  -y install nginx-1.8.0-1.el7.ngx.x86_64.rpm 

]# vim /etc/nginx/conf.d/default.conf

在server配置段添加:

location / {

  root   /usr/share/nginx/html;

  index  index.html index.htm;

  proxy_pass http://websrvs;

}

]# vim /etc/nginx/nginx.conf

在http配置段添加:

upstream websrvs {

  server 172.18.11.111:80 weight=1;

  server 172.18.11.112:80 weight=2;

分别在node1和node2上:安裝httpd和tomcat

安裝java運作環境:

]# yum -y install java-1.7.0-openjdk java-1.7.0-openjdk-devel

]# vim /etc/profile.d/java.sh

export JAVA_HOME=/usr

]# . /etc/profile.d/java.sh

安裝tomcat:

]# yum install tomcat tomcat-lib tomcat-webapps tomcat-admin-webapps

在web工作目錄建立應用存放目錄;

]# cd /var/lib/tomcat/webapps/

]# mkdir testapp

]# mkdir classes lib WEB-INF META-INF

]# vim  /var/lib/tomcat/webapps/testapp/index.jsp

<a href="http://s5.51cto.com/wyfs02/M02/82/C2/wKiom1df-g_xtldtAAAuY0ofLk4067.png" target="_blank"></a>

]# vim /etc/tomcat/server.xml 

在Engine配置段添加:

&lt;Context path="/test" docBase="testapp"/&gt;

]# systemctl start tomcat.service

把建立的所有目錄檔案複制一份到node2上,然後再做配置檔案修改:

]# scp -r /var/lib/tomcat/webapps/testapp/ node2:/var/lib/tomcat/webapps/

]# scp /etc/tomcat/server.xml node2:/etc/tomcat/

在node2上:

]# vim /var/lib/tomcat/webapps/testapp/index.jsp

<a href="http://s5.51cto.com/wyfs02/M01/82/C2/wKiom1df-pCzqMTcAAA2Dt0cSX0340.png" target="_blank"></a>

]# systemctl start tomcat

安裝好tomcat後,分别在node1和node2上安裝httpd并編輯配置檔案:

]# yum -y install httpd

]# vim /etc/httpd/conf/httpd.conf 

#DocumentRoot "/var/www/html"

]# vim /etc/httpd/conf.d/proxy_http_tomcat.conf

<a href="http://s3.51cto.com/wyfs02/M00/82/C2/wKiom1df_k_TDw3HAAAwe0Ppc8k484.png" target="_blank"></a>

因為node1和node2都是httpd本地反代tomcat,所有配置檔案完全一樣;

本次使用proxy_http_module反代子產品基于http協定與tomcat通信:

]# httpd -M

<a href="http://s4.51cto.com/wyfs02/M02/82/C2/wKiom1dgBJDyEiHfAAAqpC92lOk177.png" target="_blank"></a>

]# systemctl start httpd

多次重新整理後,實作負載均衡且比例為1:2,實作了前端nginx反代後端tomcat。

<a href="http://s4.51cto.com/wyfs02/M01/82/C2/wKiom1dgBSuDKcpIAAA6rbXUPak762.png" target="_blank"></a>

<a href="http://s5.51cto.com/wyfs02/M02/82/C0/wKioL1dgBj7TynFsAAA1SMVh4_Q294.png" target="_blank"></a>

如果要做會話粘性,可在nginx上在upstream配置段添加一條指令即可:

  ip_hash;

說明:ip_hash是基于源ip做會話綁定的。

多次重新整理後,會綁定在一個源ip上。

httpd還可使用ajp協定進行反代tomcat,這樣的好處是避免使用者請使用求跨過httpd來通路tomcat,因為如果使用http協定反代,則有可能會使用者直接通路後端的tomcat而跨過了httpd。

其配置也非常簡單,根據以上配置稍作修改即可:

隻需修改node1和node2上的配置檔案:

<a href="http://s4.51cto.com/wyfs02/M01/82/C0/wKioL1dgCRyjTb_HAABR88kO03M525.png" target="_blank"></a>

其它都不變。

檢視httpd已加載的子產品:

<a href="http://s4.51cto.com/wyfs02/M01/82/C2/wKiom1dgCGDwRIFBAAAqqv2jOws219.png" target="_blank"></a>

以上過程就是簡單實作nginx作為反代負載均衡至後端tomcat伺服器的配置實驗。

本文轉自 crystaleone 51CTO部落格,原文連結:http://blog.51cto.com/linsj/1789310,如需轉載請自行聯系原作者