作为前端反向代理,httpd有两种选择。一种是在“proxy_module”的代理框架下使用“proxy_http_module”和“proxy_ajp_module”两个代理模块,独立工作。另一种是使用“mod_jk”模块实现httpd对后端tomcat的反向代理。
以下架构部署httpd+tomcat来实现方向代理:
反向代理系统架构计划如下:
服务器IP
。
eth0:172.16.100.1/16eth1:192.168.56.10/24
eth0:192.168.56.11/24
eth0:192.168.56.13/24
配置过程如下:
Tomcat服务安装配置:
(1)安装JDK
# rpm -ivh jdk-7u9-linux-x64.rpm --安装JDK后生成的文件 # cd /usr/java/ ; ll total 4 lrwxrwxrwx 1 root root 16 Sep 27 09:09 default -> /usr/java/latest drwxr-xr-x 10 root root 4096 Sep 27 09:09 jdk1.7.0_09 lrwxrwxrwx 1 root root 21 Sep 27 09:09 latest -> /usr/java/jdk1.7.0_09 --配置JDK环境变量 # vim /etc/profile.d/java.sh export JAVA_HOME=/usr/java/jdk1.7.0_09 export PATH=$PATH:$JAVA_HOME/bin --执行使环境变量生效 # . /etc/profile.d/java.sh --测试如下: # java -version java version "1.7.0_45" --jdk版本 OpenJDK Runtime Environment (rhel-2.4.3.3.el6-x86_64 u45-b15) OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)(2)安装tomcat
--解压tomcat包至/usr/local下 # tar xf apache-tomcat-7.0.67.tar.gz -C /usr/local/ # cd /usr/local/ # ln -sv apache-tomcat-7.0.67 tomcat --配置tomcat环境变量 # vim /etc/profile.d/tomcat.sh export CATALINA_HOME=/usr/local/tomcat export PATH=$PATH:$CATALINA_HOME/bin # . /etc/profile.d/tomcat.sh --测试如下: # catalina.sh version Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/java/jdk1.7.0_09 Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Server version: Apache Tomcat/7.0.67 Server built: Dec 7 2015 13:07:11 UTC Server number: 7.0.67.0 OS Name: Linux OS Version: 2.6.32-431.el6.x86_64 Architecture: amd64 JVM Version: 1.7.0_09-b05 JVM Vendor: Oracle Corporation --为tomcat提供srv启动脚本 # vim /etc/init.d/tomcat #!/bin/sh # Tomcat init script for Linux. # # chkconfig: 2345 96 14 # description: The Apache Tomcat servlet/JSP container. # JAVA_OPTS='-Xms64m -Xmx128m' JAVA_HOME=/usr/java/latest CATALINA_HOME=/usr/local/tomcat export JAVA_HOME CATALINA_HOME case $1 in start) $CATALINA_HOME/bin/catalina.sh start;; stop) $CATALINA_HOME/bin/catalina.sh stop;; restart) $CATALINA_HOME/bin/catalina.sh stop sleep 2 $CATALINA_HOME/bin/catalina.sh start;; *) echo "Usage: `basename $0` {start|stop|restart}" exit 1 ;; esac # chmod +x /etc/init.d/tomcat # chkconfig --add tomcat # service tomcat start --检查tomacat默认监听端口如下所示: # ss -tunlp | grep java tcp LISTEN 0 100 :::8080 :::* users:(("java",19525,42)) tcp LISTEN 0 1 ::ffff:127.0.0.1:8005 :::* users:(("java",19525,47)) tcp LISTEN 0 100 :::8009 :::* users:(("java",19525,43))tomcat添加虚拟主机(tomcat1和tomcat的配置步骤相同)
建立测试访问测试页面:
# vim /web/ROOT/index.jsp <%@ page language="java" %> <html> <head><title>TomcatA</title></head> <body> <h1><font color="red">TomcatA </font></h1> <table align="centre" border="1"> <tr> <td>Session ID</td> <% session.setAttribute("abc","abc"); %> <td><%= session.getId() %></td> </tr> <tr> <td>Created on</td> <td><%= session.getCreationTime() %></td> </tr> </table> </body> </html访问测试如下:
httpd服务安装配置:
系统环境:
# cat /etc/issue CentOS release 6.5 (Final) Kernel \r on an \m # uname -r 2.6.32-431.el6.x86_64httpd版本和模块检查:
# rpm -q httpd httpd-2.2.15-29.el6.centos.x86_64 # httpd -M | grep proxy Syntax OK proxy_module (shared) --反向代理主模块 proxy_balancer_module (shared) proxy_ftp_module (shared) proxy_http_module (shared) --http协议的反向代理模块 proxy_ajp_module (shared) --ajp协议的反向代理模块 proxy_connect_module (shared)配置为使用mod_proxy反向代理后端tomcat
第一种方式:http模式
# vim /etc/httpd/conf.d/mod_proxy.conf ProxyVia on ProxyRequests off ProxyPreserveHost on ProxyPass / http://192.168.56.11:8080/ ProxyPa***everse / http://192.168.56.11:8080/ <Location /> Order Allow,Deny Allow from all </Location>第二种方式:ajp模式
# vim /etc/httpd/conf.d/mod_proxy.conf ProxyVia on ProxyRequests off ProxyPreserveHost on ProxyPass / ajp://192.168.56.11:8009/ ProxyPa***everse / ajp://192.168.56.11:8009/ <Location /> Order Allow,Deny Allow from all </Location>配置完成后,重新启动httpd服务:
# service httpd restart访问内容如下:
使用mod_proxy和负载平衡配置反向代理到后端tomcat
第一种方式:http模式
# vim /etc/httpd/conf/httpd.conf #DocumentRoot "/var/www/html" --将此行注释掉,使用虚拟主机实现 # vim /etc/httpd/conf.d/mod_http.conf <Proxy balancer://webcluster> --定义集群名称 BalancerMember http://192.168.56.11:8080 loadfactor=1 --添加集群节点,loadfactor代表权重 BalancerMember http://192.168.56.12:8080 loadfactor=1 ProxySet lbmethod=byrequests --负载均衡的调度方法 </Proxy> NameVirtualHost *:80 \\启用虚拟主机 <VirtualHost *:80> ServerName www.samlee.com ProxyVia on --添加via信息 ProxyRequests off --关闭正向代理 ProxyPreserveHost on --支持虚拟合租记 ProxyPass / balancer://webcluster stickysession=JESSIONID --将httpd请求至后端主机 ProxyPa***everse / balancer://webcluster stickysession=JESSIONID--将httpd请求至后端主机 </VirtualHost>
第二种方式:ajp模式
# vim /etc/httpd/conf/httpd.conf #DocumentRoot "/var/www/html" --将此行注释掉,使用虚拟主机实现 # vim /etc/httpd/conf.d/mod_http.conf <Proxy balancer://webcluster> --定义集群名称 BalancerMember ajp://192.168.56.11:8009 loadfactor=1 --添加集群节点,loadfactor代表权重 BalancerMember ajp://192.168.56.12:8009 loadfactor=1 ProxySet lbmethod=byrequests --负载均衡的调度方法 </Proxy> NameVirtualHost *:80 \\启用虚拟主机 <VirtualHost *:80> ServerName www.samlee.com ProxyVia on --添加via信息 ProxyRequests off --关闭正向代理 ProxyPreserveHost on --支持虚拟合租记 ProxyPass / balancer://webcluster stickysession=JESSIONID --将httpd请求至后端主机 ProxyPa***everse / balancer://webcluster stickysession=JESSIONID--将httpd请求至后端主机 </VirtualHost> <Location /lbmanager> --定义反向代理监控页面 SetHandler balancer-manager </Location> ProxyPass /lbmanager !访问内容如下:
以上参数说明:
后端服务器url与作为用于提供服务的路径的当前服务器的虚拟路径相关联,该路径是当前服务器上的虚拟路径,且该url是后端服务器上的URL路径。请注意,如果path以“/”结尾,则相应的url也必须以“/”结尾,反之亦然。
mod_proxy模块在2.1版之后支持与后端服务器的连接池功能,连接是按需创建的,可以保存在连接池中以备后用。大型连接池或其他设置可以通过在ProxyPass中使用key=value来定义。您也可以使用密码集定义。的常用键如下: min 连接池的最小容量。该值与实际的连接数无关,只表示/[k0/]之间要初始化的最小连接池大小 。使用mod_jk反向代理和负载平衡配置到后端tomcat
安装mod_jk
# yum -y groupinstall "Development Tools" "Server Platfrom Development" --安装编译环境 # yum -y install httpd-devel --安装httpd开发包 -安装tomcat-connectors连接工具 # tar xf tomcat-connectors-1.2.41-src.tar.gz -C /usr/src/ # cd /usr/src/tomcat-connectors-1.2.41-src/native/ # ./configure --with-apxs=`which apxs` # make && make install确认httpd的mod_jk模块是否编译成功。
# ls -l /usr/lib64/httpd/modules/mod_jk.so -rwxr-xr-x 1 root root 1215715 Oct 6 17:14 /usr/lib64/httpd/modules/mod_jk.so按如下方式配置mod_jk配置文件:
# vim /etc/httpd/conf.d/mod_jk.conf LoadModule jk_module modules/mod_jk.so --装载mod_jk模块 JkWorkersFile /etc/httpd/conf.d/workers.properties --指明运行时配置的文件的位置 JkLogFile log/mod_jk.log --指定log位置的路径 JkLogFile debug --指定日志级别,根据需求自定义 JkMount /* WebCluster --将所有httpd请求转发至后端WebCluster集群中,名称自定义 JkMount /jk_status statA --启用jk状态监控页面使用mod_jk定义后端主机和群集配置:
# vim /etc/httpd/conf.d/workers.properties worker.list=WebCluster,statA --定义工作列表 worker.TomcatA.type=ajp13 --定义后端TomcatA主机类型 worker.TomcatA.port=8009 --定义后端主机的监听端口 worker.TomcatA.host=192.168.56.11 --定义后端主机地址 worker.TomcatA.lbfactor=5 worker.TomcatB.type=ajp13 worker.TomcatB.port=8009 worker.TomcatB.host=192.168.56.12 worker.TomcatB.lbfactor=5 worker.WebCluster.type=lb --定义WebCluster组的类型 worker.WebCluster.sticky_session=0 --定义WebCluster集群会话类型为0代表关闭会话保持,为1反之 worker.WebCluster.balance_workers=TomcatA,TomcatB --将后端主机TomcatA,TomcatB加入至WebCluster组中 worker.statA.type=status --定义statA状态页面的类型 type有三种类型: ajb13:用于负载调度 status:tomcat自身所带的监控页面,类似于httpd的status lb:集群类型修改tomcat主配置文件,在引擎中修改如下:
tomcat节点: <Engine name="Catalina" defaultHost="www.samlee.com" jvmRoute="TomcatA"> \\添加jvmRoute指令 tomcat节点 <Engine name="Catalina" defaultHost="www.samlee.com" jvmRoute="TomcatB"> \\添加jvmRoute指令 --重启tomcat服务 # service tomcat restart最后,重新启动httpd服务:
# service httpd restart访问内容如下:
请参见jk状态监控页面:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)