本文是由多个部分组成的博客系列的第一部分,该系列将解释如何使用httpd 2.4,JBoss mod_cluster,JBoss AS 7。在本文中,我将解释如何构建mod_cluster来与Apache的httpd(特别是2.4.3)一起工作,以及如何配置httpd来使用mod_cluster。
我写这篇文章是因为mod_cluster的最新版本是1.2.0。2012年2月开发的Final,只支持httpd 2.2.8+。我想在httpd 2.4.3中使用mod_cluster。
我的环境是安装了开发工具的CentOS 6.3 x86_64。在让一切正常运行的同时,我建议禁用selinux和iptables。它们很容易成为障碍,使故障排除变得非常困难。在本文的最后,我将解释在一切正常运行后如何配置它们。
首先,为httpd、apr和apr-util提取最新的代码。在撰写本文时,最新版本是4月1.4.6,apr-util 1.5.1,httpd 2.4.3。我需要安装的另一个包是pcre-devel。
现在,开始构建和安装包。我将使这一部分尽可能简短,不跳过任何重要步骤。一些参数可能不是必要的,但这里是我是如何做到的:
焦油xzfv apr-1.4.6.tar。广州cd apr-1.4.6 < br > < br >。/configure—prefix=http://www.openlogic.com/usr/local/httpd—datadir=http://www.openlogic.com/usr/local/httpd/var—enable-shared
make
sudo make install
焦油xzfv apr-util-1.5.1.tar。广州d apr-util-1.5.1 < br > < br >。/配置——prefix = http://www.openlogic.com/usr/local/httpd——infodir = http://www.openlogic.com/usr/local/httpd/info——寺庙= http://www.openlogic.com/usr/local/httpd/man——sysconfdir = http://www.openlogic.com/usr/local/httpd/conf datadir = http://www.openlogic.com/usr/local/httpd/var——with-apr = http://www.openlogic.com/usr/local/httpd < br > < br > sudo make install
焦油xzfv httpd-2.4.3.tar。广州cd httpd-2.4.3 < br > < br >。/ configure——prefix = http://www.openlogic.com/usr/local/httpd——enable-mpms-shared =——于mpm =事件——enable-static-support enable-mods-shared = reallyall——enable-proxy =共享——enable-proxy-ajp =共享——enable-proxy-balancer =共享——enable-proxy-connect =共享enable-proxy-ftp =共享——enable-proxy-http =共享——with-apr = http://www.openlogic.com/usr/local/httpd——with-apr-util = http://www.openlogic.com/usr/local/httpd < br > < br > sudo make install
唷!现在我们已经安装了基本的httpd,我们可以开始构建和配置mod_cluster的重要部分了。因为mod_cluster的最新版本不能与httpd 2.4.3一起工作,所以我选择直接从github的主分支中提取mod_cluster代码基。我试图构建一些早期的标记,希望由于它们被标记为“Final”,所以它们会更加稳定,但是它们都在一个或多个测试中失败了。
git clone https://github.com/modcluster/mod_cluster.git
cd mod_cluster
mvn包
现在已经成功地构建了mod_cluster并通过了它的所有测试,我们需要构建将与httpd一起安装的本机模块。我选择将这些模块放在一个单独的文件夹中,而不是放在httpd/modules文件夹中。这只是个人偏好的问题。从你刚从git克隆的mod_cluster的基本文件夹中:
sudo mkdir /usr/local/mod_cluster
cd原生/广告
./buildconf
。/配置——with-apxs=http://www.openlogic.com/usr/local/httpd/bin/apxs
make
sudo cp mod_广告业。所以/usr/local/mod_cluster /
cd . . / mod_manager / < br >。/ buildconf < br >。/配置——with-apxs=http://www.openlogic.com/usr/local/httpd/bin/apxs
make
sudo cp mod_manager。所以/usr/local/mod_cluster /
cd . . / mod_proxy_cluster / < br >。/ buildconf < br >。/configure——with-apxs=http://www.openlogic.com/usr/local/httpd/bin/apxs
make
sudo cp mod_proxy_cluster所以/usr/local/mod_cluster /
cd . . / mod_slotmem / < br >。/ buildconf < br >。/configure——with-apxs=http://www.openlogic.com/usr/local/httpd/bin/apxs使
sudo cp mod_slotmem。所以/usr/local/mod_cluster /
接下来,我们需要配置mod_cluster模块来使用httpd。我选择创建一个单独的mod_cluster.conf文件,并将其放在conf/extra中,但是您可以同样轻松地将这些设置包含在httpd.conf文件中。以下是我的conf/extra/mod_cluster.conf的内容:
LoadModule advertise_module . . / mod_cluster / mod_advertise。所以< br > LoadModule manager_module . . / mod_cluster / mod_manager。所以< br > LoadModule proxy_cluster_module . . / mod_cluster / mod_proxy_cluster。所以< br > LoadModule slotmem_module . . / mod_cluster / mod_slotmem。soListen 10.0.1.100:1528 < br > <虚拟主机10.0.1.100:1528 > < br > / <目录> < br >需要ip 10.0.1 < br > < /目录> < br > <位置/ mod_cluster-manager > < br > SetHandler mod_cluster-manager需要ip 10.0.1 < br > < br > < /位置> < br > KeepAliveTimeout 60 MaxKeepAliveRequests 0 < br > < br > ManagerBalancerName testcluster < br > AdvertiseFrequency 5 < br > < br > AdvertiseSecurityKey秘密EnableMCPMReceive < br > < /虚拟主机>
显然,您需要更改您的IP地址以匹配您自己的IP地址,如果您愿意,您可以使用不同的端口号。我们还需要对conf/httpd.conf文件进行一些更改来完成。我们需要mod_proxy。所以,mod_proxy_ajp。因此,为了mod_cluster正确工作,取消注释或添加以下两行:
LoadModule proxy_module / mod_proxy模块。所以< br > / mod_proxy_ajp.so LoadModule proxy_module模块
最后,我们需要确保包含mod_cluster。conf,因此添加以下行:
包括conf /额外的/ mod_cluster.conf
这样就可以在httpd 2.4.3中安装和配置mod_cluster了。在启动httpd服务器之后,我们应该能够通过访问mod_cluster-managerhttp://10.0.1.100:1528/mod_cluster-manager。当然,你还看不到任何东西;那得等到下次了。
请记住,在本文的开始部分,我承诺将解释如何配置selinux和iptable以更好地使用mod_cluster。下面是如何在httpd服务器上配置这两者。
要配置selinux,首先安装policycoreutes -python。然后,进入克隆mod_cluster的目录,然后进入native/selinux文件夹。在此之后,您需要运行以下操作:
make -f /usr/share/selinux/ development / makefile
sudo semodule -i mod_cluster。bb0 sudo semanage port -a -t http_port_t -p udp 23364
对于iptables,加入一些规则来允许mod_cluster、JBoss以及udp/tcp的多播流量用于节点间的通信。以下是我使用的规则;您的可能略有不同,取决于您目前的iptables设置:
sudo iptables -我输入1 - p udp - d 224.0.1.0/24 - j - m接受评论,评论“mod_cluster多播udp流量”< br > sudo iptables -输入2 - p udp - d 224.0.0.0/4 - j - m接受评论,评论“集群JBoss多播udp流量”< br > sudo iptables -输入3 - p udp - s 10.0.1.0/24 - j - m接受评论,评论“节点到节点udp流量”< br > sudo iptables - tcp - s 10.0.1.0/24输入4 - p - j - m接受评论,评论“节点到节点tcp流量”< br > sudo iptables -输入5 - p tcp——dport 1528评论-评论"mod_cluster-manager traffic"
sudo /etc/init.d / iptables保存
现在,应该正确配置iptables和selinux,以允许mod_cluster和httpd与其他服务器自由通信。
最后要注意的是:如果选择的端口不是1528,则需要对iptables和selinux配置进行同样的更改。
下一次,我将通过配置JBoss来使用mod_cluster。