1.首先安装apache,编译完成后,通过IP:端口就行访问,如果返回“it workers”证明Apache启动成功(注意apache的工程路径要正确)

2.下载JK,下载地址为http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.31/,果http服务器是Apache2.0.X版本,则必须选择mod_jk-1.2.31-httpd-2.0.52.so,页面下方有英文的说明,大家可以看下,我这里宣传的mod_jk-1.2.23-apache-2.2.x-linux-x86_64.so,跟自己操作系统版本吻合,然后重命名为mod_jk.so,并且赋值777权限

3.将mod_jk.so拷贝到apache/modules

4.在httpd.conf里增加如下内容

include "/usr/local/apache/conf/mod_jk.conf"

5.在conf路径下新建mod_jk.conf文件,并添加如下内容

#加载mod_jk Module

LoadModule jk_module modules/mod_jk.so

#指定 workers.properties文件路径

JkWorkersFile conf/workers.properties

#指定哪些请求交给tomcat处理,"loadbalancer"为在workers.propertise里指定的负载分配控制器名

JkLogFile logs/mod_jk.log

#JkLogLevel debug

JkMount  /*.do loadbalancer

JkMount  /*.jsp loadbalancer

6.在conf下新建workers.properties文件,并添加如下内容

worker.list=loadbalancer

#此处与mod_jk.conf中保持一致

worker.worker2.port=8009

#tomcat2中 ajp13 端口号,对应tomcat配置文件server.xml中Connector port="8009",默认8009

worker.worker2.host=127.0.0.1

#worker2的地址,本机loaclhost或者127.0.0.1,远程直接写IP

worker.worker2.type=ajp13

#与worker2中的server.xml的protocol保持一致

worker.worker2.lbfactor=1

#负载的权重值,越高表示负载越大

worker.worker3.port=9009

worker.worker3.host=127.0.0.1

worker.worker3.type=ajp13

worker.worker3.lbfactor=1

worker.loadbalancer.type=lb

worker.loadbalancer.balance_workers=worker2,worker3

#指定负载的worker列表,用逗号分隔

worker.loadbalancer..sticky_session=false

#配置session会话是否为粘性

#这样负载均衡器lb就会尽量保持一个session,也就是使用户在一次会话中跟同一个Tomcat进行交互

worker.loadbalancer..sticky_session_force=false

worker.loadbalancer.sticky_session=1

#是否启用session共享

7.下载tomcat并解压,复制2份tomcat,保持成为worker2,worker3

修改2个tomcat的server.xml,保证2个tomcat的端口号不一致,具体配置如下,需要修改黑体加粗标示

worker2如下:

[html]view plaincopy

 
  1. <?xmlversion='1.0'encoding='utf-8'?>

  2. <Serverport="8005"shutdown="SHUTDOWN">

  3. <ListenerclassName="org.apache.catalina.core.AprLifecycleListener"SSLEngine="on"/>

  4. <ListenerclassName="org.apache.catalina.core.JasperListener"/>

  5. <ListenerclassName="org.apache.catalina.mbeans.ServerLifecycleListener"/>

  6. <ListenerclassName="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>

  7. <GlobalNamingResources>

  8. <Resourcename="UserDatabase"auth="Container"

  9. type="org.apache.catalina.UserDatabase"

  10. description="User database that can be updated and saved"

  11. factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

  12. pathname="conf/tomcat-users.xml"/>

  13. </GlobalNamingResources>

  14. <Servicename="Catalina">

  15. <Connectorport="8080"protocol="HTTP/1.1"

  16. connectionTimeout="20000"

  17. redirectPort="8443"/>

  18. <Connectorport="8009"protocol="AJP/1.3"redirectPort="8443"/>

  19. <!--<Engine name="Catalina" defaultHost="localhost">-->

  20. <Enginename="Catalina"defaultHost="localhost"jvmRoute="worker2">

  21. <RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"

  22. resourceName="UserDatabase"/>

  23. <Hostname="localhost"appBase="webapps"

  24. unpackWARs="true"autoDeploy="true"

  25. xmlValidation="false"xmlNamespaceAware="false">

  26. </Host>

  27. </Engine>

  28. </Service>

  29. </Server>

worker3如下:

[html]view plaincopy

 
  1. <?xmlversion='1.0'encoding='utf-8'?>

  2. <Serverport="8006"shutdown="SHUTDOWN">

  3. <ListenerclassName="org.apache.catalina.core.AprLifecycleListener"SSLEngine="on"/>

  4. <ListenerclassName="org.apache.catalina.core.JasperListener"/>

  5. <ListenerclassName="org.apache.catalina.mbeans.ServerLifecycleListener"/>

  6. <ListenerclassName="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>

  7. <GlobalNamingResources>

  8. <Resourcename="UserDatabase"auth="Container"

  9. type="org.apache.catalina.UserDatabase"

  10. description="User database that can be updated and saved"

  11. factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

  12. pathname="conf/tomcat-users.xml"/>

  13. </GlobalNamingResources>

  14. <Servicename="Catalina">

  15. <Connectorport="8081"protocol="HTTP/1.1"

  16. connectionTimeout="20000"

  17. redirectPort="8443"/>

  18. <Connectorport="9009"protocol="AJP/1.3"redirectPort="8443"/>

  19. <!--<Engine name="Catalina" defaultHost="localhost">-->

  20. <Enginename="Catalina"defaultHost="localhost"jvmRoute="worker3">

  21. <RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"

  22. resourceName="UserDatabase"/>

  23. <Hostname="localhost"appBase="webapps"

  24. unpackWARs="true"autoDeploy="true"

  25. xmlValidation="false"xmlNamespaceAware="false">

  26. </Host>

  27. </Engine>

  28. </Service>

  29. </Server>

8.分别在2个tomcat下建立项目test1,并新增andashu.jsp,内容如下:

<%

System.out.println("===========");

%>

9.分别访问2个tomcat,http://IP:8081/test1/andashu.jsp 以及http://10.14.133.204:8080/test1/andashu.jsp,如果2个tomcat的日志catalina.out里 都打印出===========,证明2个tomcat访问都ok

10.分别启动apache worker2,worker3,用不同的浏览器或者不同的机器分别访问http://IP/test1/andashu.jsp,如果如果2个tomcat的日志catalina.out里 都打印出===========,证明负载均衡搭建成功(这里要用不同浏览器或者不同机器访问)

11.试节点故障,随便停掉其中的一台tomcat,继续访问http://IP/test1/andashu.jsp,能正常访问

其他2种方式也可以实现负载均衡

2、ajp_proxy
去掉httpd.conf文件中下面内容的注释(删掉#号),开启下边的配置

Include conf/extra/httpd-vhosts.conf LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so

注意:
除了mod_proxy.so,mod_proxy_balancer.so,mod_proxy_connect.so
如果是采用ajp_proxy,需要加载mod_proxy_ajp.so这个模块;
如果是采用http_proxy,需要加载mod_proxy_http.so这个模块;

httpd.conf,删除刚才jk方式的配置内容,增加下边的配置

ProxyRequests Off <proxy balancer://loadbalancer> BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=worker3 BalancerMember ajp://127.0.0.1:8009loadfactor=1 route=worker2 </proxy>

conf/extra/httpd-vhosts.conf增加配置

<VirtualHost *:8081>          ServerAdmin xxxx@xxx.com          ServerName localhost          ServerAlias localhost          ProxyPass / balancer://loadbalancer/ stickysession=jsessionid nofailover=On          ProxyPassReverse / balancer://loadbalancer/          ErrorLog "logs/loadbalancer-error.log"          CustomLog "logs/loadbalancer-access.log" common </VirtualHost>

配置完成任务,访问http://IP:8081/test1/andashu.jsp,检查是否能正常访问。

3、http_proxy
http_proxy的配置与ajp_proxy类似,修改方法2的httpd.conf配置如下,其它不变

ProxyRequests Off <proxy balancer://loadbalancer> BalancerMember http://127.0.0.1:9009 loadfactor=1 route=worker3 BalancerMember http://127.0.0.1:8009 loadfactor=1 route=worker2 </proxy>

配置完成任务,访问http://IP:8081/test/test.jsp,检查是否能正常访问

apache+tomcat负载均衡3种实现方式的更多相关文章

  1. Linux平台上搭建apache+tomcat负载均衡集群

    传统的Java Web项目是通过tomcat来运行和发布的.但在实际的企业应用环境中,采用单一的tomcat来维持项目的运行是不现实的.tomcat 处理能力低,效率低,承受并发小(1000左右).当 ...

  2. Nginx记录-nginx 负载均衡5种配置方式(转载)

    nginx 负载均衡5种配置方式 1.轮询(默认)   每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除.  2.weight 指定轮询几率,weight和访问比率成 ...

  3. nginx 负载均衡5种配置方式

    nginx 负载均衡5种配置方式 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2.weight 指定轮询几率,weight和访问比率成正比, ...

  4. Apache+Tomcat负载均衡问题集锦

    之前在windows 环境下搭建了下apache+tomcat负载均衡(不会的能够參考之前的文档,文档对于linux和windows都适用),一帆风顺.没有出现不论什么问题.今天尝试着在linux下搭 ...

  5. Windows下apache+tomcat负载均衡

    Windows下apache+tomcat负载均衡 网上已经有很多的资料,但是很多都比较零碎,需要整合一起才能搭建出理想的负载均衡,正好前段时间搭建了windows与linux下的负载均衡,在此记录, ...

  6. 1.Apache+Tomcat负载均衡+集群配置

    1.本文Apache+Tomcat集群配置 基于最新的Apache和Tomcat,具体是2011年4月20日最新的Tomcat和Apache集群和负载均衡配置. 准备环境 Apache Apache是 ...

  7. apache+tomcat 负载均衡

    说明:本篇不面向无开发基础的人员,所以不会有软件下载,jdk安装等步骤.比较久远的东西了...... 1.系统环境 win7-64.jdk 2.软件列表: apache_2.2.24-x64-no-s ...

  8. apache + tomcat 负载均衡分布式集群配置

    Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...

  9. Apache + Tomcat 负载均衡 session复制

    转自:http://blog.csdn.net/cssmhyl/article/details/8455400 http://snowolf.iteye.com/blog/743611 Apache  ...

随机推荐

  1. 【转】DirectorySearcher.Filter属性说明

    DirectorySearcher.Filter属性扩充申明 DirectorySearcher mySearcher = new DirectorySearcher(entryOU, "( ...

  2. 第二百九十四节,Redis缓存-Redis安装

    redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sor ...

  3. javascript -- 判断是否为某个数据类型

    为何不用其他方法,因为下面的写法考虑了各种兼容性.判断是否为数组isArray = function (source) {    return '[object Array]' == Object.p ...

  4. Spring-MVC案例:Spitter的笔记

    源码地址:https://github.com/Young4Dream/yan/tree/master/Maven_spittr 笔记: 1.当DispatcherServlet启动时,会创建Spri ...

  5. linux用户及用户组操作

    Linux用户.用户组权限管理详解 Linux用户管理三个重要文件详解: Linux登陆需要用户名.密码./etc/passwd 文件保存用户名.登录Linux时,Linux 先查找 /etc/pas ...

  6. list中的比较

    一说到list的的确不知道写些什么.....我觉得别人总结的比我写的还要好很多. 我擅长记录自己的误区. |--List:元素是有序的(怎么存的就怎么取出来,顺序不会乱),元素可以重复(角标1上有个3 ...

  7. 查看用户信息:w

    w命令有两个用途: (1) 用于查看当前系统负载(2) 用于查看当前登录用户的行为和信息,执行这个命令可以得知当前登入系统的用户有哪些人,以及他们正在执行哪些程序 [root@localhost ~] ...

  8. VS2015编译CURL7.54.0源码

    2018.8.24找到一种新途径,运行curl-master\projects\generate.bat,然后curl-master\projects\Windows\VC14\curl-all.sl ...

  9. 关于ARM的内核架构

    很多时候我们都会对M0,M0+,M3,M4,M7,arm7,arm9,CORTEX-A系列,或者说AVR,51,PIC等,一头雾水,只知道是架构,不知道具体是什么,有哪些不同?今天查了些资料,来解解惑 ...

  10. CentOS 6.3下Samba服务器的安装与配置详解

    一.简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的 ...