Tomcat運行方式html
1.standalone configure:tomcat做爲獨立的web服務器和jsp服務器前端
request ----> web server(tomcat) ----> servlet containernginx
2.進程間配置,在一臺主機上,web由Apache或nginx提供,jsp服務有servlet提供web
3.獨立網絡配置,把提供web服務的主機獨立出來,一臺主機提供web服務,一臺主機提供jsp服務apache
web/Apache和後端的servlet通訊有兩種方式:vim
1.mod_jk :Apache/1.3, Apache/2.0;mod_jk經常使用的版本是jk,jk2.0反倒不建議使用,Apache 2.0之前不支持使用mod_proxy後端
2.mod_proxy :Apache/2.2+ , Apache 2.2之後要使用mod_jk須要編譯安裝tomcat
注:通訊協議有 http(https)和ajp服務器
mod_jk V.S. mod_proxy:
負載均衡 : mod_proxy稍弱一點
管理接口 : 都支持基於web頁面的管理接口
兼容性:
配置 : mod_proxy較簡單
協議:mod_jk (ajp)一般不使用http, mod_proxy(http/https/ajp)網絡
web/nginx和後端的servlet通訊只能使用http協議
LAMT:
apache(mod_jk, ajp) + tomcat(ajp )
apache(mod_proxy, (http, https, ajp)) + tomcat(http, https, ajp)
LNMT:
nginx + tomcat(http, https)
LNMT實現
安裝nginx:
1: rpm -ivh nginx-1.4.7-1.e16.ngx.x86_64.rpm2: vim /etc/nginx/nginx.conf3: location / {4: # root html;5: # index index.html index.htm;6: proxy_pass http://192.168.21.1; #只需加入這一句便可實現最簡單的代理功能,不過咱們這裏不這樣作7: }
配置nginx實現反向代理tomcat和動靜分離
1: upstream tcser { #添加後端tomcat主機,這是定義在http段的2: server 192.168.21.1:8080;3: server 192.168.21.2:8080;4: }5: location / { 這是server段的6: root html;7: index index.jsp index.html index.htm; 增長一個index.jsp的默認主頁8: }9: location ~* \.(jsp|do)$ { #全部jsp和do結尾的頁面都代理至後端服務器器
10: proxy_pass http://tcser;11: }
Apache反代-->mod_proxy,將全部網頁內同都代理至後端,http協議
1: vim /etc/httpd/conf.d/mod_proxy.conf2: ProxyVia on
3: ProxyRequests off4: ProxyPreserveHost on
5:6: ProxyPass / http://192.168.21.1/7: ProxyPa***everse / http://192.168.21.1/8:9: <Location />10: Order Allow,Deny11: Allow from all12: </Location>
Apache反代-->mod_proxy,將全部網頁內同都代理至後端,ajp協議
1: ProxyVia on
2: ProxyRequests off3: ProxyPreserveHost on
4:5: ProxyPass / ajp://192.168.21.1:8009/ #ajp監聽的端口是80096: ProxyPa***everse ajp/ http://192.168.21.1:8009/7:8: <Location />9: Order Allow,Deny10: Allow from all11: </Location>
Apache反代實現負載均衡
前端Apache服務器:外網:172.16.21.1,內網:192.168.21.3
後端tomcat1:192.168.21.1,後端tomcat2:192.168.21.2
1: vim /etc/httpd/conf.d/mod_proxy.conf2: ProxyVia on
3: ProxyRequests off4: ProxyPreserveHost on
5: <Proxy balancer://lb>6: BalancerMember http://192.168.21.2 loadfactor=17: BalancerMember http://192.168.21.1 loadfactor=18: </Proxy>9: ProxyPass / balancer://lb/10: ProxyPa***everse / balancer://lb/11: <Location />12: Order Allow,Deny13: Allow from all14: </Location>
Apache反代實現負載均衡以及session綁定
1: vim /etc/httpd/conf.d/mod_proxy.conf2: ProxyVia on
3: ProxyRequests off4: ProxyPreserveHost on
5: <Proxy balancer://lb>6: BalancerMember http://192.168.21.2 loadfactor=1 route=TomcatB7: BalancerMember http://192.168.21.1 loadfactor=1 route=TomcatA8: </Proxy>9: ProxyPass / balancer://lb/ stickysession=JSESSIONID10: ProxyPa***everse / balancer://lb/11: <Location />12: Order Allow,Deny13: Allow from all14: </Location>15: --------後端服務器需添加----16: <Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatA"> 注意與上面的IP地址對應便可17: <Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatB">
Apache反代實現負載均衡以及session綁定添加管理器
1: vim /etc/httpd/conf.d/mod_proxy.conf2: ProxyVia on
3: ProxyRequests off4: ProxyPreserveHost on
5: <Proxy balancer://lb>6: BalancerMember http://192.168.21.2 loadfactor=17: BalancerMember http://192.168.21.1 loadfactor=18: </Proxy>9: <Location /lbmanager> 定義管理web功能10: SetHandler balancer-manager11: </Location>12: Proxypass /lbmanager ! #這裏表示/lbmanager不向後轉發13: ProxyPass / balancer://lb/14: ProxyPa***everse / balancer://lb/15: <Location />16: Order Allow,Deny17: Allow from all18: </Location>