接上一篇继续,Domain模式解决了统一管理多台jboss的问题,今天我们来学习如何利用mod_cluster来实现负载均衡、容错。
mod_cluster是jboss的一个开源集群模块(基于apache 2.2.x),官网地址为http://mod-cluster.jboss.org/ ,下面是使用步骤:
一、从官网下载binary文件
http://mod-cluster.jboss.org/downloads/1-2-6-Final-bin 这上面有各种OS的版本,本文以windows为试验环境,应该下载http://downloads.jboss.org/mod_cluster//1.2.6.Final/windows/mod_cluster-1.2.6.Final-windows-amd64.zip 这个版本
(注:如果是linux环境,应该下载http://downloads.jboss.org/mod_cluster//1.2.6.Final/linux-x86_64/mod_cluster-1.2.6.Final-linux2-x64.tar.gz)
二、解压安装
将下载下来的文件解压到jboss master server机器上的某个目录(假定master server的IP为172.21.129.181),比如C:\Apache2.2\ ,mod_cluster其实就是一个包含集群模块的apache server,如果你的机器上之前有安装过apache server,且自动安装成了windows服务,强烈建议先卸载,否则启动mod_cluster对应的apache时,有可能启动的是之前的版本。
注:如果是linux环境安装,强烈建议将压缩包中的httpd目录,解压到/opt/jboss/目录下,因为linux版本的很多脚本和配置里,都是写死这个目录,如果修改了目录,apachectl、http.conf这些文件里的路径全都要改,十分麻烦
2.1 先执行C:\Apache2.2\bin\installconf.bat 生成默认配置 (注:linux环境下安装时,无需执行该步骤,直接进入2.2改http.conf文件即可)
2.2 修改C:\Apache2.2\conf\httpd.conf
a)
#Listen 12.34.56.78:80
Listen 80
40行,把原来的端口8000,改成80,这样方便直接用 http://172.21.129.181/xxx 来访问应用
b)
164行改成
ServerName 172.21.129.181:80
c)
最后的mod_cluster部分,参考下面修改
# MOD_CLUSTER_ADDS # Adjust to you hostname and subnet. <IfModule manager_module> Listen 172.21.129.181:6666 ManagerBalancerName mycluster <VirtualHost 172.21.129.181:6666> <Location /> Order deny,allow #Deny from all Allow from all </Location> KeepAliveTimeout 300 MaxKeepAliveRequests 0 #ServerAdvertise on http://127.0.0.1:6666 AdvertiseFrequency 5 #AdvertiseSecurityKey secret #AdvertiseGroup 224.0.1.105:23364 EnableMCPMReceive <Location /mod_cluster_manager> SetHandler mod_cluster-manager Order deny,allow #Deny from all Allow from all </Location> </VirtualHost> </IfModule>
主要是把127.0.0.1,改成master server对应的真实IP,另外把Deny from all注释掉,把紧贴着的一行改成Allow from all,去掉这些访问上的限制
下面是完整的http.conf参考内容:
1 ServerRoot "C:/Apache2.2" 2 Listen 80 3 LoadModule actions_module modules/mod_actions.so 4 LoadModule alias_module modules/mod_alias.so 5 LoadModule auth_basic_module modules/mod_auth_basic.so 6 LoadModule authz_host_module modules/mod_authz_host.so 7 LoadModule autoindex_module modules/mod_autoindex.so 8 LoadModule dir_module modules/mod_dir.so 9 LoadModule log_config_module modules/mod_log_config.so 10 LoadModule mime_module modules/mod_mime.so 11 12 ServerAdmin jimmy@localhost.localdomain 13 ServerName 172.21.129.181:80 14 DocumentRoot "C:/Apache2.2/htdocs" 15 16 <Directory /> 17 Options FollowSymLinks 18 AllowOverride None 19 Order deny,allow 20 Allow from all 21 </Directory> 22 23 <Directory "C:/Apache2.2/htdocs"> 24 Options Indexes FollowSymLinks 25 AllowOverride None 26 Order allow,deny 27 Allow from all 28 </Directory> 29 30 <IfModule dir_module> 31 DirectoryIndex index.html 32 </IfModule> 33 34 <FilesMatch "^\.ht"> 35 Order allow,deny 36 Deny from all 37 Satisfy All 38 </FilesMatch> 39 40 ErrorLog "logs/error_log" 41 LogLevel warn 42 <IfModule log_config_module> 43 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 44 LogFormat "%h %l %u %t \"%r\" %>s %b" common 45 46 <IfModule logio_module> 47 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio 48 </IfModule> 49 CustomLog "logs/access_log" common 50 </IfModule> 51 52 <IfModule alias_module> 53 ScriptAlias /cgi-bin/ "C:/Apache2.2/cgi-bin/" 54 </IfModule> 55 56 <Directory "C:/Apache2.2/cgi-bin"> 57 AllowOverride None 58 Options None 59 Order allow,deny 60 Allow from all 61 </Directory> 62 63 DefaultType text/plain 64 65 <IfModule mime_module> 66 TypesConfig conf/mime.types 67 AddType application/x-compress .Z 68 AddType application/x-gzip .gz .tgz 69 </IfModule> 70 71 LoadModule proxy_module modules/mod_proxy.so 72 LoadModule proxy_ajp_module modules/mod_proxy_ajp.so 73 LoadModule proxy_http_module modules/mod_proxy_http.so 74 LoadModule proxy_cluster_module modules/mod_proxy_cluster.so 75 LoadModule manager_module modules/mod_manager.so 76 LoadModule slotmem_module modules/mod_slotmem.so 77 LoadModule advertise_module modules/mod_advertise.so 78 79 # MOD_CLUSTER_ADDS 80 <IfModule manager_module> 81 Listen 172.21.129.181:6666 82 ManagerBalancerName mycluster 83 <VirtualHost 172.21.129.181:6666> 84 <Location /> 85 Order deny,allow 86 Allow from all 87 </Location> 88 KeepAliveTimeout 300 89 MaxKeepAliveRequests 0 90 AdvertiseFrequency 5 91 EnableMCPMReceive 92 <Location /mod_cluster_manager> 93 SetHandler mod_cluster-manager 94 Order deny,allow 95 Allow from all 96 </Location> 97 </VirtualHost> 98 </IfModule>