最近在尝试架构WEB/AP,API服务器,整理一下。
1. WEB(Apache) + AP(Tomcat)
1.1 安装
1.安装或者解压压缩包到d:\Server\Apache2.2
2.测试:打开浏览器,输入localhost:80,显示[It's works!]
1.2 Load-Blancing
1.Tomcat集群:安装或解压压缩包到d:\Server\Tomcat1,d:\Server\Tomcat2
2.下载jk模块[mod_jk.so],放到:d:\Server\Apache2.2\modules
3.新建[d:\Server\Apache2.2\conf\\workers.properties]文件
#server worker.list = controller #控制器名称一览,逗号分隔。Web服务插件会初始化它。 #========tomcat1 连接指令======== # worker.. = worker.tomcat1.port=8009 #ajp协议的端口,如果2个tomcat部署在同一个服务器中,那个ajp端口需要不同 worker.tomcat1.host=127.0.0.1 #tomcat的所在主机的ip,如果是本机,则写本机的ip即可 worker.tomcat1.type=ajp13 #worker类型,ajp13是JK用于Web服务器和Tomcat之间通信的首选worker类型 worker.tomcat1.lbfactor=1 #负载因子 #========tomcat2======== worker.tomcat2.port=9009 worker.tomcat2.host=127.0.0.1 worker.tomcat2.type=ajp13 worker.tomcat2.lbfactor=1 #======== 负载均衡指令 ======== worker.controller.type=lb #worker类型,定义了可用于worker的指令。lb用于负载均衡 worker.controller.retries=3 #请求失败以后重试次数 worker.controller.balance_workers=tomcat1,tomcat2 #参与负载均衡的Tomcat名, worker.controller.sticky_session=false #会话是否有粘性,false表示无粘性,同一个会话的请求会到不同的tomcat中处理 worker.controller.sticky_session_force=false #当一个节点蹦了,如果设值为true,那么服务器返回500错误给客户端,如果设值为false,则转发给其他的tomcat,但是会丢失回话信息
4.新建[d:\Server\Apache2.2\conf\mod_jk.conf]文件
JkWorkersFile "D:/Server/Apache2.2/conf/workers.properties" JkMount /* controller jkLogFile "D:/Server/Apache2.2/logs/mod_jk.log"
5.修改[d:\Server\Apache2.2\conf\httpd.conf]文件
在最后增加下面两行,加载jk模块和配置
LoadModule jk_module d:/Server/Apache2.2/modules/mod_jk.so Include "d:/Server/Apache2.2/conf/mod_jk.conf"
6)配置Tomcat
修改[D:\Server\tomcat1\conf\server.xml]文件,修改[AJP/1.3]connector,加入jvmRoute(参与负载均衡的worker名):
Tomcat2里面的server.xml也修改,为了port不重复,
7)测试
分别在Tomcat1和Tomcat2里创建同样webapp,通过浏览器访问,会发现根据负载因子的定义,分别访问Tomcat1,Tomcat2。
1.3 SSL
1.修改[d:\Server\Apache2.2\conf\httpd.conf]文件
把下面两行的注释删除
Include conf/extra/httpd-ssl.conf LoadModule ssl_module modules/mod_ssl.so
2.修改[d:\Server\Apache2.2\conf\httpd-ssl.conf]文件
修改证书字段[SSLCertificateFile]和证书key字段[SSLCertificateKeyFile]的文件地址
SSLCertificateFile "d:/Server/Apache2.2/conf/server.crt" SSLCertificateKeyFile "d:/Server/Apache2.2/conf/server.key"
(这里省略证书的作成)
3.测试
访问https://localhost,出现页面就OK。
4.需要负载均衡的话,需要在httpd-ssl.conf文件里加入
JkMount /* controller # controller是控制器名
2. API(Tomcat)
2.1 SSL
1.在提供AP服务的Tomcat实例的server.xml里,加入以下内容:
(这里省略tomcat.keystore的生成)
还有注意修改ajp协议的port,不要和负载均衡的Tomcat里的ajp协议port重复。
2.测试
访问https://localhost:8443,可以看到Tomcat首页。
3.Reference:
1.Apache Tomcat Connectors:
https://tomcat.apache.org/connectors-doc/index.html
2.jk(Tomcat-Apache 插件,用来处理Tomcat 和 Apache之间的通信)
https://tomcat.apache.org/connectors-doc-archive/jk2/index.html
3.Tomcat SSL
https://tomcat.apache.org/tomcat-9.0-doc/ssl-howto.html#SSL_and_Tomcat
4.Tomcat集群
http://www.iteye.com/topic/1017961
5.Apache SSL
http://blog.csdn.net/happyqyt/article/details/9335397
6.Tomcat SSL
http://www.oschina.net/question/12_23148
End