文档章节

linux 下 apache tomcat 高可用负载集群

小七酱
 小七酱
发布于 2015/04/28 19:10
字数 1469
阅读 27
收藏 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
武汉
程序员
Java之品优购部署_day01(5)

SolrCloud 2.1 SolrCloud 简介 2.1.1 什么是 SolrCloud SolrCloud(solr 云)是 Solr 提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数...

我是小谷粒
07/09
0
0
linux下配置tomcat集群的负载均衡

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

吴胜健
2014/10/28
0
0
Tomcat+Nginx+Memcached+https

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

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

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

stone_
2016/05/04
273
0
浅谈web应用的负载均衡、高可用、群集

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

壹休哥
2016/11/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

day63-20180821-流利阅读笔记-待学习

性别歧视在日本:“我是女生,所以社会不让我学医” 毛西 2018-08-21 1.今日导读 大家在看病的时候,有留意过女医生的比例吗?在性别歧视现象十分严重的日本,男医生和女医生的比例达到了惊人...

aibinxiao
53分钟前
2
0
Ubuntu18.04 显卡GF-940MX安装NVIDIA-390.77

解决办法: 下面就给大家一个正确的姿势在Ubuntu上安装Nvidia驱动: (a)首先去N卡官网下载自己显卡对应的驱动:www.geforce.cn/drivers (b)下载后好放在英文路径的目录下,怎么简单怎么来...

AI_SKI
今天
4
0
深夜胡思乱想

魔兽世界 最近魔兽世界出了新版本, 周末两天升到了满级,比之前的版本体验好很多,做任务不用抢怪了,不用组队打怪也是共享拾取的。技能简化了很多,哪个亮按哪个。 运维 服务器 产品 之间的...

Firxiao
今天
1
0
MySQL 8 在 Windows 下安装及使用

MySQL 8 带来了全新的体验,比如支持 NoSQL、JSON 等,拥有比 MySQL 5.7 两倍以上的性能提升。本文讲解如何在 Windows 下安装 MySQL 8,以及基本的 MySQL 用法。 下载 下载地址 https://dev....

waylau
今天
2
0
微信第三方平台 access_token is invalid or not latest

微信第三方开发平台code换session_key说的特别容易,但是我一使用就带来无穷无尽的烦恼,搞了一整天也无济于事. 现在记录一下解决问题的过程,方便后来人参考. 我遇到的这个问题搜索了整个网络也...

自由的开源
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部