apache+tomcat配置负载均衡,实现http与websocket接口分压
一、应用场景
在生产环境中,应用服务器(此文以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,可以查看配置是否成功,与分流效果。
来自:李德涛博客
apache+tomcat配置负载均衡,实现http与websocket接口分压的更多相关文章
- Apache+Tomcat部署负载均衡(或集群)
本来只打算写Tomcat集群部署,简化Apache和Tomcat整合过程的.后来想了想,这样不便于没有用过Apache的朋友来学习本文内容.于是干脆加大篇幅,让对Apache不了解的朋友能对Apach ...
- 简单的 Nginx+Tomcat 配置负载均衡集群
简单 Nginx+Tomcat 配置负载均衡集群 前期准备 解压两个tomcat,修改端口号 server1:8081 server:8082 同时启动 nginx官网下载解压版nginx 创建一个简 ...
- Apache和Tomcat 配置负载均衡(mod-proxy方式)-无session共享、无粘性session
转:https://blog.csdn.net/wangjunjun2008/article/details/38268483 mod-proxy方式实现负载均衡是利用了Apache 2.x版本自带的 ...
- Apache+Tomcat实现负载均衡
反向代理负载均衡 (Apache2+Tomcat7/8) 使用代理服务器可以将请求转发给内部的Web服务器,让代理服务器将请求均匀地转发给多台内部Web服务器之一上,从而达到负载均衡的目的.这种代理方 ...
- 基于Apache+Tomcat实现负载均衡
1.基于Apache和tomcat实现负载均衡 准备三个虚拟机一个安装Apache两个安装Tomcat 关闭防火墙 systemctl stop firewalld Iptabled -F Seten ...
- Apache +Tomcat的负载均衡与集群配置
实验拓扑图: 一.搭配环境 (1).Tomcat的安装和配置 Tomcat_a的ip:192.168.55.229 Tomcat_b的ip:192.168.55.231 Tomcat的需要安装jdk和 ...
- Apache和Tomcat 配置负载均衡(mod-proxy方式)-粘性session
Tomcat集群配置后端Tomcat Server为支持AJP的独立服务,前端Apache配置为粘性会话(sticky-session),Tomcat不配置Cluster配置和Session复制. 配 ...
- Apache+Tomcat+mod_jk负载均衡
一.需要的软件 1.jdk1.5以上 2.Tomcat6以上 3.Apache2.2以上 ,地址http://apache.dataguru.cn//httpd/binaries/win32/ ,名称 ...
- centos6.5 apache+tomcat结合 负载均衡
一. 负载均衡:根据 uri 表达式把请求分发给各个服务器处理.如:/*.jsp = lb_s 就是说把所有jsp请求交给lb_s , 当然它是个Tomcat. 二. 安装配置mod_jk m ...
随机推荐
- 实用maven笔记四-打包&其他
通过使用maven的生命周期和丰富多样的插件,可以方便的将项目代码编译打包为自己需要的构件. maven默认项目主代码位置src/main/java目录,测试代码位置src/test/java目录.主 ...
- SQL才是世界上最牛逼的语言!
身处互联网行业,SQL 可能是你需要掌握的核心技能之一. 最早的时候,SQL 作为一门查询数据库的语言,是程序员的必备技能,运维.开发.Web 以及数据等从业人员都需要用到 SQL,毕竟只有查询到正确 ...
- 开发效率优化之自动化构建系统Gradle(二)下篇
阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680本篇文章将继续从自定义 Gradle 插件开发来介绍自动化构建系统 ...
- Python-数字类型补充
Python第五节数字类型补充 数字类型转换 int(x) float(x) complex(x) complex(x, y) 数学常量 pi e PS 数字类型不允许改变 也就是说,当我们对数字类型 ...
- idea设置忽略svn的文件或目录
1. 这个地方可以设置忽略的文件和目录,但是这里设置之后,我们在工程里面就看不到了 2. 这里设置提交是后要忽略的文件,比如我忽略的target目录,*.iml 我再1中设置了target目录发现我的 ...
- Linux上安装JDk教程
使用如下命令 uname –a.如果输出结果中含有X86_64,表明系统是64位的,如果出现i686,证明系统是32位的. 没有安装包,就去官网下载 http://www.oracle.com/tec ...
- 【CSS3】rgba与opacity
RGBA 语法 R:红色值.正整数 | 百分数 G:绿色值.正整数 | 百分数 B:蓝色值.正整数| 百分数 A:透明度.取值0~1之间 为什么要用RGBA而不用opacity 因为在项目中需要用到一 ...
- ftp的虚拟用户的使用
虚拟用户原理 因为在linux之下,使用vsftp建立用户之后,默认使用ftp访问的时候,是会访问到对应的用户家目录.如果想多个用户同时访问某一个目录,同时对同一目录下有着不同的权限,比如部分用户只能 ...
- sql 合并查询结果
在使用js报表工具的时候,常常需要提供json数据进行显示, 在sql查询的时候就需要构造合适的查询结果出来; 就用到了合并两个没有关联关系的表数据, SELECT SUM(a1.amount) AS ...
- leetcood学习笔记-27-移除元素
题目: 第一次提交: class Solution: def removeElement(self, nums, val: int) -> int: for i in range(len(num ...