實驗内容:用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配置段添加:
<Context path="/test" docBase="testapp"/>
]# 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,如需轉載請自行聯系原作者