开发者社区> 余二五> 正文

httpd+tomcat(1) -- proxy_http_module

简介:
+关注继续查看
全部系统采用centos7.1 

各节点配置好hosts文件
cat /etc/hosts
172.16.92.2    node2.centos7.com    node2
172.16.92.3    node3.centos7.com    node3
172.16.92.4    node4.centos7.com    node4

node2, node3  --> tomcat ( jsp网站服务器 )
node4 --> httpd(proxy_http_module) 反向代理至tomcat 

================ node2 172.16.92.2/16 ===================
安装JDK(光盘源)
mount /dev/cdrom /mnt/cdrom/
yum -y install java-1.7.0-openjdk

安装二进制tomcat

wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.23/bin/apache-tomcat-8.0.23.tar.gz
tar xf apache-tomcat-8.0.23.tar.gz -C /usr/local
cd /usr/local
ln -sv apache-tomcat-8.0.23 tomcat
vim /etc/profile.d/tomcat.sh
(:set paste)
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
================
. /etc/profile.d/tomcat.sh
catalina.sh --help
catalina.sh version
catalina.sh start

windows浏览器访问 http://172.16.92.2:8080/ 能看到tomcat首页即可

catalina.sh stop

mkdir -pv /data/webapps/ROOT
cd tomcat/conf
cp server.xml{,.bak}
vim server.xml
#添加虚拟主机
<Engine name="Catalina" defaultHost="node2.centos7.com">   #修改
:set nu
:123,139y  -> p -> 修改成如下
      <Host name="node2.centos7.com"  appBase="/data/webapps"
            unpackWARs="true" autoDeploy="true">
        <Context path="" docBase="/data/webapps/ROOT" />
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/logs"
               prefix="tomcatA_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
==============
mkdir /data/logs
catalina.sh configtest
>全部都是INFO开头的就正常了

(难道是把jar放在 /data/webapps/ROOT/lib 下?)

mkdir -pv /data/webapps/ROOT/{lib,classes,META-INF,WEB-INF}
vim /data/webapps/ROOT/index.jsp

<%@ page language="java" %>
<html>
  <head><title>TomcatA</title></head>
  <body>
    <h1><font color="red">TomcatA.centos7.com</font></h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
    <% session.setAttribute("centos7.com","centos7.com"); %>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
  </body>
</html>
================
catalina.sh start
ss -tnal | grep 8080

windows 浏览器访问 http://172.16.92.2:8080/ 
--------------------------------------------------------------------
TomcatA.centos7.com
Session ID     D9D258F305C067821340427EEC9BDE25
Created on     1446019812559
--------------------------------------------------------------------



================ node3 172.16.92.3/16 ===================
安装JDK(光盘源)
mount /dev/cdrom /mnt/cdrom/
yum -y install java-1.7.0-openjdk

安装tomcat
scp node2:/root/apache-tomcat-8.0.23.tar.gz ./
tar xf apache-tomcat-8.0.23.tar.gz -C /usr/local
cd /usr/local
ln -sv apache-tomcat-8.0.23 tomcat
scp node2:/etc/profile.d/tomcat.sh /etc/profile.d/
. /etc/profile.d/tomcat.sh
catalina.sh --help
catalina.sh version
catalina.sh start

windows浏览器访问 http://172.16.92.3:8080/ 
能看到tomcat首页即可

catalina.sh stop

cd /usr/local/tomcat/conf/
cp server.xml{,.bak}
scp node2:/usr/local/tomcat/conf/server.xml ./
vim server.xml
<Engine name="Catalina" defaultHost="node3.centos7.com">              #修改
<Host name="node3.centos7.com"  appBase="/data/webapps" autoDeploy="true">    #修改
prefix="tomcatB_access_log" suffix=".txt"                         #修改
=================
mkdir -pv /data/webapps/ROOT/{lib,classes,META-INF,WEB-INF}
mkdir /data/logs
vim /data/webapps/ROOT/index.jsp

<%@ page language="java" %>
<html>
  <head><title>TomcatB</title></head>
  <body>
    <h1><font color="blue">TomcatB.centos7.com</font></h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
    <% session.setAttribute("centos7.com","centos7.com"); %>        
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>    </table>
  </body>
</html>
==========
catalina.sh configtest
>全部都是INFO开头的就是正常了
catalina.sh start

windows 浏览器访问 http://172.16.92.3:8080/
(第一次访问时间会比较长)
-----------------------------------------------------------------------
TomcatB.centos7.com
Session ID     AD6C6BE89A883FC0C2D881CABC9ABD9C
Created on     1446021071150
-----------------------------------------------------------------------



================ node4 172.16.92.4/16 ===================
apache做tomcat反向代理方式一 --- proxy_http_module

(光盘yum源)
mount /dev/cdrom /mnt/cdrom
yum -y install httpd
httpd -M | grep proxy_http_module

vim /etc/httpd/conf/httpd.conf
ServerName node4.centos7.com:80    #去注释并更改
#DocumentRoot "/var/www/html"    #注释中心主机
========================
vim /etc/httpd/conf.d/vhosts_http.conf

<proxy balancer://lbcluster1>
    BalancerMember http://172.16.92.2:8080 loadfactor=10 route=TomcatA
    BalancerMember http://172.16.92.3:8080 loadfactor=10 route=TomcatB
