基于apache的tomcat负载均衡与集群

2024-09-04 12:38

本文主要是介绍基于apache的tomcat负载均衡与集群,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基于apache的tomcat负载均衡与集群

  • 博客分类: 
  • 应用服务器
  • tomcat
  • apache
  • web
tomcat apache 应用服务器 web
在之前的项目中使用过IBM的websphere进行负载均衡的配置,鉴于websphere过于沉重与激活问题,尝试使用tomcat进行集群分布,从而实现负载均衡(即由多台服务器来分担访问量,这样在一个服务器上的压力就会减小很多,你可以根据自己的需求去配置任意多的服务器来支撑你的应用系统,如果一台服务崩溃了,那么另外的应用服务器依然可以继续支持应用继续服务。) 
   为了实现负载均衡,就自然产生两个问题, 
1、如何在多台服务器之间进行session共享,保证一台宕机的情况下另外的服务器可以正常运行(该问题在下文中论述tomcat的会话复制问题),2、如何对访问请求进行分配到不同的服务器。对于这两个问题,我们就需要有一个负责负载均衡的web服务器去完成请求的分配与session的共享(本文暂不对此原理进行讨论)。 
  对于apache服务器和tomcat的连接方法了解到有三种:mod_JK、http_proxy和ajp_proxy.本文针对mod_jk进行学习,由于条件有限,不在不同的服务器上进行集群垂直分布,而采用同一台服务器端口号不同的方式进行集群水平分布, 
使用的环境配置为:apache 2.4 + tomcat 7 + mod_jk2.4.17进行集群分布式管理 
安装包下载:http://www.apachelounge.com/download/; 
具体配置步骤如下: 
1、apache2.4安装注册,从官网下载压缩包,解压进入bin目录,cmd模式进入该目录进行服务注册:httpd.exe -k install;(注意管理员模式防止注册失败)。注册完成后如图1: 
2、安装tomcat。官网直接下载tomcat,修改文件名tomcat1复制并修改tomcat2; 
3、使用mod_jk进行集群管理: 
    a、在apache24/conf目录下新建workers.properties文件,管理容器列表,内容如下: 
          
Java代码   收藏代码
  1. worker.list = controller,tomcat1,tomcat2  #server 列表      
  2.            #========tomcat1========      
  3.            worker.tomcat1.port=8019       #ajp13 端口号,在tomcat下server.xml配置,默认8009      
  4.            worker.tomcat1.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址    (若垂直分布则在此修改不同的主机地址)  
  5.            worker.tomcat1.type=ajp13      
  6.            worker.tomcat1.lbfactor = 1    #server的加权比重,值越高,分得的请求越多      
  7.     
  8.            #========tomcat2========      
  9.        worker.tomcat2.port=8029       #ajp13 端口号,在tomcat下server.xml配置,默认8009      
  10.        worker.tomcat2.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址      
  11.        worker.tomcat2.type=ajp13      
  12.        worker.tomcat2.lbfactor = 2    #server的加权比重,值越高,分得的请求越多      
  13.     
  14.        #========controller,负载均衡控制器========      
  15.        worker.controller.type=lb      
  16.        worker.controller.balanced_workers=tomcat1,tomcat2   #指定分担请求的tomcat      
  17.        worker.controller.sticky_session=1  
    b、在apache24/conf目录下新建mod_jk.conf文件,进行负载均衡配置,内容如下: 
          
