负载平衡是指将任务分配到一组资源上,以减少单一资源上的沉重工作量。把负载均衡器看作是一个流量警察,它管理来自客户的流量并将其分配到多个服务器上。
负载平衡增强了性能,并确保服务器不会因工作负荷过重而宕机。如果其中一个资源出现故障,它还可以帮助管理流量。
本教程将向你展示如何使用Apache HTTP服务器在Apache Tomcat上设置一个负载均衡器。
注意:在我们继续之前,请确保你已经安装了Apache Tomcat和Apache HTTPD并正常工作。请查看我们的专题教程以了解更多。
第1步 - 下载mod_jk
在本教程中,我们将使用mod_jkk模块来实现Tomcat服务器的负载均衡。mod_jk是一个apache模块,用于为负载均衡和代理功能提供一个集群。
你需要单独安装该模块,因为它没有被打包在Apache HTTP中。
打开你的浏览器并导航到。
archive.apache.org/dist/tomcat…

在我们安装mod_jk模块之前,请确保Apache Tomcat和HTTPD都在正常运行。
第2步 - 安装mod_jk
一旦你下载了mod_jk模块,下一步就是在Apache服务器上安装它。
首先解压存档。接下来,选择mod_jk.so文件并复制到HTTPD根目录下的modules目录。

第3步 - 在HTTP配置中添加模块
一旦我们将mod_jk模块添加到Apache HTTPD的modules目录中,我们需要通过编辑httpd.conf文件来加载它。
在conf目录下,用你喜欢的文本编辑器编辑httpd.conf文件。

接下来,在httpd.conf文件中添加以下条目来加载mod_jk模块。

在下一步,我们需要在httpd.conf文件中配置mod_jk模块。考虑一下下面所示的条目。
# Path to the worker config file
JkWorkersFile C:\httpd\conf\workers.properties
# Logging and Memory
JkShmFile C:\httpd\log\mod_jk.shm
JkLogFile C:\httpd\log\mod_jk.log
JkLogLevel info
# Monitoring
JkMount /stat/* stat
JkMount /* balancer
在JkWorkersFile中,我们定义了Tomcat工作者的路径。

- JkShmFile - 定义了mod_jk共享内存文件的路径。
- JkLogFile - mod_jk的日志文件。
- JkLogLevel - 设置mod_jk的日志级别。
- JkMount - 将worker映射到状态worker上
- JkMount - 映射Tomcat负载平衡器。
第4步 - 设置集群工作者
在这一步,我们需要配置工作者。Worker指的是用于处理请求的Tomcat服务器。
打开Apache HTTPD的安装目录,导航到conf目录。创建一个worker.properties文件。
注意:确保 workers.properties 文件的路径与 httpd.conf 目录中设置的路径相似。
在 workers.properties 文件中,输入如下所示的条目。
worker.list=stat
worker.jk-status.type=status
worker.jk-status.read_only=true
worker.tomcat_1.type=ajp13
worker.tomcat_1.port=9001
worker.tomcat_1.host=127.0.0.1
worker.tomcat_2.type=ajp13
worker.tomcat_2.port=9002
worker.tomcat_2.host=127.0.0.1
worker.tomcat_3.type=ajp13
worker.tomcat_3.port=9003
worker.tomcat_3.host=1270.0.0.1
worker.list=balancer
worker.balancer.type=lb
worker.balancer.balance_workers=tomcat_1,tomcat_2,tomcat_3

以下是工作者文件中的属性及其各自的用途。
- worker.list=stat- 将状态工作者指定为工作者列表中的一员。
- worker.jk_status.type- 使用状态定义工作者。
- worker.jk_status.read_only - 设置状态为只读。
- worker.tomcat_1.type - 定义了 tomcat 实例的连接器。这在所有 Worker 1、2、3 和 n 中是类似的。
- worker.tomcat_1.port- 为每个 Worker 设置端口。
- worker.tomcat1.host- 定义每个 Worker 的主机。
- worker.list=balancer- 定义要分配的负载平衡工作者。
- worker.balancer.balance_workers- 将所有定义的 Worker 添加到负载平衡器 "balancer" 中。
最后,保存文件并重新启动服务器。
总结
本指南介绍了如何为 Apache Tomcat 和 HTTPD 服务器设置负载均衡。