</proxy>
<VirtualHost *:80>
    ServerName tomcat.centos7.com
    ProxyVia On
    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
        Require all granted
    </Proxy>
    ProxyPass / balancer://lbcluster1/
    ProxyPassReverse / balancer://lbcluster1/
    <Location />
        Require all granted
    </Location>
</VirtualHost>
====================
httpd -t
systemctl start httpd.service
ss -tanlp | grep 80





windows浏览器访问 http://172.16.92.4/index.jsp ,在如下两个网页轮询
--------------------------------------------------------------------------------
TomcatA.centos7.com
Session ID     DACF1B67D1F06A4F1181696C6F36B226
Created on     1446021532446
--------------------------------------------------------------------------------
TomcatB.centos7.com
Session ID     FBCF88D46F56EC8DD7153095C16A08BF
Created on     1446021537042
--------------------------------------------------------------------------------





================ node4 172.16.92.4/16 ===================
apache基于session实现会话绑定

vim /etc/httpd/conf.d/vhosts_http.conf
#添加第一行和第五行
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<proxy balancer://lbcluster1>
        BalancerMember http://172.16.92.2:8080 loadfactor=10 route=TomcatA
        BalancerMember http://172.16.92.3:8080 loadfactor=10 route=TomcatB
        ProxySet stickysession=ROUTEID
</proxy>
<VirtualHost *:80>    #此容器内的保持不变
......
</VirtualHost>
=================
最终修改后结果如下:
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<proxy balancer://lbcluster1>
    BalancerMember http://172.16.92.2:8080 loadfactor=10 route=TomcatA
    BalancerMember http://172.16.92.3:8080 loadfactor=10 route=TomcatB
            ProxySet stickysession=ROUTEID
</proxy>
<VirtualHost *:80>
    ServerName tomcat.centos7.com
    ProxyVia On
    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
        Require all granted
    </Proxy>
    ProxyPass / balancer://lbcluster1/
    ProxyPassReverse / balancer://lbcluster1/
    <Location />
        Require all granted
    </Location>
</VirtualHost>
=================
httpd -t
systemctl reload httpd

windows浏览器访问 http://172.16.92.4/index.jsp, 绑定在如下页面了
TomcatA.centos7.com
Session ID     C69703CAD1B76C003EBDD33B2C744A25
Created on     1446021766794


#####################################
apache状态管理页
vim /etc/httpd/conf.d/vhosts_http.conf
......                    #内容一样滴
<VirtualHost *:80>
.......
        <Location /balancer-manager>        #添加此段
                SetHandler balancer-manager
                Proxypass !
                Require all granted            #允许所有的客户端访问
                #Require ip 172.16.249.102        #只允许172.16.249.102访问
        </Location>
</VirtualHost>
=================
最终修改后结果如下:
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<proxy balancer://lbcluster1>
    BalancerMember http://172.16.92.2:8080 loadfactor=10 route=TomcatA
    BalancerMember http://172.16.92.3:8080 loadfactor=10 route=TomcatB
            ProxySet stickysession=ROUTEID
</proxy>
<VirtualHost *:80>
    ServerName tomcat.centos7.com
    ProxyVia On
    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
        Require all granted
    </Proxy>
    ProxyPass / balancer://lbcluster1/
    ProxyPassReverse / balancer://lbcluster1/
    <Location />
        Require all granted
    </Location>
            <Location /balancer-manager>        
                    SetHandler balancer-manager
                    Proxypass !
                    Require all granted            
                    #Require ip 172.16.249.102        
            </Location>
</VirtualHost>
=================
httpd -t
systemctl reload httpd.service

windows浏览器访问 http://172.16.92.4/balancer-manager, 出现如下页面,则说明成功!
>Load Balancer Manager for 172.16.92.4
>Server Version: Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips mod_fcgid/2.3.9
>Server Built: Mar 12 2015 15:07:19 
>......
基于此页面可做网站应用的各项设置和上下线操作, 实现灰度发布.







本文转自 zhuhc1988 51CTO博客,原文链接:http://blog.51cto.com/changeflyhigh/1707493,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
HTTP/2服务端( nginx/tomcat)配置与测试
HTTP/2源于SPDY, 主要目标是解决HTTP 1.x的性能问题. 有别于HTTP/1.1在连接中的明文请求,HTTP/2与SPDY一样,将一个TCP连接分为若干个流(Stream),每个流中可以传输若干消息(Message),每个消息由若干最小的二进制帧(Frame)组成。这也是HTTP/1.1与HTTP/2最大的区别所在。
209 0
Confluence 6 使用 Apache 和 mod_proxy 添加 SSL和其他
添加 SSL 如果你计划在你的应用中启用 SSL ,请参考 Securing your Atlassian applications with Apache using SSL 页面中的内容,并确定你在相同的连接器中选择 HTTPS。
965 0
Confluence 6 使用 Apache 和 mod_proxy
Atlassian 应用允许用户使用反向代理,但是 Atlassian 并不会为这个功能的配置提供支持。因此,Atlassian 也不能保证能够为这些配置提供任何支持。
843 0
nginx模块--with-http_realip_module
nginx模块--with-http_realip_module
3386 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载