2012-07-24 125 views
0

我正在尝试设置Apache Web服务器,以便在两台Tomcat服务器上平衡客户端的请求。对于Web服务,我使用Axis2。它被部署在两个Tomcat中。当我调用Web服务时,虽然集群已建立,但始终只有一个服务器应答。我使用了this教程,Axis2 1.6.1,Tomcat 7,Apache Web Server 2.2以及我在Windows 32位系统上运行它。 如何平衡两个Tomcats上的客户端请求? 它可能与Web服务器的代理配置有关,但它只是一个想法。 如果你需要截图或其他,请让我知道。对不起,我的德国口音:)如何设置Apache Web服务器以在两个Tomcat上集群Web服务

回答

1

好吧,它现在的作品。这是axis2.xml文件中的一个配置问题,我的IP地址错了。现在我在每个实例上都有以下配置:

<!-- The host name or IP address of this member --> 
    <parameter name="localMemberHost">127.0.0.1</parameter> 

同样重要的是Tomcat实例的server.xml文件。这里,关闭端口必须为每个实例不同:

实例1:

 <Server port="8005" shutdown="SHUTDOWN"> 

实例2:

 <Server port="8015" shutdown="SHUTDOWN"> 

所述的连接器端口必须是不同的,也:

实例1 :

 <!-- Define an AJP 1.3 Connector on port 8009 --> 
     <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 

实例2:

 <!-- Define an AJP 1.3 Connector on port 8009 --> 
     <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" /> 

然后我只设置在Apache服务器的httpd.conf文件,这些调整是这样的:

 BalancerMember ajp://127.0.0.1:8009 min=1 max=1 route=node1 loadfactor=1 
     BalancerMember ajp://127.0.0.1:8010 min=1 max=1 route=node2 loadfactor=1 

,现在我的集群工作正常。有时你必须回去一些步骤来了解什么是错的。

1

通常情况下,负载平衡(集群)一台服务器将首先回答 - 哪一个将由其配置中的负载平衡器(代理)决定。负载平衡器(代理)通常查询所有群集服务器,直到找到不太忙的服务器。为了测试集群环境,您必须模拟(或创建)高负载,或者可以“减慢”(或完全停止)其中一台服务器。

+0

好吧我试图完全停止一台服务器,现在第二个仍然没有应答请求。当我加载Web服务的wsdl时,两台服务器依次回答,平衡器管理器可以检查什么。因此,我认为我的Web服务客户端只是在没有使用Web服务器的情况下“与”一个Tomcat服务器交谈。现在我不知道哪个配置文件是错误的。我已经设置了tomcat上部署的httpd.conf(Web服务器),server.xml文件(Tomcat)和Web Service的axis2.xml文件。有谁知道哪一个可能是问题? – krabbenmeister 2012-07-24 10:24:13

+1

如果您从两台服务器获得WSDL响应,我认为两台服务器上的配置都是正确的。 为了本地化问题,我将交换两台服务器(名称/ IP)并检查行为是否改变。 也就是说您的原始配置: proxy - > server1,server2 - 将server1重命名为server2,将server2重命名为server1。如果你继续从服务器1获得响应 - >问题出在代理配置中,如果你从服务器2(原始服务器1)得到响应 - >问题是你的原始服务器2(现在是服务器1)配置。 – 2012-07-24 11:02:17

+0

谢谢你的建议。我交换了名称和IP,仍然从同一台服务器获得响应。所以问题必须是代理配置。 – krabbenmeister 2012-07-24 11:26:27