2012-03-13 44 views
0

有一个用例我到目前为止无法使用Apache Jakarta(Tomcat)连接器负载平衡功能解决。Apache Jakarta(Tomcat)连接器将流量转发到特定的Tomcat

我有一个IIS站点有一个Apache Tomcat连接器连接到它。我需要根据请求的URI将流量“转发”到不同的Tomcat。当只有具有特定上下文的应用程序时(例如/ app1,/ app2等),执行操作非常简单。我的问题是我有一个应用程序(在一个Tomcat中)在/(根)和另一个应用程序(在另一个Tomcat中)在/ app1。

我曾尝试以下配置中uriworkermap.properties:

/*=loadBalancer1 
/app1/*=loadBalancer2 

但这不起作用,因为“loadBalancer1”通吃的流量。 “loadBalancer2”被忽略,这是有道理的,因为/ app1/*匹配/ *(正则表达式明智)。

我也尝试添加一个排除像这样:

/*=loadBalancer1 
!/app1/*=loadBalancer1 
/app1/*=loadBalancer2 

但是,这也不行,因为“loadBalancer1”仍然采取所有的交通,只是忽略了“/ APP1/*” URI模式。 “loadBalancer2”再次被忽略。

任何建议,请记住,我不能有2个IIS站点,也不能将位于/(ROOT)的应用程序移动到Tomcat中的不同上下文路径中?

谢谢

编辑: 而是只用一个的Apache Tomcat连接器,我用1个连接器的每个Tomcat的在同一个IIS站点。

uriworkermap.properties#1:为Tomcat与应用在/(ROOT)

/*=wlb 
!/app1/*=wlb 

uriworkermap.proerties#2:为Tomcat与应用在/ APP1

/app1/*=wlb 

连接器#1将忽略URI“/ app1/*”上的流量,但连接器#2会捕获它(反之亦然)。

现在我可以为我的应用程序设置不同的VM选项和内存分配!

我愿意接受意见或更好的解决方案..

回答

0

当你扭转它这样是否行得通?

 
/app1/*=loadBalancer2 
/*=loadBalancer1 
+0

不,不起作用。我尝试过这个。似乎正则表达式(如果这是他们使用的)优先于配置文件中元素的排序。也就是说,一位同事可能找到了解决方案。我会尽快发布。 – 1lln3ss 2012-03-13 21:10:49