我正在尝试实现Wildfly 8.1.0。最终的域设置,配置完整的ha,有1个主服务器和2个从服务器,通过mod_cluster进行负载平衡。
我的环境:1) VPS(DigitalOCean)Ubuntu 14.04 LTS x64、Wildfly 8.1.0.Final和Apache Web Server 2.4.7上的主机主机,带有mod_cluster 1.3.1.Alpha3-NAPSHOT;2) VPS(DigitalOCean)Ubuntu 14.04 LTS x64和Wildfly 8.1.0.Final上的主机slave1;3) 主机slave2在VPS(DigitalOCean)Ubuntu 14.04 LTS x64和Wildfly 8.1.0.Final.
由于1.2.6版本与Apache Web Server 2.4.7版本不兼容,我不得不编译mod_cluster。
我看到以下错误:
a) 在主机主机上(/var/log/apache2/error.log):"(111)连接被拒绝:AH00957:ajp:尝试连接到hostronglave1失败"
b) 在主机slave1上(/opt/wildfly/domain/configuration/servers/server one/server.log):"2014-09-18 20:50:5169 ERROR[org.jboss.modcluster](UndertowEventHandlerAdapter-1)MODCLUSTER000042:错误MEM将STATUS命令发送到host_master,配置将重置:MEM:无法读取节点"
因此,具有mod_cluster的负载平衡虚拟主机无法连接到主机slave1和slave2。
请问如何解决这个问题?
起初,您可以使用mod_cluster 1.3.1.Final,现在它已与Apache HTTP Server 2.4.x完全集成。
答案
问题肯定出在网络/主机隔离上。您的工作节点仅能访问启用了EnableMCPMReceive
的VirtualHost是不够的;您的Apache HTTP服务器必须能够返回到工作者。
查看host_slave1
报告给Apache HTTP服务器的IP地址(主机名),并确保可以从Apache HTTP服务器机器联系该地址上的host_slave1
:端口。
可以在Mod_cluster maanger控制台上轻松验证状态,在虚拟主机中启用:
<Location /mod_cluster_manager>
SetHandler mod_cluster-manager
# This is super sensitive, don't open to the world...
Require ip 127.0.0.1
</Location>
HTH
您的Apache HTTP服务器必须能够返回到工作者。
ajping是一个易于安装和使用的小型脚本。在负载均衡器上安装并调用:
loadbalancer$ ajping host_slave1:8009
Reply from 172.26.XXX.XXX: 7 bytes in 0.002 seconds
这验证了负载平衡器可以与节点进行AJP对话。
您的问题是JBOSS服务器无法将数据发送到apache服务器,实际上apache无法将您的请求重定向到JBOSS应用程序。
原因可能是任何人,也许如果你指定https,证书没有配置,也许在你的jboss中,配置会出现错误——最简单的是按照modcluster网站上的示例,或者发送standalone或domain.xml和apache配置。
我认为既然他已经找到了解决方案,他应该在这里为未来有同样问题的人发帖。。。
-
在Apache HTTPD mod_cluster.conf文件中添加"PersistSlots On"。
-
与节点、别名和上下文相关联的元数据由工作节点在注册过程中发送,然后通过消息进行更新,但默认情况下不会持久化。因此,如果httpd节点被停止,然后重新启动,它就会丢失元数据,因此它";忘记";关于后端节点,除非工作节点明确地重新注册。
在此期间,httpd确实完全了解后端集群中的每个EAP节点,当它接收到有效(但未知)的JVM路由时,它无法正确地进行负载平衡。
可以通过将PersistSlots设置为"0"来避免这种行为;在"上";。
设置";PersistSlots";至";在"上";。
LoadModule slotmem_module modules/mod_slotmem.so
LoadModule manager_module modules/mod_manager.so
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule advertise_module modules/mod_advertise.so
Listen *:6666
PersistSlots On <<<<<<----------------- THIS ENTRY ---------#####
<VirtualHost *:6666>
.
.
.
</VirtualHost>