Java代码   收藏代码
  1. #加载mod_jk Module    
  2.            LoadModule jk_module modules/mod_jk.so  
  3.   
  4.            #指定 workers.properties文件路径    
  5.            JkWorkersFile conf/workers.properties    
  6.   
  7.            #指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器    
  8.            JkMount /* controller    
    c、在apache24/conf目录下httpd.conf中增加mod_jk.conf文件的管理: 
            文件末尾加入:
Java代码   收藏代码
  1. include conf/mod_jk.conf  
。 
4、修改tomcat1、tomcat2端口设置conf/server.xml(若不同服务器集群垂直分布,即每台服务器只安装一个tomcat则不需要修改): 
      
Java代码   收藏代码
  1. --<Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />---与workers.properties中对应分别修改为8019/8029;  
  2.        --<Server port="8105" shutdown="SHUTDOWN">---port修改 进行区分8105/8205,默认为8005  
  3.        --<Connector port="8180"                                       ----port修改为8180/8280,默认为8080;  
5、将编译好的web项目分别放入tomcat下webapps目录下,启动apache、tomcat1、tomcat2。访问http://127.0.0.1/test/index.jsp观察tomcat1与2的测试情况如下图2 


△过程中遇到的问题及注意点: 
1、本文中的测试是采用水平分布 
2、apache启动:通过bin目录下的ApacheMonitor.exe,进行服务管理,若启动失败,则可能是如下问题: 
        a、apache默认的80端口被占用,检查方法:cmd命令下:netstat -ano,若存在80端口则根据PID查询该端口的被占用程序进行相关处理,本文中该端口被SQL server reporting services(SQLEXPRESS)占用,解决为关闭改服务; 
        b、apache24/conf/httpd.conf中apache24的路径配置不正确。问题原因查询:在运行下输入event选择事件查看器,通过查看日志定位错误 
        c、mod_jk与apache版本不匹配,解决方法:下载匹配的关联版本。
  • test.rar (1.7 MB)
  • 下载次数: 1

这篇关于基于apache的tomcat负载均衡与集群的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136051

相关文章

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

SpringBoot的内嵌和外置tomcat的实现方式

《SpringBoot的内嵌和外置tomcat的实现方式》本文主要介绍了在SpringBoot中定制和修改Servlet容器的配置,包括内嵌式和外置式Servlet容器的配置方法,文中通过示例代码介绍... 目录1.内嵌如何定制和修改Servlet容器的相关配置注册Servlet三大组件Servlet注册详

MySQL MHA集群详解(数据库高可用)

《MySQLMHA集群详解(数据库高可用)》MHA(MasterHighAvailability)是开源MySQL高可用管理工具,用于自动故障检测与转移,支持异步或半同步复制的MySQL主从架构,本... 目录mysql 高可用方案:MHA 详解与实战1. MHA 简介2. MHA 的组件组成(1)MHA

SpringBoot整合Apache Spark实现一个简单的数据分析功能

《SpringBoot整合ApacheSpark实现一个简单的数据分析功能》ApacheSpark是一个开源的大数据处理框架,它提供了丰富的功能和API,用于分布式数据处理、数据分析和机器学习等任务... 目录第一步、添加android依赖第二步、编写配置类第三步、编写控制类启动项目并测试总结ApacheS

Apache服务器IP自动跳转域名的问题及解决方案

《Apache服务器IP自动跳转域名的问题及解决方案》本教程将详细介绍如何通过Apache虚拟主机配置实现这一功能,并解决常见问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录​​问题背景​​解决方案​​方法 1:修改 httpd-vhosts.conf(推荐)​​步骤

golang实现nacos获取配置和服务注册-支持集群详解

《golang实现nacos获取配置和服务注册-支持集群详解》文章介绍了如何在Go语言中使用Nacos获取配置和服务注册,支持集群初始化,客户端结构体中的IpAddresses可以配置多个地址,新客户... 目录golang nacos获取配置和服务注册-支持集群初始化客户端可选参数配置new一个客户端 支

MySQL数据库读写分离与负载均衡的实现逻辑

《MySQL数据库读写分离与负载均衡的实现逻辑》读写分离与负载均衡是数据库优化的关键策略,读写分离的核心是将数据库的读操作与写操作分离,本文给大家介绍MySQL数据库读写分离与负载均衡的实现方式,感兴... 目录读写分离与负载均衡的核心概念与目的读写分离的必要性与实现逻辑读写分离的实现方式及优缺点读负载均衡

MySQL集群高可用架构的两种使用小结

《MySQL集群高可用架构的两种使用小结》本文介绍了MySQL的两种高可用解决方案:组复制(MGR)和MasterHighAvailability(MHA),文中通过示例代码介绍的非常详细,对大家的学... 目录一、mysql高可用之组复制(MGR)1.1 组复制核心特性与优势1.2 组复制架构原理1.3

Docker + Redis 部署集群的实现步骤

《Docker+Redis部署集群的实现步骤》本文详细介绍了在三台服务器上部署高可用Redis集群的完整流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、环境准备1. 服务器规划(3 台服务器)2. 防火墙配置(三台服务器均执行)3. 安装 docke

tomcat日志中文乱码问题及解决方案

《tomcat日志中文乱码问题及解决方案》文章主要介绍了在使用Tomcat时遇到的乱码问题及其解决方法,页面输出乱码可能由于server.xml配置、HTML标签、编程输出编码不一致引起,解决方法包括... 目录一、页面输出乱码1.server.XML配置未注明编码格式2.catalina.bawww.cp