先说一下我的环境

一个ubuntu虚拟机,

一个apache2.2示例

两tomcat1.7示例

1.安装apacheserver

  1. sudo apt-get install apache2

假设要重新启动的话,执行命令:

sudo /etc/init.d/apache2 restart

ubuntu下的apache会默认创建路径/var/www,apache默认载入的时候,就是载入的这个路径以下的

2.安装两个tomcat实例

去官网下载一个

然后在本地在cp一下,

此时文件夹结构为:

/home/hehe/my/soft/tomcat1,

/home/hehe/my/soft/tomcat2

3.安装mod_jk

mod_jk实质上是Apache与Tomcat的连接器,并藉此附带提供集群和负载均衡的功能。

地址为http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.31/x86_64/,注意要于你安装的apache的版本号相应。

4.配置apache

ubuntu默认会将apache的安装文件放在/etc/apache2以下

进入这个文件夹之后,新建一个httpd.conf文件

放心apache启动时,会载入这个文件的

然后编译这个文件。加上这么句话

  1. ServerName localhost:80
  2. include mod_jk.conf

然后我们在当前路径下新建一个mod_jk.conf文件

这里先要将mod_jk-1.2.31-httpd-2.2.x.so放在当前路径下

  1. #load module mod_jk-1.2.31-httpd-2.2.3.so is for Apache 2.2.x.
  2. LoadModule jk_module /usr/lib/apache2/modules/mod_jk-1.2.31-httpd-2.2.x.so
  3.  
  4. #这个是用来配置负载的
  5. JkWorkersFile workers.properties
  6. #这个是打印日志
  7. JkLogLevel debug
  8. #这个是日志的名称
  9. JkLogFile mod_jk.log
  10. #打印的级别
  11. JkLogLevel warn

所以在当前路径下咱们还得新建一个 mod_jk.log,文件。这里面会记录日志

接下来配置workers.properties文件

在当前路径下新建一个workers.properties文件

  1. #负载均衡器
  2. worker.list=LB_worker,worker_1,worker_2,jkstatus
  3.  
  4. #第一个tomcat的配置
  5. worker.worker_1.host=localhost #tomcat在哪个机器上面,若是别的机器。须要写上别的机器的ip地址
  6. worker.worker_1.port=8009 #端口,等会在tomcat里面配置的时候要一一相应
  7. worker.worker_1.type=ajp13
  8. worker.worker_1.lbfactor=1 #载入因子
  9.  
  10. #第二个tomcat的配置
  11. worker.worker_2.host=localhost
  12. worker.worker_2.port=9009
  13. worker.worker_2.type=ajp13
  14. worker.worker_2.lbfactor=1
  15.  
  16. #类型是一个负载均衡器
  17. worker.LB_worker.type=lb
  18. #重试三次
  19. worker.LB_worker.retries=3
  20. #负载给tomcat1和tomcat2
  21. worker.LB_worker.balance_workers=worker_1,worker_2
  22. #这是说session的粘性,就是说同一个session是否提交给同一个tomcat。由于等会儿,集群的时候要用到一个session提交给两台机器,所以设置为false
  23. worker.LB_worker.sticky_session=false
  24. worker.LB_worker.sticky_session_force=false
  25. #jk的状态
  26. worker.jkstatus.type=status

5.配置请求交给负载均衡器

在/etc/apache2/sites-available下有个default文件,

