记一次在Windows服务器上搭建apatch+tomcat+jk的集群搭建过程,其中也遇到了很多问题,总结一下。

一、准备工作

  1.apache-tomcat-7.0.88

  2.Apche httpd-2.4.23-x64.zip  

  3.tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x.zip   

  4.vcredist_x64.exe

mod_jk也叫 JK,这是一款 Apache/IIS 用来连接后台Tomcat的连接器,支持集群和负载均衡。     

注:httpd后面的版本号要与apache httpd的版本号对应,不然apache会报cannot load mod_jk.so into server

链接:https://pan.baidu.com/s/1rRjzr__jXky73mYH1ADv6Q     msje

二、开始搭建

  1.安装Apache httpd-2.4.23-x64

    在安装Apache2.4之前先检测有没有安装Microsoft visual vc++ 2008,因为Apache2.4只支持2008及以上的版本,如果没有,使用安装软件vcredist_x64.exe,按照默认安装即可。

    1).解压Apache httpd-2.4.23-x64.zip文件到要安装的目录。

    2).cmd,打开命令提示符窗口,进入Apache解压文件路径bin目录下

    3).在bin目录下输入httpd -k install

      i.如果报以下问题,意思是程序默认安装路径和配置文件的路径不一致。

      打开conf/httpd.conf文件,找到Define SRVROOT,后面接上你的Apache程序目录。改好之后重新install一下就ok了。

      

       

    4).开启服务 ,通过命令,也可以通过服务窗口启动

      

      如果开启服务时报80端口被占用错误:

        在cmd中输入netstat –ano命令,发现80端口被一个PID为4的服务所占用,打开任务管理器,发现PID为4的进程为系统进程,其描述信息为NT Kernel & System,在服务里面又找不到PID为4的服务,所以没法停掉服务。

        在网上找了半天,最终出现,是因为之前装过SQL SERVER 2008的原因,因为它启动了SQL Server Reporting Services (MYSQLSERVER)服务,造成端口占用。打开windows服务窗口,找到它并停止并将它设为禁止。

        这里也可以通过修改httpd.conf文件中Listen:80来修改端口号

        这里是我遇到的问,也有可能是其它原因造成80端口被占用,不做阐述了 。

        

    5).在浏览器输入localhost,打开下面页面就算成功了

    

    6).修改mpm模块配置

     a) .按安装目录打开D:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf文件,将“#Include conf/extra/httpd-mpm.conf”和“#Include conf/extra/httpd-default.conf”前面的”#”号去掉,如下所示:

      # Server-pool management (MPM specific)

      Include conf/extra/httpd-mpm.conf

      # Various default settings

      Include conf/extra/httpd-default.conf

      注:引进多路处理模块

    b). 按安装目录打开D:\Program Files\Apache Software Foundation\Apache2.2\conf\extra\ httpd-mpm.conf 文件,修改以下参数:

      <IfModule mpm_winnt_module>

      ThreadsPerChild  2000

      MaxRequestsPerChild    100000

      </IfModule>

      注:设置多路处理模块的进程线程数

    c). 按安装目录打开D:\Program Files\Apache Software Foundation\Apache2.2\conf\extra\ httpd-default.conf文件,修改以下参数:

      Timeout 30

  2.解压tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x.zip文件,将文件夹中的mod_jk.os文件复制到Apache安装目录下的 modules目录下

  3.配置Apache和mod_jk

    1).在Apache安装目录下打开conf/httpd.conf文件,在文件最后添加Include conf/mod-jk.conf

    2).在conf下新建配置文件mod-jk.conf

      LoadModule jk_module modules/mod_jk.so #加载模块

      JkWorkersFile conf/workers.properties #负载均衡配置文件

      JkMount /* controller #这里是所有请求都给Tomcat处理

    3).在conf下新建workers.properties文件

 #server
worker.list = controller
#========tomcat1========
worker.tomcat1.port=11009
worker.tomcat1.host=192.169.1.218
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1
#========tomcat2========
worker.tomcat2.port=12009
worker.tomcat2.host=192.169.1.63
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1 #========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2
worker.controller.sticky_session=true
worker.controller.sticky_session_force=false #注释:这里可以配置任意多个Tomcat,此处配置了2个Tomat服务器。
#worker.tomcat1.port=11009 #须和tomcat下server.xml配置文件中的ajp13 端口号对应。
#worker.tomcat1.host=192.169.1.218 #tomcat的主机地址,如不为本机,请填写ip地址。
#Worker.tomcat1.type=ajp13 #Apache、tomcat集群采用的AJP/1.3通信协议。
#worker.tomcat1.lbfactor = 1 #server的加权比重,值越高,分得的请求越多。

  4.配置tomcat,在这里很简单,我这里是下载的安装版的,不是解压版的,一直下一步,当到下图的时候就需要简单配置一下了。多个配置也是一样,只要与worker.properties对应上就ok

    

    1修改tomcat配置文件tomcat安装目录下的conf/context.xml文件把<Context>修改为:<Context xmlBlockExternal="false"> 

    

  2修改tomcat\conf\catalina.properties文件    tomcat.util.scan.DefaultJarScanner.jarsToSkip节点增加db2jcc.jar
    

  3修改server.xml

    1:AJP13的connector的port和jvmRoute名称和workers.properties中配置对应。8080是tomcat1的端口。<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 这一句原本是注释的。需要去掉注释。

    

    2:在“<!Connector port="11009" protocol="AJP/1.3" redirectPort="8443" />”中增加如下图,

    

三、测试

  1.修改tomcat1和tomcat2安装目录下的workapp下的ROOT中的index.jsp,在<body>标签加一行<h1>Tomcat_1</h1>,在tomcat2中加一行<h1>Tomcat_2</h1>。为了方便查看当前使用的是哪个Tomcat。

  2.依次启动Tomcat1和Tomcat2,然后重启一下apache服务。打开浏览器访部localhost,刷新,会一直在两个tomcat中间变换。

  

  在测试的时候也遇到一个很坑的问题

    问题:刚重启apache服务的时候访问没有问题,但当过了一段时间后或者多台机器访问时,浏览器一直处在加载状态,页面加载不出来,并且也没有提示错误页。apache处于假死状态。

    解决:

    

Apache+Tomcat+jk windows环境下的集群部署的更多相关文章

  1. Apache Nifi在Windows环境下搭建伪群集及证书登录

    代码地址如下:http://www.demodashi.com/demo/11986.html 前些时间做了关于Apache Nifi分布式集群的搭建分享,但很多时候要搭建分布式集群机器资源是个问题, ...

  2. Linux环境下Hadoop集群搭建

    Linux环境下Hadoop集群搭建 前言: 最近来到了武汉大学,在这里开始了我的研究生生涯.昨天通过学长们的耐心培训,了解了Hadoop,Hdfs,Hive,Hbase,MangoDB等等相关的知识 ...

  3. Windows 环境搭建Redis集群(win 64位)

    转: http://blog.csdn.net/zsg88/article/details/73715947 参考:https://www.cnblogs.com/tommy-huang/p/6240 ...

  4. Linux环境下SolrCloud集群环境搭建关键步骤

    Linux环境下SolrCloud集群环境搭建关键步骤. 前提条件:已经完成ZooKeeper集群环境搭建. 一.下载介质 官网下载地址:http://www.apache.org/dyn/close ...

  5. Linux环境下HDFS集群环境搭建关键步骤

    Linux环境下HDFS集群环境搭建关键步骤记录. 介质版本:hadoop-2.7.3.tar.gz 节点数量:3节点. 一.下载安装介质 官网下载地址:http://hadoop.apache.or ...

  6. Linux环境下ZooKeeper集群环境搭建关键步骤

    ZooKeeper版本:zookeeper-3.4.9 ZooKeeper节点:3个节点 以下为Linux环境下ZooKeeper集群环境搭建关键步骤: 前提条件:已完成在Linux环境中安装JDK并 ...

  7. Centos7环境下etcd集群的搭建

    Centos7环境下etcd集群的搭建 一.简介 "A highly-available key value store for shared configuration and servi ...

  8. Elasticsearch学习总结 (Centos7下Elasticsearch集群部署记录)

    一.  ElasticSearch简单介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticse ...

  9. Centos6.9下RabbitMQ集群部署记录

    之前简单介绍了CentOS下单机部署RabbltMQ环境的操作记录,下面详细说下RabbitMQ集群知识,RabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言, ...

随机推荐

  1. Devexpress GridControl使用

    //不显示内置的导航条.            gc1.UseEmbeddedNavigator = false;             //不显示分组的面板            gv1.Opti ...

  2. Git提交代码到主分区

    git 提交代码,本地新建一个my分支,不从本地master分支直接上传,而是先从本地my分支上提交至本地master分支,然后本地master提交至远程master分支 上.前提是远程只有一个mas ...

  3. golang and mogodb

    1.golang的mogodb包下载:http://gopkg.in/mgo.v2    http://gopkg.in/mgo.v2/bson 2.golang的mongodb操作(mgo):htt ...

  4. sqlmap注入技巧

    收集了一些利用Sqlmap做注入测试的TIPS,其中也包含一点绕WAF的技巧,便于大家集中查阅,欢迎接楼补充.分享. TIP1 当我们注射的时候,判断注入 http://site/script?id= ...

  5. Vue.js基础语法(一)

    vue学习的一系列,全部来自于表哥---表严肃,是我遇到过的讲课最通透,英文发音最好听的老师,想一起听课就去这里吧 https://biaoyansu.com/i/hzhj1206 前言: 前端解析数 ...

  6. intellijidea课程 intellijidea神器使用技巧 3-3 postfix

    Ctrl shift A ==> postfix completion 调出postfix 方法体中   ==> for   100.fori    ==>enter for循环10 ...

  7. spring-cloud构架微服务(1)-全局配置

    使用spring-cloud是基于熟悉springboot基础上进行的.本篇介绍全局配置,spring-boot版本就以1.4.0来做吧.项目地址: https://git.oschina.net/b ...

  8. System.Data.SqlClient.SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值

    System.Data.SqlClient.SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值.解决办法是: 而这位大哥提出的解决办法 ...

  9. MySQL数据库实验五:数据更新

    实验五   数据更新 一.实验目的 掌握数据更新操作的用法. 二.实验环境 三.实验示例 1.往基本表SC中插入元组. ①    INSERT INTO S(S#,SNAME,AGE,SEX) VA ...

  10. #WPF的3D开发技术基础梳理

    原文:#WPF的3D开发技术基础梳理 自学WPF已经有半年有余了,一遍用,一边学.但是一直没有去触摸WPF的3D开发相关技术,因为总觉得在内心是一座大山,觉得自己没有能力去逾越.最近因为一个项目的相关 ...