`

负载均衡 + SSL

    博客分类:
  • Java
阅读更多

最近在尝试架构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 name>.<directive>=<value>
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名):

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" jvmRoute="tomcat1"/>

 Tomcat2里面的server.xml也修改,为了port不重复,

<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" jvmRoute="tomcat2"/>

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里,加入以下内容:

<Connector SSLEnabled="true" acceptCount="100" clientAuth="false"
    disableUploadTimeout="true" enableLookups="false" maxThreads="25"
    port="8443" keystoreFile="d:\Server\tomcat.keystore" keystorePass="NNNNNN"
    protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
    secure="true" sslProtocol="TLS" />

(这里省略tomcat.keystore的生成)

还有注意修改ajp协议的port,不要和负载均衡的Tomcat里的ajp协议port重复。

<Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />

 

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

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics