19.7.2. 安装 Mod_proxy HTTP 连接器到 Apache HTTP 服务器

概述

mod_proxy 是 Apache 提供的一个 load-balancing 模块。这个任务代表了一个简单的配置。关于更高级的配置或其他细节,请参考 Apache 的 https://httpd.apache.org/docs/2.2/mod/mod_proxy.html 上的 mod_proxy 文档。关于从 JBoss EAP 6 角度来看的 mod_proxy 细节,请参考 第 19.7.1 节 “关于 Apache mod_proxy HTTP 连接器”第 19.1.3 节 “HTTP 连接器概述”

预备条件

  • JBoss Enterprise Web Server 的 httpd 或 Apache HTTP 服务器都需要先安装。独立的 Apache HTTP 服务器在 Red Hat 客户门户 里是可以单独下载的。关于这个 Apache HTTP 服务器的信息,请参考 第 19.3.2 节 “安装 JBoss EAP 6 附带的 Apache HTTP 服务器(ZIP 方式)”
  • mod_proxy 模块需被安装。Apache HTTP 服务器通常带有 mod_proxy 模块。对于 Red Hat 企业版 Linux,JBoss Enterprise Web Server 附带了 Apache HTTP 服务器。
  • 您需要 root 或管理员权限来修改 Apache HTTP 服务器的配置。
  • 在这些例子里,我们假设 JBoss EAP 6 配置了 HTTP 或 HTTPS Web 连接器。这是 Web 子系统配置的一部分。关于配置 Web 子系统的信息,请参考 第 17.1 节 “配置 Web 子系统”
  1. 启用 HTTPD 里的 mod_proxy 模块

    HTTPD_HOME/conf/httpd.conf 文件里寻找下列行。如果没有,则在文件结尾添加它们。如果存在但是以注释符号(#)开始的,请删除这些符号。保存文件。通常这些模块都会存在且已启用。
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    # Uncomment these to proxy FTP or HTTPS
    #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
    #LoadModule proxy_connect_module modules/mod_proxy_connect.so
    
  2. 添加 non-load-balancing 代理。

    添加下列配置到 HTTPD_HOME/conf/httpd.conf 文件里,直接放在其他 <VirtualHost> 指令下面。请用自己的配置来替换相关的值。
    这个例子使用了虚拟主机。请参考下一个步骤来使用默认的 HTTPD 配置。
    <VirtualHost *:80>
    # Your domain name
    ServerName Domain_NAME_HERE
    
    ProxyPreserveHost On
    
    # The IP and port of JBoss EAP 6
    # These represent the default values, if your httpd is on the same host
    # as your JBoss EAP 6 managed domain or server
    
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
    
    # The location of the HTML files, and access control information
    DocumentRoot /var/www
    <Directory /var/www>
    Options -Indexes
    Order allow,deny
    Allow from all
    </Directory>
    </VirtualHost>
    
    在进行修改后,保存这个文件。
  3. 添加 load-balancing 代理。

    要将 mod_proxy 用作负载平衡器,并将工作负载发送到多个 JBoss EAP 6 服务器,请添加下列配置到 HTTPD_HOME/conf/httpd.conf 文件里。这个 IP 地址是虚构的。请用自己的值来替换它。
    <Proxy balancer://mycluster>
    
    Order deny,allow
    Allow from all
    
    # Add each JBoss Enterprise Application Server by IP address and port.
    # If the route values are unique like this, one node will not fail over to the other.
    BalancerMember http://192.168.1.1:8080 route=node1
    BalancerMember http://192.168.1.2:8180 route=node2
    </Proxy>
    
    <VirtualHost *:80>
     # Your domain name
     ServerName YOUR_DOMAIN_NAME
    
     ProxyPreserveHost On
     ProxyPass / balancer://mycluster/
    
     # The location of the HTML files, and access control information DocumentRoot /var/www
     <Directory /var/www>
      Options -Indexes
      Order allow,deny
      Allow from all
     </Directory>
    
    </VirtualHost>
    
    
    上面的例子都使用 HTTP 协议进行通讯。如果加载合适的 mod_proxy 模块,您也可以使用 AJP 或 HTTPS 协议。详情请参考 http://httpd.apache.org/docs/2.2/mod/mod_proxy.html 里 Apache 的 mod_proxy 文档。
  4. 启用会话粘连(Sticky Session)。

    Sticky sessions 表示如果客户请求最开始是转到专有的 JBoss EAP 6 节点,所有以后的请求都将发送到相同的节点,除非这个节点不可用。这通常是正确的行为。
    要为 mod_proxy 启用 Sticky Session,请添加 stickysession 参数到 ProxyPass 语句里。这个例子也展示了一些其他的参数。更多信息请参考 Apache 的 mod_proxy 文档:http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
    ProxyPass /MyApp balancer://mycluster stickysession=JSESSIONID lbmethod=bytraffic nofailover=Off
  5. 重启 Web Server。

    重启 Web 服务器,以使您的更改生效。
结果

配置 Apache HTTP 服务器使用 mod_proxy 以标准或负载平衡方式发送客户请求到 JBoss EAP 6 服务器或群集。要配置 JBoss EAP 6 响应这些请求,请参考 第 19.3.6 节 “配置 JBoss EAP 6 接受外部 Web 服务器的请求”