3

我正在尝试使以下设置正常工作:

操作系统:Ubuntu 14.04.3 LTS Apache2:Apache/2.4.7 (Ubuntu) mod_cluster 1.3.1 wildfly:wildfly-10.0.0.CR2 域模式(主服务器组中的服务器一和其他服务器中的服务器二-group 在同一 ubuntu 服务器上)测试部署:cluster-demo

2 周后,我让 apache 与 mod_cluster 一起工作,但 wildfly 没有按预期工作。

我的阿帕奇配置:

启用站点/wildfly.conf

Listen 80

<VirtualHost *:80>
    ServerAdmin info@domain.de
    ServerName myserver.com
    ServerAlias www.myserver.com

    ProxyPass / balancer://mycluster stickysession=JSESSIONID|jsessionid nofailover=On
    ProxyPassReverse / balancer://mycluster
    ProxyPreserveHost On

    <Location />
        Order deny,allow
        Allow from All
    </Location>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

启用站点/000-default.conf

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ProxyPass / ajp://host:8009/
    ProxyPassReverse / ajp://host:8009/

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

mods-enabled/mod_cluster.conf

CreateBalancers 1

<IfModule manager_module>
    Listen host:10001

      ManagerBalancerName myclustern

    <VirtualHost host:10001>
        KeepAliveTimeout 300
        MaxKeepAliveRequests 0
        AdvertiseFrequency 5
        ServerAdvertise On http://host:10001
        EnableMCPMReceive
        AdvertiseGroup 224.0.1.105:23364

        <Location />
          Order deny,allow
          Deny from all
          Allow from all
          Require all granted
        </Location>

        <Location /mod_cluster-manager>
           SetHandler mod_cluster-manager
           Order deny,allow
           Deny from all
           Allow from all
        </Location>
    </VirtualHost>
</IfModule>

mods-enabled/mod_cluster.load

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule proxy_ajp_module /usr/lib/apache2/modules/mod_proxy_ajp.so
LoadModule cluster_slotmem_module /usr/lib/apache2/modules/mod_cluster_slotmem.so
LoadModule manager_module /usr/lib/apache2/modules/mod_manager.so
LoadModule proxy_cluster_module /usr/lib/apache2/modules/mod_proxy_cluster.so
LoadModule advertise_module /usr/lib/apache2/modules/mod_advertise.so

mod_cluster-manager 可用,cluster-demo 的演示页面也可用。但是 apache 错误日志显示以下错误:

[Mon Oct 19 21:18:34.798472 2015] [proxy:error] [pid 30588:tid 139836923037440] (111)Connection refused: AH00957: ajp: attempt to connect to host:27233 (host) failed
[Mon Oct 19 21:18:34.798523 2015] [proxy:error] [pid 30588:tid 139836923037440] AH00959: ap_proxy_connect_backend disabling worker for (host) for 60s
[Mon Oct 19 21:18:44.799481 2015] [proxy:error] [pid 30588:tid 139836902057728] AH00940: ajp: disabled connection for (host)
[Mon Oct 19 21:18:54.800456 2015] [proxy:error] [pid 30588:tid 139836881078016] AH00940: ajp: disabled connection for (host)
[Mon Oct 19 21:19:04.801415 2015] [proxy:error] [pid 30588:tid 139836870588160] AH00940: ajp: disabled connection for (host)
[Mon Oct 19 21:19:14.802499 2015] [proxy:error] [pid 30589:tid 139836755199744] AH00940: ajp: disabled connection for (host)
[Mon Oct 19 21:19:24.803463 2015] [proxy:error] [pid 30589:tid 139836744709888] AH00940: ajp: disabled connection for (host)
[Mon Oct 19 21:19:34.804541 2015] [proxy:error] [pid 30588:tid 139836849608448] (111)Connection refused: AH00957: ajp: attempt to connect to host:27233 (host) failed
[Mon Oct 19 21:19:34.804602 2015] [proxy:error] [pid 30588:tid 139836849608448] AH00959: ap_proxy_connect_backend disabling worker for (host) for 60s
[Mon Oct 19 21:19:44.805589 2015] [proxy:error] [pid 30589:tid 139837055608576] AH00940: ajp: disabled connection for (host)
[Mon Oct 19 21:19:54.806578 2015] [proxy:error] [pid 30589:tid 139837045118720] AH00940: ajp: disabled connection for (host)

