Linux(Ubuntu)下apache tomcat mod_jk实现负载均衡全过程

 辛苦码字,转载请注明出处!

一、系统简介

Ubuntu 10.04.4 LTS  64位操作系统

Linux  2.6.32-41-generic  x86_64 GNU/Linux  (其他Linux版本的安装方法大致相同)

1个apache  2个tomcat在同一台电脑上的配置

二、本实例所用软件:

1、apache安装软件

      httpd-2.4.2.tar.gz         点此下载:

      apr-1.4.6.tar.gz            点此下载:

      apr-util-1.4.1.tar.gz      点此下载:

      pcre-8.30.tar.gz           点此下载:

2、JDK安装软件

      安装JDK要根据自己电脑系统去官方网站选择合适的版本下载。

      本例下载的是:jdk-7u3-linux-x64.tar.gz

3、Tomcat安装软件

      apache-tomcat-7.0.27.tar.gz       点此下载:

4、JK模块

      tomcat-connectors-1.2.35-src.tar.gz       点此下载:

软件准备完毕

三、安装软件

        注:为了避免权限限制,本例所有操作都是以root用户操作。

               软件安装目录:   /usr/local

1、安装并测试apache

首先先安装apr、apr-util以及pcre,这个在安装apache的时候会用到。(ps:安装apache时系统会检测有没有这些文件支持。)

  •   安装apr

        tar -zxvf  apr-1.4.6.tar.gz                                        # 解压安装文件

        cd apr-1.46                                                             # 进入解压出来的文件夹:apr-1.46

        ./configure  --prefix=/usr/local/apr                           # 设置apr的安装目录   本例设置为:  /usr/local/apr

        make && make install                                             #  编译并安装apr

        apr安装完成

  •  安装apr-util

       tar -zxvf apr-util-1.4.1.tar.gz

       cd apr-util-1.4.1

       ./configure  --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

       make && make install

        apr-util安装完成

  •  安装pcre

tar -zxvf pcre-8.30.tar.gz

cd pcre-8.30

./configure  --prefix=/usr/local/pcre

make && make install

pcre安装完成

  •  安装apache

tar -zxvf httpd-2.4.2.tar.gz

cd httpd-2.4.2

./configure --prefix=/usr/local/apache2  --with-apr=/usr/local/apr  --with-apr-util=/usr/local/apr-util  --with-pcre=/usr/local/pcre   --enable-so

make && make install

至此,apache安装完成。

  •  测试

/usr/local/apache2/bin/apachectl start

在地址栏输入:127.0.0.1    出现   IT works!页面    apache安装成功

2、安装并测试JDK

  • 安装

tar -zxvf jdk-7u3-linux-x64.tar.gz  

               mv jdk1.7.0_03 ./jdk                                             #这个只是改变JDK的目录,也可以不改,在后边设置环境变量要注意路径设置

下载的这个版本的JDK是免安装软件,解压缩之后就安装完成

  • 配置环境变量

 vi /etc/profile            (新手对vi编辑器不熟悉的话,可以在图形化界面用  gedit /etc/profile   )

在文件最后加上

export JAVA_HOME=/usr/local/jdk

export CLASSPATH=$JAVA_HOME/lib

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

保存退出

source /etc/profile                                        #上载刚才对profile文件的更改

  • 测试

 在终端输入命令:

java -version

出现以下信息表示java运行环境配置成功

java version "1.7.0_03"

Java(TM) SE Runtime Environment (build 1.7.0_03-b04)

Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)

##如果提示JAVA_HOME找不到,可尝试把JAVA_HOME在 /etc/enviroment 文件中做定义##

vi /etc/enviroment 

在空白处增加:

export JAVA_HOME=/usr/local/jdk

:wq  保存退出

source /etc/enviroment

再进行测试。

3、安装并测试tomcat

  • 安装

 tar -zxvf apache-tomcat-7.0.27.tar.gz

 cp -r apache-tomcat-7.0.27 /usr/local/tomcat1

 mv apache-tomcat-7.0.27 /usr/local/tomcat2

  • 配置tomcat运行环境

修改tomcat运行环境

vi /etc/profile

在文件最后加入两行:

export CATALINA_1_HOME=/usr/local/tomcat1

export CATALINA_2_HOME=/usr/local/tomcat2

保存退出

  • 修改tomcat1/bin/catalina.sh

 vi /usr/local/tomcat1/bin/catalina.sh

在注释结束的地方,大概第99行加入一句:

CATALINA_HOME=$CATALINA_1_HOME

保存退出

  • 修改tomcat2/bin/catalina.sh

 vi /usr/local/tomcat2/bin/catalina.sh

位置与tomcat1相同,加入:

CATALINA_HOME=$CATALINA_2_HOME

保存退出

  • 配置tomcat端口信息

tomcat1不用做修改,因为两台tomcat在同一台电脑上,修改端口避免冲突

 vi /usr/local/tomcat2/conf/server.xml

 共修改3处:

