ws0206079的gravatar头像
ws02060792017-06-30 10:16:41
Apache 2.4+Tomat 8集群配置

所需文件列表:

Apache 2.4.26

Tomcat 8.5.15

 

步骤:

1.解压下载下来的Apache安装包,此处下载的是httpd-2.4.26-x64-vc14.zip

 

2.由于本机上已经注册过Apache 2.2,故现在直接切换到Apache2.4的bin目录下执行httpd -k install -n Apache24会提示端口无法绑定的错误,所以得先对Apache的监听端口进行修改

  打开httpd.conf文件,对Line:60行的

#Listen 12.34.56.78:80

Listen 81

进行修改,此处我改的是81

 

3.在Apache的安装目录下的/config路径下找到httpd.conf文件,打开后添加或者放开相应注释都行

#---------------------start------------------------

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

LoadModule rewrite_module modules/mod_rewrite.so

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule slotmem_shm_module modules/mod_slotmem_shm.so

LoadModule speling_module modules/mod_speling.so

LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so

#LoadModule ssl_module modules/mod_ssl.so

#----------------------end---------------------

需要注意的是,此处加载的文件,如果前面已经是放开的状态,此处最好就不要添加或者加上注释,虽然有重复的不一定有问题。个人习惯就是看不惯重复的在这放着... ...

 

4.去掉Line:514 #Include conf/extra/httpd-vhosts.conf前的注释,引入扩展配置文件httpd-vhosts.conf

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

 

5.打开Apache安装目录下conf/extra/httpd-vhosts.conf文件,添加如下内容 

<VirtualHost *:81>

    ServerAdmin 413536253@qq.com

    ProxyPass / balancer://cluster/

    ProxyPassReverse / balancer://cluster/

    ServerName localhost

    ErrorLog "logs/error.log"

    CustomLog "logs/access.log" common

</VirtualHost>

ProxyRequests Off

<proxy balancer://cluster>

    BalancerMember ajp://localhost:8010 loadfactor=1 route=tomcat8_1 smax=5 max=20 ttl=120 retry=300 timeout=15

    BalancerMember ajp://localhost:8011 loadfactor=1 route=tomcat8_2 smax=5 max=20 ttl=120 retry=300 timeout=15

</proxy>

 

  其中各项说明:

                ServerAdmin:服务器穦邮箱,当服务器出现错误时,将会告知该邮箱,测试时可以随便填。(测试时从未收到过邮件)

                ProxyPass:将远程服务器映射到本地服务器的URL空间,其中/为转发匹配路径,当匹配到前缀为/的url时将其转发到balancer://cluster/均衡器上,其后可带参数

                        stickysession(默认值:-):均衡器粘连会话名称。该值常常会被设置为类似JSESSIONID或者PHPSESSIONID之类的值

                        nofailover(默认值: Off):当工作单元被禁用或者出错时,会话则立即中断。

                        timeout(默认值:0):均衡器超时时间,单位为秒。如果设置了,那么就是等待空闲工作单元的最大时间。默认是不等。

                        maxattempts(默认值:1):重试次数

                        lbmethod(默认值:byrequests):选择均衡器的负载均衡方式。可以是byrequests,进行加权请求计数,或者是bytraffic,进行加权流量字节计数均衡。默认按请求数。

                ProxyPassReverse:反向代理,其中/为反射代理匹配路径,当匹配到前缀为/的请求时,将其转发到balancer://cluster/均衡器上。主要用于后端返回redirect等情况时的处理

                ServerName:服务器名称(服务器IP)

                ErrorLog:错误日志存储位置

                CustomLog:用户操作日志

 

               ProxyRequests:正向代理

               BalancerMember:均衡器成员

                        BalancerMember:定向包协议://IP地址:端口号 [loadfactor] [route]...

                                loadfactor:权重,支持0-100 权重越大,访问频率越高

                                route:工作单元的路由,用于负载均衡器中。该路由是附加给会话ID的一个值。与Tomcat中配置jvmRoute的值对应的话,在SeesionId后会附带其值

其它参数详情可参考:http://shiningray.cn/proxypass-directive-in-apache.html

 

6.Tomcat配置(Tomcat配置中第三步主要用于Seesion共享,可以叫做Session复制在配置完Tomcat的Session共享后,需要在WEB-INFO下的web.xml文件中添加<distributable/>属性,来告知servlet/JSP容器,编写将在分布式Web容器中部署的应用)

1.修改三个端口。

<Server port="8005" shutdown="SHUTDOWN">

 

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1"

            redirectPort="8443" />

 

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

 

些处各Tomcat的端口不能冲突

2.将

<Engine defaultHost="localhost" name="Catalina">

 修改为:

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat8_1">

defaultHost值在多个服务器负载均衡时写IP(访问地址),jvmRoute与workers.properties中配置的tomcat相同

:(推断)由于workers.properties中已配置的定向包协议及主机地址、端口等信息,故jvmRoute不做配置也是能找到相应Tomcat的,

   经过测试,在不配置jvmRoute属性时,打印出来的SessionId中不会包含Tomcat名称信息
 

3.对Tomcat进行集群配置

将Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>放开注释即可,由于本次配置的两个Tomcat服务器均在本地,因此只启用这个<Cluster>的话,这个元素下的默认Receiver port就会冲突

所以需要进行下详情配置,而些配置各版本Tomcat的写法又可能不尽相同,故需要参考tomcat安装目录下webapps\docs\cluster-howto.html文件中复制session的配置)。

 

发现问题

此种配置方案,有时会出现一直只在一个Tomcat访问,设置的权重似乎没生效,经过多次试验,这种情况在刷新页面的出现的机率比较大,但是在地址栏按回车键重新访问页面则会按照权重进行多个服务器间的轮流访问。

具体原因不明,解决方案待研究。

 

分享到:

最近浏览
子非鱼蛋9月5日
暂无贡献等级
junwuxie8月29日
最代码贡献等级说明
JiangBigPan8月22日
最代码贡献等级说明
Xwer01238月15日
暂无贡献等级
yuhao199411227月31日
暂无贡献等级
kevin5087月28日
暂无贡献等级
hunter927月27日
暂无贡献等级
ljc3047587907月25日
暂无贡献等级
chokkint7月24日
暂无贡献等级
3625330417月24日
最代码贡献等级说明
Liujiang19937月23日
最代码贡献等级说明
kinggode7月22日
最代码贡献等级说明
千里草7月21日
暂无贡献等级
heiyeleng7月20日
暂无贡献等级
kaqichen7月20日
暂无贡献等级
zhangyunqiang7月19日
暂无贡献等级
HUANG8887月19日
最代码贡献等级说明
dapeng6687月19日
暂无贡献等级
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友