当我从主服务器组服务器二停止服务器一时说,

(Incoming-2,ee,master:server-two) ISPN000094: 收到频道 web 的新集群视图: [master:server-two|12] (1) [master:server-two]

但在浏览器中,我得到的不是集群演示页面:

Service unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

我的 wildfly domain.xml 配置是来自服务器的标准配置,除了这两个 chanches:

    <socket-binding-groups>
    <socket-binding-group name="full-ha-sockets" default-interface="public">
        ...
        <outbound-socket-binding name="mc-prox1">
            <remote-destination host="host" port="10001"/>
        </outbound-socket-binding>
    </socket-binding-group>
</socket-binding-groups>

<subsystem xmlns="urn:jboss:domain:modcluster:2.0">
    <mod-cluster-config advertise-socket="modcluster" proxies="mc-prox1" sticky-session="true" sticky-session-remove="false" sticky-session-force="false" connector="ajp">
        <dynamic-load-provider>
            <load-metric type="cpu"/>
        </dynamic-load-provider>
    </mod-cluster-config>
</subsystem>

对于 apache 来说 000-default.conf 是必需的吗?如果我删除 proxypass 和 proxypassreverse 注释,我将无法访问演示页面。为什么我需要 wildfly 中的代理注释来让 apache 运行?广告模块有问题吗?

希望有人能帮助我。

4

4 回答 4

1

当 mod cluster 无法 ping 端口 27233 时,我来到这里寻找解决方案。在前几周,我试图首先使用 httpd 2.4 设置 wildflys 集群。和 mod cluster 1.3.1 由于它不起作用,我尝试使用httpd 2.2 和 modcluster 1.2.6。它对我有用。这很重要,所以我知道我有正确的配置。现在我回来了,尝试使用 modcluster 1.3.1 进行设置,但我相信那个端口有一些东西。那个端口甚至没有打开,所以肯定它不能ping它。

我认为新 mod_cluster 中存在一些错误。尝试使用较旧的组件效果很好。

于 2015-11-05T13:23:48.060 回答
0

你的ProxyPass设置是多余的;请从您的配置中删除所有这些。Vanilla mod_cluster 配置足以满足您的场景。唯一需要额外 ProxyPass 设置的情况是需要调整代理平衡器;例如,让 Apache 提供来自 balacner 本身的静态内容并仅转发特定的 URL 路径等。

此外,您必须确保:

  1. 您的 Apache HTTP Server 实例和所有工作人员都绑定到非本地 IP 地址
  2. Apache HTTP Server 可以通过他们各自的 IP 地址联系到您的所有工作人员:他们报告给平衡器的端口。我几乎可以肯定您的设置不是这种情况。因此故障转移到另一个工作节点不起作用。
  3. 最后但同样重要的是,instance-id为您的 Undertow 子系统元素设置属性;为您的每个工人提供不同的服务。如果平衡器不确定您工人的姓名,它可能会尝试联系错误的工人。

让我知道它是否有帮助。

于 2015-11-03T12:14:13.003 回答
0

我们需要配置 WildFly 以接受来自 Apache HTTP 的调用,打开管理控制台,然后选择配置:配置文件配置文件:完整子系统:Web/HTTP - Undertow 设置:HTTP

选择上面的 AJP Listener,然后单击 Add。

名称:default.ajp 套接字绑定:ajp

单击 Save,然后确保 Enabled 属性设置为 true。

野蝇 10

它对我有用。花了 5 天的时间查看错误是什么。

于 2016-12-08T23:36:42.997 回答
0

如果您在 apache errorLog 中收到 27233 Port error,则您的系统与 modcluster 1.3.1 中的二进制 .so 文件不兼容。

在这种情况下,您必须针对您的系统从源代码构建 mod 集群。

为我们工作得很好

于 2016-09-20T07:20:12.400 回答