一、应用场景
在生产环境中,应用服务器(此文以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,可以查看配置是否成功,与分流效果。
来自:李德涛博客