云服务器

帮助中心 >  产品文档 >  云服务器 >  服务器教程 >  mod_jk 结合 apache + tomcat 实现负载均衡,动静分离

mod_jk 结合 apache + tomcat   实现负载均衡,动静分离


image.png

1,实验前准备

主机名


1.1.1.128 tomcat1.cluster.com

1.1.1.129 tomcat2.cluster.com

1.1.1.1 apache.cluster.com



时间同步

关闭iptables,selinux

配置yum


2,在tomcat1和tomcat2上安装好tomcat


3,在apache上安装apache,下面是源码版的做法。

/share/soft/lamp/apache_source/httpd-2.2.19.tar.gz

解压编译安装


--如果以前编译过apache,先使用下面两条命令把源码和安装路径全删除

# rm /usr/src/httpd-2.2.19/ -rf

# rm /usr/local/apach2/ -rf


# tar xf /share/soft/lamp/apache_source/httpd-2.2.19.tar.gz -C /usr/src/


# cd /usr/src/httpd-2.2.19/


# ./configure --enable-so --enable-rewrite --enable-modules=all --enable-mods-shared=all --with-mpm=prefork


#make ;make install


--上面的编译参数,可以不加--enable-proxy,--enable-proxy-ajp,--enable-proxy-balancer。因为我们这里是使用mod_jk的


4,在apache上编译mod_jk模块

/share/soft/soft/tomcat_source/tomcat-connectors-1.2.37-src.tar.gz


http://www.landui.com/download-connectors.cgi----上面的包(mod_jk)下载地址


# tar xf /share/soft/soft/tomcat_source/tomcat-connectors-1.2.37-src.tar.gz -C /usr/src/

# cd /usr/src/tomcat-connectors-1.2.37-src/


# ls--这里面conf里有配置的模版,native目录里可以与apache的apxs指令编译出mod_jk模块

BUILD.txt  docs      LICENSE  NOTICE   tools

conf       jkstatus  native   support  xdocs


# cd native/

# ./configure --with-apxs=/usr/local/apache2/bin/apxs --源码版的编法


# make ;make install


# ls /usr/local/apache2/modules/mod_jk.so   --编译后产生mod_jk模块



5,配置apache主配置文件,使其使用mod_jk的子配置文件


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

Include conf/extra/httpd-jk.conf--主配置文件加上这一句


6,拷贝要用到的配置文件模版

--拷贝mod_jk的配置文件模版到对应的apache配置目录

# cp /usr/src/tomcat-connectors-1.2.37-src/conf/httpd-jk.conf /usr/local/apache2/conf/extra/


--拷贝定义调度的配置文件模版

# cp /usr/src/tomcat-connectors-1.2.37-src/conf/workers.properties /usr/local/apache2/conf/extra/


--拷贝定义动静分离的配置文件模版

# cp /usr/src/tomcat-connectors-1.2.37-src/conf/uriworkermap.properties /usr/local/apache2/conf/extra/


7,配置这三个配置文件


# vim /usr/local/apache2/conf/extra/httpd-jk.conf 


  JkWorkersFile conf/extra/workers.properties--因为我拷到conf/extra,所以这里改成对应的路径

  JkMountFile conf/extra/uriworkermap.properties  --打开注释

  SetEnvIf REQUEST_URI "\.(htm|html|css|gif|jpg|js)$" no-jk --打开注释

    <Location /jk-status>

        JkMount jk-status

        Order deny,allow

        Deny from all

        Allow from 127.0.0.1 10.2.2.200  --加上允许10.2.2.200查看jk-status

    </Location>

    <Location /jk-manager>

        JkMount jk-manager

        Order deny,allow

        Deny from all

        Allow from 127.0.0.1 10.2.2.200 --加上允许10.2.2.200查看jk-manager

    </Location>



# vim /usr/local/apache2/conf/extra/workers.properties 


worker.list=balancer

worker.balancer.type=lb


worker.balancer.balance_workers=node1--指定的后面被调度的jvmroute

worker.node1.reference=worker.template

worker.node1.host=1.1.1.128--后面被调度的tomcat的IP

worker.node1.port=8009--改成8009

worker.node1.activation=A



worker.balancer.balance_workers=node2

worker.node2.reference=worker.template

worker.node2.host=1.1.1.129--另一台的IP

worker.node2.port=8009--改为8009

worker.node2.activation=A


worker.template.type=ajp13


# vim /usr/local/apache2/conf/extra/uriworkermap.properties 


/admin/*=balancer--这些目录下的所有文件都交给balancer去调度

/manager/*=balancer

/jsp-examples/*=balancer

/servlets-examples/*=balancer

/examples/*=balancer

/*.jsp=balancer  --表示apache家目录下*.jsp就给balancer去进行后台两个tomcat的调度



8,部署网站内容(一个网站,在apache和后台tomcat的家目录里都要部署相同的内容,实际情况可以使用共享存储)


我这里就把tomcat里的内容拷过来

要注意的是目录的对应

我现在编译版apache的家目录为默认的/usr/local/apache2/htdocs/



所以我现在在tomcat1上操作:

--把下面三个目录拷到apache的家目录下

# scp -r /usr/local/tomcat/webapps/ROOT/* apache.cluster.com:/usr/local/apache2/htdocs/


9,配置两台tomcat的jvmroute


在tomcat1上操作:

# vim /usr/local/tomcat/conf/server.xml

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


在tomcat2上操作:

# vim /usr/local/tomcat/conf/server.xml

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


10,启动服务

apache上:

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


tomcat1和tomcat2上启动tomcat:

# /usr/local/tomcat/bin/startup.sh 


11,测试


a,在客户端上的firefox直接访问apache  http://www.landui.com

得到的是tomcat的主页,因为我拷过来了

去apache把

/usr/local/apache2/htdocs/index.html里的内容改一下

去tomcat1和tomcat2上把

/usr/local/tomcat/webapps/ROOT/index.jsp里的内容也简单改成不同

再访问http://www.landui.com会看到修改的内容

再访问http://www.landui.com/index.jsp 会访问会调度到后台的两台tomcat


b,访问http://www.landui.com/jk-status


c,访问http://www.landui.com/jk-manager


4,在tomcat上安装jsprun

步骤省略


然后

# scp -r /usr/local/tomcat/webapps/jsprun/ apache.cluster.com:/usr/local/apache2/htdocs/


再访问http://www.landui.com/jsprun

会看到所有的文件都以列表形式显示,因为默认apache访问的主页为index.html。所以http://www.landui.com/jsprun/index.jsp访问,就可以访问OK了


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: