文档章节

linux 下 apache tomcat 高可用负载集群

小七酱
 小七酱
发布于 2015/04/28 19:10
字数 1469
阅读 27
收藏 0
点赞 0
评论 0

环境:

linux centos7

jdk1.7

tomcat7

apache2.4


所需资源包列表

apr           #好像1.5版本

apr-util    #好像1.5版本

#以上,都可以在:http://apr.apache.org/download.cgi 中下载


pcre         #Perl工具 

#下载地址: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

#不要下载pcre2


linux下,源码安装就是各种依赖比较蛋疼,其他的配置跟win下差不多。


PS:我首先是把所有要安装的源码包和安装文件下载好


sp 0: 安装jdk

由于open jdk 和 Oracle 的jdk在有些方面不兼容(或者缺失),而且我们一般在开发中使用的Oracle jdk.

具体可以查看:http://fgh2011.iteye.com/blog/1771649 

切换到root用户下
   # su root
   # Password: 输入密码
 查看当前jdk版本   # java -version
prf: java version "xxxxx"
   .....

  

则表示已经安装了jdk


我们需要替换我们自己安装的,所以我们要先去卸载了jdk


查询我们安装的jdk信息

#rpm -qa | grep jdk

出现了xxxxx_openjdk_xxxx的条目,选择第一个复制

然后我们删除

#yum -y remove java 上面复制的内容

等待完成删除

#java -version

然后重复以上操作,直到java -version 没有jdk的信息或者rpm -qa | grep jdk没有了条目信息即可


安装

我们下载好的jdk.rpm文件

#rpm -ivh jdk安装包路径
#java -version

有版本信息表示已经安装好了


sp 1: 安装apache

首先我们先来安装依赖包,分辨进入各自解压好的文件夹中

    复制到/usr/local/下

 

  #cp 源文件 目标文件夹
    解压命令:#tar -zxvf  xxxxx.gz

    1.1 安装apr

    把我们的源码包解压

   

#./configure --prefix=/usr/local/apr
    #make && make install

    

    1.2 安装apr-util

    把我们的源码包解压

    

#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
#make && make install


    PS:因为我们现在是已知缺少这两个依赖,所以我就先安装了。

    1.3 安装apache 

   

 ./configure --prefix=/usr/local/apache --enable-so -enable-proxy -enable-proxy_http=shared--enable-module=so --enable-mods-shared=all --enable-proxy-ajp=shared  --enable-proxy-balancer -with-mpm=worker --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util

    提示缺少 pcre

    这里可能有个问题,因为一般的系统会带有pcre,千万不要卸载系统自带的pcre包,这个,你可以试试。

    1.4 安装pcre (这里可以跳过,直接使用系统自带的pcre)

    源码包cp到我们/usr/local下

    然后解压

   

#cd ./pcre-xx.xx.xx
    #./configure --prefix=/usr/local/pcre
    #make && make install

    1.5 给我们的1.3步骤上加上 pcre的依赖

     

#./configure --prefix=/usr/local/apache2.4 --enable-so -enable-proxy -enable-proxy_http=shared--enable-module=so --enable-mods-shared=all --enable-proxy-ajp=shared  --enable-proxy-balancer -with-mpm=worker --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/user/local/pcre

    PS:反正这个地方,如果少神马依赖就添加安装神马依赖(不能使用pcre2)

        #--prefix :这个指定需要安装的路径

        #--enalbe-so :这个指定你需要打开的so模块

        #-enable-xxxxx:这个指定具体的模块

        #以上除了--prefix,有必要设定以外,其他的可以可以省略到最后手动配置

        #--with-xxxx :这个指定编译安装所需要的依赖

   

#make && make install

    如果安装通过,我们就可以进行下一步了

    

  sp 2.配置apahce

    2.1 修改httpd.conf    

   

#vim /usr/local/apache2.4/conf/httpd.conf

    修改ServerName 为本机ip

    打开我们要使用的so module

    在DirectoryIndex 添加 index.jsp

    

    保存修改

   

#:wq!

    

    启动apache

   

#/usr/local/apache2.4/bin/apachectl start

    如果在浏览器上,访问127.0.0.1没有出现It's works!表示没有启动成功。

    我们可以查看错误日志来解决问题

 

  #less /usr/local/apache2.4/logs/error.log

    

    查看apache是否正常的运行了

   

#ps -ef | grep httpd

    

   

重启:restart ,关闭:stop

    

 sp 3. 安装tomcat(这里我们使用3个tomcat来测试我们是否搭建成功)

    3.1 解压我们下载的tomcat包

    3.2 复制3个,分辨命名为:tomcat7.1 tomcat7.2 tomcat7.3

    3.3 cp到/usr/local/下面


 sp 4.进行集群的配置(这里我们使用ajp)

        Ps:1.<Connector port="8081|8082|8083" protocl="HTTP/1.1" redirectPort="9441|9442|9443" 
             <Connector port="9001|9002|9003" protocl="AJP/1.1" redirectPort="8441|8442|8443"
             <Server port="9006|9007|9008"

                

     4.1 配置tomcat中的

        4.1.1 改shutdown 端口,同一服务器下不一样

           

