I'm a tree and wating for the spring!

【原创】Linux+Apache2.2.19+Tocmat5+负载均衡+域名绑定

★作者:桐星豆博客   |  ★类别: 世纪融商   |  ★发布时间: 2011-10-28 11:51   |  ★更新时间: 2013-01-08 10:15   |  ★浏览次数:2732   |  ★ 评论(0)

文章导航 变更历史
1 引言
    1.1 编写目的
    1.2 项目背景
    1.3 定义
        1.3.1集群(Cluster)
        1.3.2负载均衡(Load Balance)
    1.4 参考资料
    1.5 变更历史
2 技术介绍
    2.1 技术目标
    2.2 网络架构
    2.3 软件架构
3 详细步骤
    3.1安装JDK
        3.1.1 jdk-6u22-linux-i586.bin
        3.1.2 配置环境变量
        3.1.3 测试Java是否安装成功
    3.2 安装Tomcat
        3.2.1apache-tomcat-5.5.33.zip
        3.2.2配置环境变量
        3.2.3测试Tomcat是否安装成功
    3.3安装Apache
        3.3.1httpd-2.2.19.tar.gz
        3.3.2测试Apache是否安装成功
    3.4集群和负载均衡的配置
        3.4.1修改httpd.conf
        3.4.2安装mod_jk.so
        3.4.3建立mod_jk.conf文件
        3.4.4建立workers.properties文件
        3.4.5修改httpd-vhosts.conf 文件
    # JK2
    # AJP - No.1
    # AJP - No.2
    域名绑定
    3.5 综合测试Apache + Tomcat
4 总结
    4.3、设置Apache和Tomcat随系统启动而自动启动:
        4.3.1Red Hat的配置
        4.3.2 Ubuntu 的配置
5 补充
    5.1、修改tomcat的连接数
    5.2 修改虚拟机的内存大小


1引言

1.1 编写目的

本说明手册为了阐述Linux搭建Apache+Tomcat环境,并详细介绍Tomcat的集群和负载均衡配置而编写。届时介绍域名的绑定,Red Hat和Ubuntu中随系统自动启动个软件的配置方法。

1.2 项目背景

在Linux(Red Hat Enterprise 4)上整合Apache和Tomcat ,并实现Tomcat的集群和负载均衡。这里是在同一台服务器上弄的集群和负载均衡,以两个Tomcat为例,如果是两个以上的Tomcat,配置的原理是一样的,只需要将各个Tomcat的端口号设置成不一样即可。届时附上负载均衡的两种配置方法:JK、AJP。

1.3 定义

1.3.1集群(Cluster)

是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。

1.3.2负载均衡(Load Balance)

即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。

1.4 参考资料

文件名称

出处

Apache + Tomcat 整合

互联网

Tomcat集群与负载均衡区别以及特性

http://xy-z487.iteye.com/blog/256512

ubuntu 配置开机启动vnc

http://hi.baidu.com/giter/blog/item/0e59ee242458db0b4d088d51.html

1.5 变更历史

内容

变更原因

变更日期

人员

创建文档

首次创建

2011-08-04

何胜平

新增知识点

AJP-No.2:阐述使用AJP配置负载均衡

2011-08-23

何胜平

新增知识点

如何域名绑定

2011-08-25

何胜平

新增知识点

ubuntu 配置开机启动

2011-08-25

何胜平

新增知识点

修改tomcat的连接数

2011-10-27

何胜平

新增知识点

修改虚拟机的内存大小

2011-10-28

何胜平(梁瑞提供)

2 技术介绍

2.1 技术目标

集成Apache和Tomcat,实现Tomcat的集群和负载均衡。

2.2 网络架构

采用局域网或单机环境。

硬件设备,服务器采用台式机或笔记本电脑,最低配置,内存512M以上、硬盘10G以上。客户端采用台式机或笔记本。

2.3 软件架构

软件平台类型 软件平台选型

网络操作系统 Red Hat Enterprise Linux 4

Http 服务器 Apache2.2.19

WEB应用服务 Tomcat5.5.33

MOD_JK tomcat-connectors-1.2.31-src.tar.gz

3 详细步骤

3.1安装JDK

3.1.1 jdk-6u22-linux-i586.bin

更改权限 chmod u+x jdk-6u22-linux-i586.bin

执行 ./jdk-6u22-linux-i586.bin 命令进行安装,会在当前目录下生成jdk1.6.0_22文件夹,我这里要把它移动到/usr/local/java/目录下。

3.1.2 配置环境变量

vi /etc/profile

在最后面加上 

export JAVA_HOME=/usr/local/java/jdk1.6.0_22

