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 子系统”。
启用 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
添加 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>
在进行修改后,保存这个文件。添加 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文档。启用会话粘连(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
重启 Web Server。
重启 Web 服务器,以使您的更改生效。
配置 Apache HTTP 服务器使用 mod_proxy 以标准或负载平衡方式发送客户请求到 JBoss EAP 6 服务器或群集。要配置 JBoss EAP 6 响应这些请求,请参考 第 19.3.6 节 “配置 JBoss EAP 6 接受外部 Web 服务器的请求”。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.