apache+tomcat配置负载均衡,实现http与websocket接口分压

一、应用场景

在生产环境中,应用服务器(此文以tomcat为例)不免面临高访问量的压力,相比而言web服务器(此文以apache为例)能够承担更大的并发量。Apache本身带有一些模块,可以完成对应用服务器访问流量分流分压的功能。这里就以apache+tomcat配置负载均衡的方式,实现httpwebsocket接口分压的效果。

二、系统环境

服务器:阿里云ECS服务器;

操作系统:ubuntu 14

应用服务器:tomcat 8.5+;

Web服务器:apache 2.4+;

三、Tomcat配置

tomcat官网下载压缩包,解压为两个tomcat实例(分别为tomcat-8080tomcat-8082)。

a) 修改tomcat-8080的配置文件(conf/server.xml

 <Connector port=”8080″ protocol=”HTTP/1.1″

               connectionTimeout=”20000″

               redirectPort=”8443″ URIEncoding=”UTF-8″ />

 <Connector port=”8010″ protocol=”AJP/1.3″

redirectPort=”8443″ URIEncoding=”UTF-8″ />

 <Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”jvm8080″>

四、修改tomcat-8082的配置文件(conf/server.xml

 <Connector port=”8082″ protocol=”HTTP/1.1″

               connectionTimeout=”20000″

               redirectPort=”8443″ URIEncoding=”UTF-8″ />

 <Connector port=”8012″ protocol=”AJP/1.3″

redirectPort=”8443″ URIEncoding=”UTF-8″ />

 <Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”jvm8082″>

五、Apache配置

a) 开启模块

a2enmod proxy*

a2enmod lbmethod*

a2enmod xml2enc

b) 配置vhost

i. site-enabled下创建文件balance.conf

ii. ports.conf开启代理端口(此处以82为例)

iii. 内容编辑如下:websocket的负载均衡要在ajp的负载均衡之前

#配置端口

<VirtualHost *:82>

ServerAdmin webmaster@localhost

DocumentRoot /var/www/html

###########负载均衡配置开始###########

ProxyRequests Off

    ProxyPass /balancer-manager !

###一、配置websocket的负载均衡###

<Proxy balancer://wscluster>

     BalancerMember ws://localhost:8080

     BalancerMember ws://localhost:8082

</Proxy>

#代理项目的weboscket接口

ProxyPass /project/wsApi  balancer://wscluster/project/wsApi

    ProxyPassReverse /project/wsApi  balancer://wscluster/project/wsApi

###二、配置常规负载均衡###

<Proxy balancer://tomcatcluster>

    BalancerMember ajp://127.0.0.1:8010 route=jvm8080

BalancerMember ajp://127.0.0.1:8012 route=jvm8082

   ProxySet lbmethod=byrequests  stickysession=JSESSIONID|jsessionid  nofailover=On scolonpathdelim=On

    </Proxy>

#代理websocket接口外的其他请求

    ProxyPass /  balancer://tomcatcluster/

    ProxyPassReverse /  balancer://tomcatcluster/

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

#展示负载均衡的管理页面

<Location /balancer-manager>

        SetHandler balancer-manager

</Location>

###########负载均衡配置结束###########

</VirtualHost>

c) 启动与查看

启动tomcat,启动apache

通过ip:82/balancer-manager,可以查看配置是否成功,与分流效果。

© 2017, 李德涛博客. 版权所有.

《apache+tomcat配置负载均衡,实现http与websocket接口分压》有3个想法

  1. 找了好半天才找到有关websocket,tomcat8的负载均衡问题,但是写的有点凌乱的感觉,请问是否可以加下qq,可方便向您请教问题,还望不吝赐教~
    qq:781200048

发表评论

电子邮件地址不会被公开。 必填项已用*标注