我在为 weblogic 和 Apache 设置集群环境时遇到了一些问题。结构如下:1 个 webserver 将请求代理到 3 个 weblogic 服务器的集群环境。
每次我向 Apache 服务器发送请求时,请求都得不到处理。我解决了部分问题,但这不是生产中想要的。每当我添加动态服务器列表开启请求失败。当我将其关闭时,它可以工作,但这意味着每当服务器发生故障时,Apache 仍会向该服务器发送请求,用户体验将为 0。
编辑1:我在 Centos 7 上使用 weblogic 12c 和 apache2.4
这是我的 weblogic 插件的配置文件:
<VirtualHost *:8080>
ServerAdmin postmaster@webserver2
ServerName webserver2
DocumentRoot /var/www/webserver2/htdocs
ErrorLog /var/log/httpd//webserver-error_log
CustomLog /var/log/httpd/webserver-access_log forwarded
<Directory />
AllowOverride all
Order allow,deny
Allow from all
</Directory>
DirectoryIndex index.html
<Location />
SetHandler weblogic-handler
</Location>
<IfModule mod_weblogic.c>
WeblogicCluster 192.168.166.70:8001,192.168.166.71:8001,192.168.166.69:8001
ConnectTimeoutSecs 15
ConnectRetrySecs 10
WLIOTimeoutSecs 600
DynamicServerList ON
Idempotent ON
FileCaching ON
KeepAliveSecs 60
KeepAliveEnabled ON
DebugConfigInfo ON
</IfModule>
</VirtualHost>
我收到的错误如下:
[2015 年 9 月 14 日星期一 09:54:58.480616] [weblogic:error] [pid 15343:tid 140547949991680] [客户端 172.18.132.50:57991] <1534314422136982> parseJVMID: 无法解析主机名 '-1062689209'。从 parseJVMID 返回 NULL
[2015 年 9 月 14 日星期一 09:54:58.480681] [weblogic:错误] [pid 15343:tid 140547949991680] [客户端 172.18.132.50:57991] <1534314422136982> initJVMID:parseClusterServerList 失败
[2015 年 9 月 14 日星期一 09:55:28.481215] [weblogic:error] [pid 15343:tid 140547949991680] [客户端 172.18.132.50:57991] <1534314422136982> 请求 [/clusterjsp/HaJsp.jsp] 未成功处理..................
答案1
这可能与受管服务器的监听地址有关。我没有特别看到过这个错误,但如果监听地址为空,WebLogic 将绑定到机器上的所有 IP 地址。
启用 DynamicServerList 时,这些 IP 地址将发送到 Apache 插件。如果存在 Apache 服务器无法连接的 IP 地址(例如备份接口),则可能会出现问题。这不是我期望看到的错误,但我之前遇到过这个问题,除了特定的错误消息外,您的场景中的所有内容都完全相同,但我也没有使用 Apache 2.4。
顺便说一句,禁用 DynamicServerList 并不意味着 Apache 会继续向已关闭的服务器发送请求,从而导致用户体验非常差。相反,每当它检测到服务器已关闭(例如通过一系列连接被拒绝错误)时,它都会将其标记为已关闭并不断重试。DynamicServerList 旨在避免这种情况,还允许您将托管服务器添加到集群中,而无需触及插件配置。