export CLASSPATH=.:$JAVA_HOME/lib

export PATH=$JAVA_HOME/bin:$PATH

重新加载环境变量:source /etc/profile

3.1.3 测试Java是否安装成功

输入 java -version,如果出现这个信息,就说明JDK安装成功了:

java version "1.6.0_22"

Java(TM) SE Runtime Environment (build 1.6.0_22-b04)

Java HotSpot(TM) Client VM (build 17.1-b03, mixed mode, sharing)

3.2 安装Tomcat

3.2.1apache-tomcat-5.5.33.zip

我这里用的Tomcat版本是apache-tomcat-5.5.33.zip,把它解压到/usr/local,为了便于区分,我把它重命名为tomcat1,再拷贝一份放于同级目录下重命名为tomcat2,并将tomcat2/conf/server.xml中的端口号修改成与tomcat1端口不一致,例如 Server port="8006"、HTTP/1.1 Connector  port="8081"、AJP 1.3 Connector port="8010"。

3.2.2配置环境变量

一台服务器上如果有多个tomcat,只需要配置一个tomcat的环境变量即可,这里以tomcat1为例,配置方法如下:

vi /etc/profile

在最后面加上:export TOMCAT_HOME=/usr/local/tomcat1

重新加载环境变量:source /etc/profile

3.2.3测试Tomcat是否安装成功

分别到Tomcat1和Tomcat2的bin目录下为所有后缀为sh的文件赋拥有者有执行的权限,并分别启动Tomcat1和Tomcat2,在浏览器中输入http://服务器IP:8080,和http://服务器IP:8081看是否正常显示Tomcat的首页,如果正常显示网页,则表示两个Tomcat已经正确安装完毕。

为了加以区别,我们在Tomcat1和Tomcat2的默认首页中分别加上“This is the index of Tomcat1”和“This is the index of Tomcat2”的字样,如下图所示:

www.xyxy.tk

3.3安装Apache

本文档中使用的Apache是目前最新版本:httpd-2.2.19.tar.gz

3.3.1httpd-2.2.19.tar.gz

将Apache解压 tar -zxvf httpd-2.2.19.tar.gz,解压后到新解压的目录里面 cd httpd-2.2.19,运行一下命令:

./configure --prefix=/usr/local/apache2 --enable-so --enable-mods-shared=all --enable-deflate --enable-rewrite --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-proxy-scgi --enable-proxy-ajp --enable-proxy-balance

将其安装在 /usr/local/apache2目录下,你也可以选择安装在其他目录,只要更改 --prefix的值即可。

运行完上面的configure 命令后,直接输入make && make install 命令就可以开始安装Apache啦。

3.3.2测试Apache是否安装成功

启动下Apache:/usr/local/apache2/bin/apachectl -k start,在浏览器中输入http://服务器IP地址,如看到“It works!”则说明Apache成功安装。

3.4集群和负载均衡的配置

下面我来说一说如何配置Tomcat的集群和负载均衡。Apache + Tomcat的集群和负载均衡目前有两种方式(我所了解的,如果不对请大家指正,3Q),一种是使用JK2,另一种是AJP,下面我会一一讲解这两种配置。网络上说JK2发展的历史悠久,技术成熟,目前很多大型网站都是用这种方式进行配置的,而AJP是最新出来的技术,还不善成熟,所以建议尽量使用JK2进行配置——这个不代表个人观点,具体使用哪种,请大家自行选择。

3.4.1修改httpd.conf

vi /usr/local/apache2/conf/httpd.conf

找到#Include conf/extra/httpd-vhosts.conf把前面的#去掉(我这里配置虚拟主机是为了apache还可以干别的事,节约资源)

找到 DocumentRoot "/usr/local/apache2/htdocs" 并把它注释掉 #DocumentRoot "/usr/local/apache2/htdocs"

找到

  <Directory />
      Options FollowSymLinks
      AllowOverride None
      Order deny,allow
      Deny from all     
        </Directory>

注释掉(这样我们可以在httpd-vhosts.conf里自己配置了)

# <Directory />
  #    Options FollowSymLinks
  #    AllowOverride None
  #    Order deny,allow
  #    Deny from all
      # </Directory>

在最后加入

# Include mod_jk's specific configuration file

Include conf/mod_jk.conf

3.4.2安装mod_jk.so

解压tomcat-connectors-1.2.31-src.tar.gz,到解压目录下的tomcat-connectors-1.2.31-src\native中,运行如下命令:./configure --with-apxs=/usr/local/apache2/bin/apxs

上面命令运行完后再运行:make && make install

