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

时间:2021-02-14 18:08:29

一、应用场景

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

二、系统环境

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

操作系统:ubuntu 14;

应用服务器:tomcat 8.5+;

Web服务器:apache 2.4+;

三、Tomcat配置

从tomcat官网下载压缩包,解压为两个tomcat实例(分别为tomcat-8080与tomcat-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,可以查看配置是否成功,与分流效果。

来自:李德涛博客