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

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 基于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端口,只需修改对应端口与协议即可

相关实践学习
小试牛刀,一键部署电商商城
SAE 仅需一键,极速部署一个微服务电商商城,体验 Serverless 带给您的全托管体验,一起来部署吧!
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
6月前
|
SQL 机器学习/深度学习 分布式计算
大数据-81 Spark 安装配置环境 集群环境配置 超详细 三台云服务器
大数据-81 Spark 安装配置环境 集群环境配置 超详细 三台云服务器
278 1
|
1月前
|
消息中间件 分布式计算 资源调度
基于云服务器的数仓搭建-集群安装
本文介绍了大数据集群的安装与配置,涵盖Hadoop、Zookeeper、Kafka和Flume等组件。主要内容包括: 1. **数据模拟** 2. **Hadoop安装部署**:详细描述了HDFS和YARN的配置,包括NameNode、ResourceManager的内存分配及集群启动脚本。 3. **Zookeeper安装**:解压、配置`zoo.cfg`文件,并创建myid文件 4. **Kafka安装**:设置Kafka环境变量、配置`server.properties` 5. **Flume安装**:配置Flume采集日志到Kafka,编写启动脚本进行测试。
107 1
|
6月前
|
消息中间件 分布式计算 监控
大数据-78 Kafka 集群模式 集群的应用场景与Kafka集群的搭建 三台云服务器
大数据-78 Kafka 集群模式 集群的应用场景与Kafka集群的搭建 三台云服务器
186 6
|
6月前
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
118 4
|
6月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
138 4
|
6月前
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
71 3
|
6月前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
96 3
|
6月前
|
Kubernetes 应用服务中间件 nginx
搭建Kubernetes v1.31.1服务器集群,采用Calico网络技术
在阿里云服务器上部署k8s集群,一、3台k8s服务器,1个Master节点,2个工作节点,采用Calico网络技术。二、部署nginx服务到k8s集群,并验证nginx服务运行状态。
2038 1
|
6月前
|
分布式计算 监控 Hadoop
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
95 1
|
6月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
121 1

推荐镜像

更多