利用httpd对Tomcat进行负载均衡
操作系统:CentOS 6.5_x86_64
前提:提前准备好编译环境,防火墙和selinux都关闭
主机IP:两台机器,192.168.203.103、192.168.203.104
安装软件:jdk-8u51-linux-x64, apache-tomcat-8.0.24, tomcat-connectors-1.2.41, httpd-2.2.15, httpd-devel-2.2.15
一、两台机器都安装JAVA8
1 | sudo rpm -qa | grep jdk |
下载JDK8的包
1 | wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u60-b27/jdk-8u60-linux-x64.tar.gz" |
如果上述链接失效,请去官网下载最新的源码包。
1 | cd /opt/ |
得到以下输出,选择刚刚安装的jdk8即可:
1 | There are 3 programs which provide 'java'. |
然后再配置下javac和jar
1 | sudo alternatives --install /usr/bin/jar jar /opt/jdk1.8.0_51/bin/jar 2 |
查看下JDK版本
1 | java -version |
修改环境变量
1 | sudo vim /etc/profile |
输入以下内容
1 | export JAVA_HOME=/opt/jdk1.8.0_51 |
执行
1 | source /etc/profile |
二、两台机器安装tomcat
1.下载安装tomcat
1 | wget http://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.0.24/bin/apache-tomcat-8.0.24.tar.gz |
2.配置环境变量
1 | vim /etc/profile.d/tomcat.sh |
1 | CATALINA_BASE=/usr/local/tomcat |
执行:
1 | . /etc/profile.d/tomcat.sh |
3.查看状态:
1 | catalina.sh version |
4.提供启动脚本
sudo vim /etc/init.d/tomcat
1 |
|
执行:
1 |
|
5.编辑tomcat配置文件,只添加jvmRoute参数:
在第一台机子上面:
1 | sudo vim /usr/local/tomcat/conf/server.xml |
修改下面这句:
1 | <Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatA"> |
在第二台机子上面:
1 | sudo vim /usr/local/tomcat/conf/server.xml |
修改下面这句:
1 | <Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatB"> |
6.提供测试页面
第一台机器上:
1 | sudo mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib} |
写一个简单的JSP页面:
1 | <%@ page language="java" %> |
然后启动tomcat
1 | sudo service tomcat start |
这时候可以通过访问 http://192.168.203.103:8080/test
访问到这个页面
第二台机器上:
1 | sudo mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib} |
写一个简单的JSP页面:
1 | <%@ page language="java" %> |
然后启动tomcat
1 | sudo service tomcat start |
这时候可以通过访问http://192.168.203.104:8080/test
访问到这个页面
三、利用mod_jk模块对tomcat进行负载均衡
利用httpd反向代理tomcat时有两种方法,分别要用到mod_proxy和mod_jk这两个模块。 mod_jk需要额外编译安装,不过它功能更强大,所以推荐mod_jk。 此模块只需要在一台机器上安装,我们这里在第一台机器(103)上安装。
1.安装httpd:
1 | yum -y install httpd httpd-devel |
2.安装mod_jk.so模块:
1 | wget http://mirrors.cnnic.cn/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.41-src.tar.gz |
3.提供额外的httpd模块配置文件:
1 | vim /etc/httpd/conf.d/httpd-jk.conf |
1 | # Load the mod_jk |
4.配置mod_jk模块的配置文件workers.properties:
1 | vim /etc/httpd/conf.d/workers.properties |
1 | worker.list = lb1,stat1 |
5.启动httpd测试:
我们先去修改下hostname,还有httpd的domainname,sudo vim /etc/hosts
1 | 127.0.0.1 localhost centos03 |
然后修改httpd的配置文件,sudo vim /etc/httpd/conf/httpd.conf
修改这一行:
1 | ServerName localhost:80 |
最后我们启动httpd服务:
1 | sudo service httpd start |
用浏览器打开http://192.168.203.103/test
,我们不断刷新,可以看到效果。
6.修改httpd默认端口号方法
1 | sudo vim /etc/httpd/conf/httpd.conf |
修改两个地方
1 | #Listen 12.34.56.78:80 |
保存修改,退出,重启httpd服务。