<Server port="9006" shutdown="SHUTDOWN">

        4.1.2 改http port redirectPort,同一服务器下不一样

<Connector port="8081" protocol="HTTP/1.1" executor="tomcatThreadPool"
               connectionTimeout="20000"
               redirectPort="9441" />

        4.1.3 改ajp port redirectPort,同一服务器下不一样

<Connector port="9001" protocol="AJP/1.3" redirectPort="8441" />

        4.1.4 改 Engine 加上 jvmRoute 需要跟httpd.conf中保持一致

<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">

        4.1.5 加上Cluster  具体如下(Receiver  port="5001|5002|5003"   同一服务器下,不能一样)

            

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6">
        <Manager className="org.apache.catalina.ha.session.BackupManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true" mapSendOptions="6" />
        <Channel className="org.apache.catalina.tribes.group.GroupChannel">
          <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000" />
          <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="5001" selectorTimeout="100" maxThreads="6" />
          <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
            <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" />
          </Sender>
          <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" />
          <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" />
          <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor" />
        </Channel>
        <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;" />
        <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false" />
        <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener" />
      </Cluster>

        4.1.6 添加一个测试项目

            省略

        4.1.7 改项目web.xml

            添加 <distributable /> 节点

      4.2 配置 httpd.conf中的

       

ProxyVia Off
        ProxyRequests Off
        <Proxy "balancer://cluster">
             BalancerMember "ajp://127.0.0.1:9001" loadfactor=1 route="jvm1"
             BalancerMember "ajp://127.0.0.1:9002" loadfactor=1 route="jvm2"
             BalancerMember "ajp://127.0.0.1:9003" loadfactor=1 route="jvm3"
             ProxySet lbmethod=bytraffic
        </Proxy>
        <Location "/balancer-manager">
            SetHandler balancer-manager
            Require host localhost
        </Location>

        打开的模块

       

        #可能不需要这么多
        LoadModule proxy_module modules/mod_proxy.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
        LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
        LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
        LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
        LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
        LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
        LoadModule proxy_express_module modules/mod_proxy_express.so
        LoadModule session_module modules/mod_session.so
        LoadModule session_cookie_module modules/mod_session_cookie.so
        LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
        LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
        LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
        LoadModule status_module modules/mod_status.so
        LoadModule speling_module modules/mod_speling.so
        LoadModule alias_module modules/mod_alias.so
        LoadModule rewrite_module modules/mod_rewrite.so


     4.3 修改httpd-vhosts.conf配置

       

 <VirtualHost *:80>
            ServerAdmin xxxxxxx@xxxx.com            
            ServerName localhost            
            ServerAlias localhost            
            DirectoryIndex index.jsp            
            ProxyPass "/" "balancer://cluster/" stickysession=JSESSIONID scolonpathdelim=On    
            ProxyPassReverse "/" "balancer://cluster/"            
            ErrorLog "logs/lbtest-error.log"            
            CustomLog "logs/lbtest-access.log" common        
</VirtualHost>


PS: 最后要说明一点:

    如果开启了seliunx和防火墙

    先去关闭seliunx, 然后修改防火墙策略

    不然开启不了组播,从而导致无法session复制

# /sbin/iptables -I INPUT -p udp --dport 45564 -j ACCEPT
# /etc/rc.d/init.d/iptables save
#seliunx
#setenforce 0
#semanage port -a -t http_port_t -p udp 45564



© 著作权归作者所有

共有 人打赏支持
小七酱
粉丝 2
博文 30
码字总数 17079
作品 0
武汉
程序员
Tomcat+Nginx+Memcached+https

目标:   Tomcat+Nginx+Memcached   Ubuntu 16.04 64位测试通过   动静分类、负载均衡、集群、Javolution序列化、高性能、高可用 配置环境(目前均为最新稳定版):   jdk-8u131-lin...

xiaoxin ⋅ 04/12 ⋅ 0

域名到站点的负载均衡技术一览(主要是探讨一台Nginx抵御大并发的解决方案)(转)

继上一篇文章Http://www.cnblogs.com/EasonJim/p/7807794.html中说到的,Nginx虽然很强大,但是面对大并发时,一台Nginx总是有限的。即使后端有多台Nginx组成的集群时,前端毕竟只有一台Ngi...

easonjim ⋅ 2017/11/12 ⋅ 0

linux下配置tomcat集群的负载均衡

linux下配置tomcat集群的负载均衡 一、首先了解下与集群相关的几个概念 集群: 集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台。在客户端看来,一个集群...

吴胜健 ⋅ 2014/10/28 ⋅ 0

浅谈web应用的负载均衡、集群、高可用(HA)解决方案

1、熟悉几个组件 1.1、apache —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安全Socket层(...

stone_ ⋅ 2016/05/04 ⋅ 0

浅谈web应用的负载均衡、高可用、群集

1、熟悉几个组件 1.1、apache —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安全Socket层(...

壹休哥 ⋅ 2016/11/06 ⋅ 0

Nginx + Tomcat 负载均衡集群

Nginx + Tomcat 负载均衡集群 -- 实验环境: -- 部署Tomcat -- 安装 JDK 配置 java 环境,解压 jdk 移动到 /usr/local 下命名为java: 在 /etc/profile.d/ 下面建立java.sh 脚本,内容如下:...

HHHNDYD ⋅ 06/20 ⋅ 0

大型站点高并发架构技术

大型站点高并发架构技术 高并发: 高并发主要是由于网站PV访问量大,单台服务器涌承载大量访问所带来的压力,所以会采用多台服务器进行分流,采用服务器集群技术,对于每个访问会被发送到哪台...

浮躁的码农 ⋅ 01/15 ⋅ 0

apache+jk+tomcat集群配置

1集群配置介绍 Apache Tomcat可以说是当下最受欢迎的开源Java Web服务器。Tomcat的单个实例恐怕无法满足访问量日增的需要。这种情况下,需要考虑在“集群”环境下运行Tomcat;在这种环境下,...

bill2candy ⋅ 2016/10/28 ⋅ 0

民工哥公众号linux系统学习线路图大全

民工哥公众号linux系统学习线路图大全 <-----------点击链接进入 友侃有笑公众号Linux学习路线图 1、基础篇 Linux 基础优化配置 Linux系统根目录结构介绍 linux系统重要子目录介绍 Linux文件...

民工哥 ⋅ 2017/08/30 ⋅ 0

JBoss 系列五十:使用Apache httpd(mod_jk)和JBoss构架高可用集群环境

概述 前面JBoss 系列二:使用Apache httpd(modcluster)和JBoss构架高可用集群环境中我们介绍了企业应用的目的的目的,负载均衡,容错等,并通过Apache httpd(modcluster)和JBoss构架高可用集...

无鸯 ⋅ 2014/02/04 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如何优雅的编程——C语言界面的一点小建议

我们鼓励在编程时应有清晰的哲学思维,而不是给予硬性规则。我并不希望你们能认可所有的东西,因为它们只是观点,观点会随着时间的变化而变化。可是,如果不是直到现在把它们写在纸上,长久以...

柳猫 ⋅ 25分钟前 ⋅ 0

从零手写 IOC容器

概述 IOC (Inversion of Control) 控制反转。熟悉Spring的应该都知道。那么具体是怎么实现的呢?下面我们通过一个例子说明。 1. Component注解定义 package cn.com.qunar.annotation;impo...

轨迹_ ⋅ 26分钟前 ⋅ 0

系统健康检查利器-Spring Boot-Actuator

前言 实例由于出现故障、部署或自动缩放的情况,会进行持续启动、重新启动或停止操作。它可能导致它们暂时或永久不可用。为避免问题,您的负载均衡器应该从路由中跳过不健康的实例,因为它们...

harries ⋅ 27分钟前 ⋅ 0

手把手教你搭建vue-cli脚手架-详细步骤图文解析[vue入门]

写在前面: 使用 vue-cli 可以快速创建 vue 项目,vue-cli很好用,但是在最初搭建环境安装vue-cli及相关内容的时候,对一些人来说是很头疼的一件事情,本人在搭建vue-cli的项目环境的时候也是...

韦姣敏 ⋅ 38分钟前 ⋅ 0

12c rman中输入sql命令

12c之前版本,要在rman中执行sql语句,必须使用sql "alter system switch logfile"; 而在12c版本中,可以支持大量的sql语句了: 比如: C:\Users\zhengquan>rman target / 恢复管理器: Release 1...

tututu_jiang ⋅ 51分钟前 ⋅ 0

Nginx的https配置记录以及http强制跳转到https的方法梳理

Nginx的https配置记录以及http强制跳转到https的方法梳理 一、Nginx安装(略) 安装的时候需要注意加上 --with-httpsslmodule,因为httpsslmodule不属于Nginx的基本模块。 Nginx安装方法: ...

Yomut ⋅ 今天 ⋅ 0

SpringCloud Feign 传递复杂参数对象需要注意的地方

1.传递复杂参数对象需要用Post,另外需要注意,Feign不支持使用GetMapping 和PostMapping @RequestMapping(value="user/save",method=RequestMethod.POST) 2.在传递的过程中,复杂对象使用...

@林文龙 ⋅ 今天 ⋅ 0

如何显示 word 左侧目录大纲

打开word说明文档,如下图,我们发现左侧根本就没有目录,给我们带来很大的阅读障碍 2 在word文档的头部菜单栏中,切换到”视图“选项卡 3 然后勾选“导航窗格”选项 4 我们会惊奇的发现左侧...

二营长意大利炮 ⋅ 今天 ⋅ 0

智能合约编程语言Solidity之线上开发工具

工具地址:https://ethereum.github.io/browser-solidity/ 实例实验: 1.创建hello.sol文件 2.调试输出结果

硅谷课堂 ⋅ 今天 ⋅ 0

ffmpeg 视频格式转换

转 Mp4 格式 #> ffmpeg -i input.avi -c:v libx264 output.mp4#> ffmpeg -i input.avi -c:v libx264 -strict -2 output.mp4#> ffmpeg -i input.avi -c:v libx264 -strict -2 -s 1......

Contac ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部