运行完上面命令后,mod_jk.so将自动安装到Apache的modules目录中,如果Apache的modules中没找到mod_jk.so,请到tomcat-connectors-1.2.31-src/native/apache-2.0/目录下查找,并复制到Apache的modules目录中即可。

3.4.3建立mod_jk.conf文件

主要定义mod_jk模块的位置以及mod_jk模块的连接日志设置,还有定义worker.properties文件的位置。

vi /usr/local/apache2/conf/mod_jk.conf

粘贴如下代码:

LoadModule jk_module modules/mod_jk.so

JkWorkersFile conf/workers.properties

JkLogFile logs/mod_jk.log

JkLogLevel info

JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

JkRequestLogFormat "%w %V %T"

3.4.4建立workers.properties文件

定义worker的参数,主要是连接tomcat主机的地址和端口信息。如果Tomcat与apache不在同一台机器上,或者需要做多台机器上tomcat的负载均衡只需要更改workers.properties文件中的相应定义即可。

vi /usr/local/apache2/conf/workers.properties

粘贴如下代码:

# server 列表

worker.list = controller,tomcat1,tomcat2

# tomcat1(ajp13 端口号,在tomcat下server.xml配置,默认8009)

worker.tomcat1.port=8009

# tomcat的主机地址,如不为本机,请填写ip地址

worker.tomcat1.host=localhost

worker.tomcat1.type=ajp13

# server的加权比重,值越高,分得的请求越多

worker.tomcat1.lbfactor=1

# tomcat2

worker.tomcat2.port=8010

worker.tomcat2.host=localhost

worker.tomcat2.type=ajp13

worker.tomcat2.lbfactor=1

# controller(负载均衡控制器)

worker.controller.type=lb

# 指定分担请求的tomcat

worker.controller.balanced_workers=tomcat1,tomcat2

#worker.controller.sticky_session=true

说明:此文件配置了2个tomcat服务器进行负载均衡处理,sticky_session表示是否将对SESSION ID的请求路由回到相同的Tomcat worker。如果属性值不为0,它将被设置为JK_TRUE,session将是粘性的,即SESSION ID的请求路由回到相同的Tomcat worker;当Tomcat正使用能够跨越多个Tomcat实例持久化session数据的Session Manager时,它将被设置为JK_FALSE。我们服务器上用不到session复制,用的是cookie的形式,所以这块注释掉不用配置。

3.4.5修改httpd-vhosts.conf 文件

vi /usr/local/apache2/conf/extra/httpd-vhosts.conf

删除以下两段

<VirtualHost *:80>
        ServerAdmin webmaster@dummy-host.example.com
        DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com"
        ServerName dummy-host.example.com
        ServerAlias www.dummy-host.example.com
        ErrorLog "logs/dummy-host.example.com-error_log"
        CustomLog "logs/dummy-host.example.com-access_log" common
     </VirtualHost>

<VirtualHost *:80>
        ServerAdmin webmaster@dummy-host2.example.com
        DocumentRoot "/usr/local/apache2/docs/dummy-host2.example.com"
        ServerName dummy-host2.example.com
        ErrorLog "logs/dummy-host2.example.com-error_log"
        CustomLog "logs/dummy-host2.example.com-access_log" common
      </VirtualHost>

修改成以下代码

<VirtualHost *:80>
            ServerName *
            <Location />
                  Order deny,allow
                  Deny from all
            </Location>
       </VirtualHost>

# JK2

