基于apache实现负载均衡调度请求至后端tomcat服务器集群的实现

简介: 基于apache实现负载均衡调度请求至后端tomcat服务器集群的实现

一、LNMT实现
1、LNMT基本流程如下:
clinet===>http协议====>nginx====>reverse_proxy===>tomcat(connector组件)
客户端通过http协议将请求发送给nginx前端服务器,nginx将请求报文通过反向代理发送给tomcat,其中tomcat通过connector连接器接入请求并响应
2、nginx反向代理的配置:
编辑/etc/nginx/nginx.conf文件,添加新配置:
location / {

    #root   /usr/share/nginx/html;
   proxy_pass http://localhost:8080/ ;
    index  index.html index.htm;
}

proxy_pass http://localhost:8080/ ;##将来自nginx的请求反向代理至后端tomcat服务器,这需要在这里定义这一段即可。使用curl命令测试请求nginx监听的80端口会被反向代理至tomcat监听的8080端口
1
3、使用apache做负载衡调度器反向代理请求至后端tomcat:
因为tomcat支持的有基于AJP协议的连接器,而AJP连接器是一种二进制的协议 ,因此比http更好的性能。并且使用AJP连接器进行反向代理请求时,客户端主机没法通过http协议绕过前端的反向代理服务器,具有更好的操作可行性。所以,在使用前端服务器反向代理请求至tomcat这种模型架构中,一般作为tomcat的前端反向代理服务器大多为apache,然后再基于nginx做负载均衡调度请求给apache:
client===>nginx(负载均衡调度器)====>apache反向代理服务器===>tomcat服务器(基于AJP协议)

三、搭建一个以apache做负载均衡与反向代理服务器的简单模型:
1、实验服务器环境:
有三台阿里云服务器:A 172.18.224.100(使用apache提供反向代理与负载均衡效果)、B 172.18.224.101(tomcat服务器B) 、C、172.18.224.102(tomcat服务器C)
2、tomcatB、tomcatC提供测试页面:
a、关闭防火墙,安装JDK与tomcat(此处略过)
b、TomcatB服务器在tomcat/webapps/创建一个名为myapp的应用并提供测试页index.jsp:
cd /usr/local/tomcat/webapps/myapp
mkdir lib classes WEB-INF META-INF lib
vim index.jsp
index.jsp内容如下:
2
进行页面测试:
3

c、TomcatC服务器在tomcat/webapps/创建一个名为myapp的应用并提供测试页index.jsp:
cd /usr/local/tomcat/webapps/myapp
mkdir lib classes WEB-INF META-INF lib
vim index.jsp
index.jsp内容如下:

4
进行页面测试:
5

3、在服务器A上配置负载均衡apache反向代理自tomcatB、tomcatC:
1

###定义负载均衡服务器tomcats并反向代理至tomcatB、tomcatC

    balancerMember http://172.18.224.101:8080 loadfactor=1   
    balancerMember http://172.18.224.102:8080 loadfactor=1 ###定义负载均衡集群101、102,loadfactor =1 定义权重为1,假设102的loadfactor=2可以简单理解为每3次请求会有2次请求被调度到102这台服务器,有1次被调度到101服务器
    proxyset lbmethod=byrequests  ###设置负载均衡为轮询调度

###定义虚拟主机反向代理请求

    servername      lb    ###服务名称
    proxyvia        on      ###表明在后端tomcat服务器中http报文中的请求头via,在后端tomcat服务器的日志能获取到真正客户端请求ip与调度器的ip地址
    proxyrequests   off #####取消正向代理
    proxypreservehost       on  ###当客户端请求了LB的不同域名时,能反向解析处理报文
    <proxy  *>
            require all granted ####授予反向代理的内容访问权限
    </proxy>
    proxypass       /       balancer://tomcats/  ###把客户端请求的URL路径代理至上面定义好的负载均衡组tomcats对应路径上
    proxypassreverse /      balancer://tomcats/ ####经过调度器LB反解处理的URL请求也代理至后端集群的对应路径
    <location />
            require all granted  ###定义访问权限
    </location>

    <location /balancer-manager>  ###定义apache负载均衡的状态统计页
            sethandler balancer-manager
            proxypass !
            require all granted
    </location>


4、进行测试
浏览器访问负载均衡器A的/myapp/并进行多次刷新,发现成功构建了基于轮训的负载均衡到tomcat集群上
6
7

5、apache自带的负载均衡状态统计页面:
访问负载均衡器A的/balancer-manage页面8
页面中可以配置调度算法、流量统计、集群服务器上下线等功能

6、apache使用ajp协议反代请求至后端tomcat集群:
在实际生产环境中,一般是这种模型架构:
client====>负载均衡调度器(nginx/haproxy)===>apache(ajp协议反向代理)====>tomcat集群
基于ajp协议的反代配置如下:
2
tomcat的ajp连接器默认监听在8009端口,只需修改对应端口与协议即可

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
弹性计算 监控 负载均衡
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
监控 Java 应用服务中间件
低并发编程|如何用720个请求让后端服务器瘫痪
本次故障因应用启动时未有效校验核心依赖模块初始化异常,导致后续请求处理中抛出无法捕获的错误,引发线程阻塞,最终耗尽HSF线程池,服务不可用。排查发现类初始化失败且异常未被正确处理,结合线程无限等待问题,确认为依赖初始化异常与流处理中断所致。修复措施包括加强启动校验、捕获Throwable及设置合理超时。总结指出,系统稳定性需从细节入手,防微杜渐,避免连锁故障。
低并发编程|如何用720个请求让后端服务器瘫痪
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
850 61
|
运维 监控 负载均衡
slb后端服务器故障
slb后端服务器故障
470 13
|
JavaScript
使用node.js搭建一个express后端服务器
Express 是 Node.js 的一个库,用于搭建后端服务器。本文将指导你从零开始构建一个简易的 Express 服务器,包括项目初始化、代码编写、服务启动与项目结构优化。通过创建 handler 和 router 文件夹分离路由和处理逻辑,使项目更清晰易维护。最后,通过 Postman 测试确保服务正常运行。
1201 1
|
监控 负载均衡 算法
slb管理后端服务器
【10月更文挑战第18天】
320 5
|
关系型数据库 API 数据库
后端开发的艺术:从零到一构建高效服务器
在数字化时代,后端开发是支撑现代互联网应用的基石。本文旨在探讨后端开发的核心概念、关键技术以及如何构建一个高效的服务器。我们将从基础的编程语言选择开始,逐步深入到数据库设计、API开发和性能优化等关键领域。通过实际案例分析,我们将揭示后端开发的复杂性和挑战性,同时提供实用的解决方案和最佳实践。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和启发。
|
监控 Serverless API
利用云函数实现后端服务的无服务器化
【10月更文挑战第7天】本文介绍了无服务器架构中的核心组件——云函数,探讨了其概念、优势及应用。云函数使开发者能在无需管理服务器的情况下运行代码,具备自动扩展、成本效益、快速迭代和聚焦业务逻辑等优势。文章还详细说明了实施云函数的步骤,并分享了实战技巧,旨在帮助读者更好地理解和应用这一技术。

热门文章

最新文章

推荐镜像

更多