在这个文件的最后一句话</VirtualHost>之前加上这么一段

  1. JkMount /*.jsp LB_worker
  2. JkMount /jkstatus jkstatus

然后就交给了LB_worker

6.接下来配置tomcat1

改一下conf以下的server.xml文件,改port,和上面的相应

  1. <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

然后找到这句话,改成这样,注意worker_1和workers.properties相应

  1. <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker_1">

若是集群的话,还要改一句话。把这句话的前后的凝视符号给去掉,放开

  1. <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

接下来配置tomcat2

先把以下这句话给改了,port号改为8006

  1. <Server port="8006" shutdown="SHUTDOWN">

然后改以下这句

  1. <Connector port="9082" protocol="HTTP/1.1"
  2. connectionTimeout="20000"
  3. redirectPort="9443" />

改一下conf以下的server.xml文件,改port。和上面的相应

  1. <Connector port="9009" protocol="AJP/1.3" redirectPort="9443" />

然后找到这句话,改成这样。注意worker_2和workers.properties相应

  1. <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker_2">

若是集群的话,还要改一句话,把这句话的前后的凝视符号给去掉,放开

  1. <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

7.新建一个项目mytest,里面有一个叫wel.jsp的文件,

这个jsp的内容是:

  1. <%@ page language="java" contentType="text/html; charset=GB18030"
  2. pageEncoding="GB18030"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10. <%
  11. System.out.println("this is tomcat server nod 2");
  12. %>
  13. <%
  14. int i=0;
  15. while(i<3000){i++;
  16. }
  17. out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>this is tomcat server nod 2");
  18. %>
  19. </body>
  20. </html>

然后将这个项目放在tomcat2的webapp以下

同一时候也放在tomcat1的文件夹下

注意。以下这句改成这样,2改为1

  1. System.out.println("this is tomcat server nod 1");

  1. out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>this is tomcat server nod 1");

8.重新启动一个apache,tomcat1,tomcat2

然后在浏览器里面訪问

http://127.0.0.1/mytest/wel.jsp

不断的刷新页面。你会发现其在node1,和node2之间不断换。说明请求有时候交给了1,有时候交给了tomcat2,实现了负载均衡的功能

以下在来实现tomcat1。和tomcat2的集群功能

所谓集群就是。一个client的相应的session在两个tomcat中有一模一样的相应的session

在mytest里面在新建一个wel2.jsp文件

里面的内容为:

  1. <%@ page contentType="text/html; charset=utf-8" %>
  2. <%@ page import="java.util.*" %>
  3. <html><head><title>Cluster App Test</title></head>
  4. <body>
  5. Server Info:
  6. <%
  7. out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
  8. <%
  9. out.println("<br> ID " + session.getId()+"<br>");
  10. // 在session里面设置属性
  11. String dataName = request.getParameter("attributeName");
  12. if (dataName != null && dataName.length() > 0) {
  13. String dataValue = request.getParameter("attributeValue");
  14. session.setAttribute(dataName, dataValue);
  15. }
  16. out.print("<b>打印Session内容:>");
  17. Enumeration e = session.getAttributeNames();
  18. while (e.hasMoreElements()) {
  19. String name = (String)e.nextElement();
  20. String value = session.getAttribute(name).toString();
  21. out.println( name + " = " + value+"<br>");
  22. System.out.println( name + " = " + value);
  23. }
  24. %>
  25. <form action="wel2.jsp" method="POST">
  26. 属性名:<input type=text size=20 name="attributeName">
  27. <br>
  28. 值:<input type=text size=20 name="attributeValue">
  29. <br>
  30. <input type=submit>
  31. </form>
  32. </body>
  1. </form>
  2. </body>
  3. </html>

两个tomcat里面都有一个这种文件

然后两个tomcat的web.xml以下加上以下这句话

<distributable/>,两个session之间能相互复制

重新启动

然后訪问http://10.211.55.3/mytest/wel2.jsp

又一次输入这个地址

你会发现确实交给了两个server,并且session里面的值一模一样!

集群完毕。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

linux下一个apache+tomcat负载均衡和集群的更多相关文章

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

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

  2. 基于Apache的Tomcat负载均衡和集群(2)

    反向代理负载均衡 (Apache+JK+Tomcat) 使用代理服务器可以将请求转发给内部的Web服务器,让代理服务器将请求均匀地转发给多台内部Web服务器之一上,从而达到负载均衡的目的.这种代理方式 ...

  3. apache的tomcat负载均衡和集群配置 "

    略看了一下,感觉太复杂,要配置的东西太多,因此在这里写出一种更简洁的方法. 要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务 ...

  4. 基于nginx的tomcat负载均衡和集群

    要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了. 你可以自己写tomcat的扩展来保存SESSI ...

  5. 基于apache的tomcat负载均衡和集群配置

    最近不是很忙,用零碎时间做点小小的实验. 以前公司采用F5负载均衡交换机,F5将请求转发给多台服务器,每台服务器有多个webserver实例,每个webserver分布在多台服务器,交叉式的分布集群. ...

  6. Tomcat负载均衡和集群环境的搭建

    实现此集群的方法参考了网上的很多文章,但由于很多文章都表明是原创的,故无法知道整个操作流程的真正作者是谁.下面就是我用我们真实的项目去实现这个过程.同时修复这过程中一些问题.以下的所有步骤均为亲自测试 ...

  7. Apache、Tomcat负载均衡与集群

    一. 环境准备 1.软件下载 a) apache_2.0.55-win32-x86-no_ssl.msi: b) apache-tomcat-5.5.17.rar c) mod_jk-apache-2 ...

  8. 使用apache和nginx代理实现tomcat负载均衡及集群配置详解

    实验环境: 1.nginx的代理功能 nginx proxy: eth0: 192.168.8.48 vmnet2 eth1: 192.168.10.10 tomcat server1: vmnet2 ...

  9. 基于apache的tomcat负载均衡和集群配置session共享

    接上面的话题接着继续完善.为什么没接到上篇呢?原因很简单太长的文章不爱看!就像有人写了上千行的方法一样,不是逼得没办法谁爱看谁看,反正我不看. 期间我没有一次配置成功,从失败的开始说起, 1.准备ja ...

随机推荐

  1. atitit.报告最佳实践oae 和报告引擎的选择

    atitit.报告最佳实践oae 与报表引擎选型 1. 报表的基本的功能and结构 2 1.1. 查询设计器(配置化,metadata in html) ,anno 2 1.2. 查询引擎 2 1.3 ...

  2. sharepoint 2013 使用powershell更改站点集配额和锁定

    打开sharepoint powershell 2013,使用管理员方式打开 逐行输入下面命令: $Admin =  new-object Microsoft.SharePoint.Administr ...

  3. C#改动文件或目录的权限,为指定用户、用户组加入全然控制权限

    C#改动文件或文件夹的权限,为指定用户.用户组加入全然控制权限 //给Excel文件加入"Everyone,Users"用户组的全然控制权限 FileInfo fi = new F ...

  4. Haskell 几乎无疼痛入门指南

    当他重装Linux 机会虚拟机,安装 haskell 录制的过程中有什么.的方式来帮助那些谁在徘徊haskell进入外读者. 基本概念: Haskell : 是一门通用函数式语言.差点儿能够进行不论什 ...

  5. Ubuntu下搭建ASP.NET 5

    在Ubuntu下搭建ASP.NET 5开发环境   0x00 写在前面的废话 年底这段时间实在太忙了,各种事情都凑在这个时候,没时间去学习自己感兴趣的东西,所以博客也好就没写了.最近工作上有个小功能要 ...

  6. Twitter实时搜索系统EarlyBird

    twitter要存档tweet采用lucene做全量指数,新发型是实时索引推文.检索实时(10在几秒钟内指数).实时索引和检索系统,称为EarlyBird. 感觉写更清晰,简洁,这个信息是真实的,只有 ...

  7. vuejs 相关资料

    官网 http://vuejs.org/ 中文网站 http://cn.vuejs.org/ Vue.js——60分钟快速入门 http://www.cnblogs.com/keepfool/p/56 ...

  8. Python日志输出格式和时间格式

    formatter = logging.Formatter("%(asctime)s %(levelname)s %(message)s","%Y%b%d-%H:%M:% ...

  9. hdu3182 状态压缩水题

    题意是这种     给你n个汉堡     每一个汉堡有它的价值   做每一个汉堡都得花费相应的能量      如今告诉你最大能量 让你求获得的最大的价值(有些汉堡必须有还有一些汉堡做好为前提) 给你的 ...

  10. 【C语言探索之旅】 第一部分第七课:循环语句

    内容简介 1.课程大纲 2.第一部分第七课: 循环语句 3.第一部分第八课预告: 第一个C语言小游戏 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编 ...