web服务器:Apache、Nginx、IIS等html
应用服务器:Tomcat、JBoss、Weblogic等linux
如今web服务器和应用服务器其实界限已经不是太清晰了,大部分的应用服务器也包含一些web服务器的功能,使用什么服务器大部分取决与架构场景和技术解决方案。web
在服务器集群中,主要场景是一下几种:apache
1,静态资源优化windows
2,多环境应用整合tomcat
3,负载均衡服务器
4,其余复合场景架构
接下来准备将Apache(web服务器)与两个Tomcat(应用服务器)集成在一块儿。app
1.环境准备负载均衡
1.1 Apache安装
windows下面安装Apache简单不少,直接相似软件点击下一步安装一下,配置一下端口号(默认80)。启动就行了。
访问localhost:80/index.html
1.2 Tomcat1与Tomcat2准备
在tomcat官网下载两个免安装的zip包直接解压出来tomcat1和tomcat2;
在tomcat1的目录下打开tomcat1/conf/server.xml,修改HTTP/1.1端口号为:8081
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
在tomcat1的目录下打开tomcat1/conf/server.xml,修改HTTP/1.1端口为:8082,AJP端口为:8010,redirectPort:8444,Server port:8006,避免与tomcat1端口冲突,由于我这里使用的一台机器搭建的集成环境。
<Connector port="8082" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8444" />
<Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />
在tomcat/bin目录下点击startup.bat,启动两个tomcat,这里有一个控制台乱码问题,修改一下tomcat/conf/logging.properties,把编码改成GBK
在idea控制台里面有时也会出现相似问题,修改字符集就能够解决。
1.3 在tomcat1和tomcat2的webapps清空,并放入本身测试的资源sample1和sample2的index.html
hello,tomcat1!
hello,tomcat2!
重启tomcat1和tomcat2访问
localhost:8081/sample1/index.html
localhost:8082/sample2/index.html
2.集群配置
2.1修改httpd.conf,加载模块
这里为何加载mod_jk模块,Apache与tomcat集成是能够经过AJP协议也能够经过HTTP协议,能够使用mod_jk(AJP)和mod_proxy+mod_proxy_ajp(AJP)集成也能够使用mod_proxy+mod_proxy_http(HTTP),这里使用是mod_proxy+mod_proxy_http。
在Apache目录下的modules找一下,没有mod_jk.so,他是tomcat提供的,能够按照本身的机器和Apache版本找一个放在modules下面。
mod_jk.so下载地址http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/
我这里为了方便,直接使用mod_proxy.so+mod_proxy_http.so
接下来修改httpd.conf,加载mod_proxy.so、mod_proxy_http.so模块去掉#
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_module modules/mod_proxy_http.so
在httpd.conf的最后一行,从新开一行,没有任何结束符号的空白地方增长
ProxyPass "/sample1" "http://localhost:8081/sample1" ProxyPassReverse "/sample1" "http://localhost:8081/sample1" ProxyPass "/sample2" "http://localhost:8082/sample2" ProxyPassReverse "/sample2" "http://localhost:8082/sample2"
访问localhost:80/sample1
访问localhost:80/sample2