<VirtualHost *:80>
      ServerName 192.168.9.210
      ErrorLog "logs/192.168.9.210-error.log"
      CustomLog "logs/192.168.9.210-access_log" common
      RewriteEngine on 
      JkMount  /* controller # 负载均衡
      </VirtualHost>

# AJP - No.1

<VirtualHost *:80>
      ProxyPreserveHost On
      ServerName 192.168.9.210
      ErrorLog "logs/192.168.9.210-error.log"
      CustomLog "logs/192.168.9.210-access_log" common ProxyPass / ajp://localhost:8009/ # 或 ProxyPass / http://localhost:8080/
      ProxyPassReverse / ajp://localhost:8009/ # 或ProxyPassReverse / http://localhost:8080/
      </VirtualHost>

# AJP - No.2

<Proxy balancer://proxy>
          BalancerMember ajp://localhost:8009/  loadfactor=1
          BalancerMember ajp://localhost:8010/  loadfactor=1
          # 或 BalancerMember http://localhost:8080/ loadfactor=1
          # 或 BalancerMember http://localhost:8081/ loadfactor=1
  </Proxy>
  <VirtualHost *:80>
      ProxyPreserveHost On
      ServerName 192.168.9.210
      ErrorLog "logs/192.168.9.210-error.log"
      CustomLog "logs/192.168.9.210-access_log" common
      ProxyPass / balancer://proxy/
      ProxyPassReverse / balancer://proxy/
  </VirtualHost>

域名绑定

将ServerName 192.168.9.210后面的ip地址改成要绑定的域名即可。

3.5 综合测试Apache + Tomcat

到目前为止,Apache和Tomcat的配置就算完成了,我们依次启动Apache和Tomcat群,在浏览器中输入http://服务器IP,如果能正确显示Tomcat首页这就集成成功了。期间,如果我们反复刷新浏览器,看到页面交替显示“This is the index of Tomcat1”和“This is the index of Tomcat2”——可参考3.2.3章节图示,那么Tomcat的负载均衡就算配置成功啦!

4 总结

4.1、ServerName 192.168.9.210中的ip地址可以更改成需要绑定的域名即可。

4.2、在 configure Apache的时候,从网上找了很多资料都不能自动编译出modules下的so文件,期间找到一个说能编译出so文件的配置,可我用的时候编译出的都是些后缀为lo和c的文件,找了很多资料和方法都没能解决,最后我只能看configure 的帮助文档,一行行的看并一个个配置参数的尝试,并最终编译出了so文件。

4.3、设置Apache和Tomcat随系统启动而自动启动:

4.3.1Red Hat的配置

随系统启动的方法有很多种,这里为大家介绍的是我所摸索出来的一种,个人认为比较简单,至少不像网络上介绍的要再为每个Tomcat设置一遍环境变量:

vi /etc/rc.d/rc.local,在最后加入以下命令

source /etc/profile

/usr/local/apache2/bin/apachectl -k start

/usr/local/tomcat1/bin/startup.sh

/usr/local/tomcat2/bin/startup.sh

4.3.2 Ubuntu 的配置

Ubuntu 系统的配置与之不同:

vi /etc/init.d/javaweb ,并为javaweb赋执行权限。

粘贴如下内容:

#! /bin/sh

source /etc/profile

/usr/local/apache2/bin/apachectl -k start

/usr/local/tomcat1/bin/startup.sh

/usr/local/tomcat2/bin/startup.sh

然后运行 update-rc.d javaweb defaults,配置完成!

4.4 本文所涉及到的方法和配置有可能有些不足甚至是错误的地方,欢迎大家踊跃拍砖,为提高服务器综合效率而不断努力!

5 补充

5.1、修改tomcat的连接数

修改%TOMCAT_HOME%\conf\server.xml文件,找到 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 修改为:
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" enableLookups="false" maxHttpHeaderSize="8192" useBodyEncodingForURI="true" maxThreads="5000" acceptCount="5000" compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" connectionTimeout="600000" disableUploadTimeout="true"/> 
        改完后重启下tomcat。

5.2 修改虚拟机的内存大小

修改%TOMCAT_HOME%\bin\catalina.sh文件,加入如下配置:

JAVA_OPTS='-Xms4096m -Xmx4096m'

请尊重他人的劳动果实,转载时务必注明出处! 请尊重他人的劳动果实,转载时务必注明出处!
转载请注明:文章转载自:桐星豆博客 [http://blog.txdou.com]
本文标题:【原创】Linux+Apache2.2.19+Tocmat5+负载均衡+域名绑定
本文地址:http://blog.txdou.com/article65
分享到QQ空间 分享到腾讯朋友

  • 注意:“桐星豆博客”只会以“回复”的身份出现,不会以“咨询”的身份出现在留言或评论中,凡是以“咨询”的身份出现的留言或评论均为他人盗用!
  • 本站用以回复网友评论的唯一名称是“桐星豆博客”,除此外均无效,网友不得用此名进行相应文章的评论或回复!
  • 用户言论只代表其个人观点,不代表桐星豆博客的观点或立场!
  • 非诚勿扰,请友好如实的评论,杜绝谩骂、人格攻击等一切伤人言论,请严格遵循中华人民共和国法律法规!
  • 桐星豆博客拥有最终解释权,如有网友违规,本站将有权删除或屏蔽违规评论,情节严重者账户加入黑名单、永久封IP并报司法部门严惩!
  • 您一旦参与评论本站则默认为您已经同意以上条款,否则“非诚勿扰”,谢谢合作!

您的姓名或昵称: 选填
您的E-Mail地址: ☆必填--仅站长可见
您个人网站地址: 选填 ( 如果填写,请务必加上 http:// 或 https:// 等等 )
留言内容:

验证码: 点击重新生成验证码  [ ctrl + enter ]

CopyRight © 2009-2020 by 桐星豆博客 All Rights Reserved.