<Server port="8005" shutdown="SHUTDOWN">   修改8005

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />   修改8080

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />   修改8009 

本例修改如下:

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

<Connector port="8180" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />   

<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />   #本端口在做整合的时候要用

  • 测试tomcat

 分别运行:

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

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

打开浏览器输入地址:

localhost:8080

localhost:8180

出现tomcat 猫的界面,tomcat安装成功

4、生成mod_jk.so模块

  • 安装JK模块

 tar -zxvf tomcat-connectors-1.2.35-src.tar.gz

 cd tomcat-connectors-1.2.35-src/native/

./configure --with-apxs=/usr/local/apache2/bin/apxs --with-java-home=/usr/local/jdk

make && make install

运行apache下的apxs,如果返回如下结果,证明正常。

cd /usr/local/tomcat-connectors-1.2.35-src/native/apache-2.0

/usr/local/apache2/bin/apxs -n jk2 -i mod_jk.so

/usr/local/apache2/build/instdso.sh SH_LIBTOOL='/usr/local/apache2/build/libtool' mod_jk2.so /usr/local/apache2/modules

/usr/local/apache2/build/libtool --mode=install cp mod_jk.so /usr/local/apache2/modules/

cp mod_jk.so /usr/local/apache2/modules/mod_jk.so

Warning!  dlname not found in /usr/local/apache2/modules/mod_jk.so.

Assuming installing a .so rather than a libtool archive.

cp mod_jk.so /usr/local/apache2/modules/

chmod 755 /usr/local/apache/modules/mod_jk.so

 

 

                       ll /usr/local/apache/modules/mod_jk.so

                       -rwxr-xr-x 1 root root 709215 08-14 10:22 /usr/local/apache/modules/mod_jk.so                     

                       说明mod_jk.so生成成功。

四、整合实现负载均衡

1、配置apache中mod_jk.so运行所需文件

Apacheconf目录中创建文件workers.propertiesuriworkermap.properties

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

加入如下内容

worker.list=master , jkstatus           (ps:“master”名称可以自己更改,但要保证和文件uriworkermap.properties中统一)

worker.tomcat1.port=8009                (ps:此处端口和tomcat中的配置需一致)
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
# Define preferred failover node for tomcat1
# worker.tomcat1.redirect=tomcat2

worker.tomcat2.port=8109
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
# Disable tomcat2 for all requests except failover
# worker.tomcat2.activation=disabled


worker.master.type=lb
worker.master.balance_workers=tomcat1,tomcat2

worker.jkstatus.type=status

保存退出

            以上注释掉的两行如果开启,则tomcat2成为tomcat1的备用,在tomcat1不可用的情况下才会向tomcat2请求

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

加入如下内容:

/admin/*=master
/manager/*=master
/jsp-examples/*=master
/servlets-examples/*=master
/examples/*=master
/*.jsp=master
!/servlets-examples/*.jpeg=master


/jkmanager=jkstatus

!/*.gif=master
!/*.jpg=master
!/*.png=master
!/*.css=master
!/*.js=master
!/*.htm=master
!/*.html=master

保存退出

2、配置tomcat中mod_jk.so运行所需文件

vi /usr/local/tomcat1/conf/server.xml

在这个位置修改:

<Host name="localhost"  appBase="webapps" 
            unpackWARs="true" autoDeploy="true">

修改后:

<Host name="localhost"  appBase="webapps" 
            unpackWARs="true" autoDeploy="true" 
            xmlValidation="false" xmlNamespaceAware="false"> 
<Context path="" docBase="/usr/local/apache2/htdocs" debug="0"/>

然后在这个位置:

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

修改后:

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

(PS:注意此处是在tomcat1的server.xml文件中,指向tomcat2,在tomcat2的文件中指向tomcat1)

同样也修改tomcat2的server.xml文件中

<Host name="localhost"  appBase="webapps" 
            unpackWARs="true" autoDeploy="true">

和tomcat1相同。

保存退出

至此,整合完成。

3、在/usr/local/apache2/htdocs下创建测试文件test.jsp

vi /usr/local/apache2/htdocs/test.jsp

 

<% 
    System.out.println( "Evaluating date now" ); 
    java.util.Date date = new java.util.Date(); 
%> 
Hello!  The time is now <%= date %>

五、测试成果

启动tomcat 和httpd 服务

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

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

/usr/local/apache2/bin/apachectl restart

测试

打开浏览器访问localhot/test.jsp 时输出

Hello! The time is now  (当前时间)

访问 localhost/jkmanager 可以查看状态,可以看到每次请求依次连接到每个tomcat上

大功告成。

辛苦码字,转载请注明出处!

参阅资料及网站:http://blog.csdn.net/ppzlyg/article/details/6170045

                            http://blog.csdn.net/chaijunkun/article/details/6987443

                            https://www.ibm.com/developerworks/cn/

       

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2012-04-28 15:27  圆豆  阅读(748)  评论(0编辑  收藏  举报