0
votes

I want to set up a standalone Wildfly cluster with 2 nodes. For this purpose I set up 2 fedora22 virtual machines. On both nodes I installed Wildfly 9.0.0.Final and run it with standalone-ha.xml configuration file. On first node I also installed httpd 2.4 and mod_cluster 1.3.1. Current setting are listed below. On both machines I disabled firewall and SELinux.

Node1 configuration (192.168.2.240)

mod_cluster.conf

LoadModule cluster_slotmem_module       modules/mod_cluster_slotmem.so
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule advertise_module     modules/mod_advertise.so
LoadModule manager_module       modules/mod_manager.so
CreateBalancers 1
<IfModule manager_module>
 Listen 192.168.2.240:6666
 ManagerBalancerName mycluster
 <VirtualHost 192.168.2.240:6666>
   KeepAliveTimeout 300
   MaxKeepAliveRequests 0
   AdvertiseFrequency 5
   ServerAdvertise On
   EnableMCPMReceive
   <Location />
     Require all granted
   </Location>
   <Location /mod_cluster_manager>
     SetHandler mod_cluster-manager
     Require all granted
   </Location>
 </VirtualHost>

httpd.conf

ServerRoot "/etc/httpd"

Listen 80 Include conf.modules.d/*.conf User apache Group apache ServerAdmin root@localhost

<Directory />
    AllowOverride none
    Require all denied
</Directory>

DocumentRoot "/var/www/html"
<Directory "/var/www">
    AllowOverride None
    Require all granted
</Directory>

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

<Files ".ht*">
    Require all denied
</Files>

ErrorLog "logs/error_log"
LogLevel debug

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog "logs/access_log" combined
</IfModule>

<IfModule alias_module>
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" 
</IfModule>

<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

<IfModule mime_module>    
    TypesConfig /etc/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>

AddDefaultCharset UTF-8

<IfModule mime_magic_module>
    MIMEMagicFile conf/magic
</IfModule>

EnableSendfile on

#Includes mod_cluster.conf
IncludeOptional conf.d/*.conf

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ProxyPass / balancer://mycluster stickysession=JSESSIONID|jsessionid nofailover=On
    ProxyPassReverse / balancer://mycluster
    <Location />
        Require all granted
    </location>
</VirtualHost>

standalone-ha.xml (I am pasting only important parts)

<?xml version='1.0' encoding='UTF-8'?>
<server name="node1" xmlns="urn:jboss:domain:3.0">

        <subsystem xmlns="urn:jboss:domain:modcluster:2.0">
            <mod-cluster-config advertise-socket="modcluster" connector="ajp">
                <dynamic-load-provider>
                    <load-metric type="cpu"/>
                </dynamic-load-provider>
            </mod-cluster-config>
        </subsystem>

        <subsystem xmlns="urn:jboss:domain:undertow:2.0">
            <buffer-cache name="default"/>
            <server name="default-server">
                <ajp-listener name="ajp" socket-binding="ajp"/>
                <http-listener name="default" socket-binding="http" redirect-socket="https"/>
                <host name="cloudflow" alias="localhost">
                    <location name="/" handler="welcome-content"/>
                    <filter-ref name="server-header"/>
                    <filter-ref name="x-powered-by-header"/>
                </host>
            </server>
            <servlet-container name="default">
                <jsp-config/>
                <websockets/>
            </servlet-container>
            <handlers>
                <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
            </handlers>
            <filters>
                <response-header name="server-header" header-name="Server" header-value="WildFly/9"/>
                <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
            </filters>
        </subsystem>

    <interfaces>
        <interface name="management">
            <inet-address value="${jboss.bind.address.management:192.168.2.240}"/>
        </interface>
        <interface name="public">
            <inet-address value="${jboss.bind.address:192.168.2.240}"/>
        </interface>
        <interface name="unsecure">
            <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>
        </interface>
    </interfaces>

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
    <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
    <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
    <socket-binding name="http" port="${jboss.http.port:8080}"/>
    <socket-binding name="https" port="${jboss.https.port:8443}"/>
    <socket-binding name="jgroups-mping" port="0" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/>
    <socket-binding name="jgroups-tcp" port="7600"/>
    <socket-binding name="jgroups-tcp-fd" port="57600"/>
    <socket-binding name="jgroups-udp" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/>
    <socket-binding name="jgroups-udp-fd" port="54200"/>
    <socket-binding name="modcluster" port="0" multicast-address="224.0.1.105" multicast-port="23364"/>
    <socket-binding name="txn-recovery-environment" port="4712"/>
    <socket-binding name="txn-status-manager" port="4713"/>
    <outbound-socket-binding name="mail-smtp">
        <remote-destination host="localhost" port="25"/>
    </outbound-socket-binding>
</socket-binding-group>

Node2 configuration (192.168.2.226)

<?xml version='1.0' encoding='UTF-8'?>

<server name="node2" xmlns="urn:jboss:domain:3.0">
    <subsystem xmlns="urn:jboss:domain:modcluster:2.0">
        <mod-cluster-config advertise-socket="modcluster" connector="ajp">
            <dynamic-load-provider>
                <load-metric type="cpu"/>
            </dynamic-load-provider>
       </mod-cluster-config>
    </subsystem>

   <subsystem xmlns="urn:jboss:domain:undertow:2.0">
        <buffer-cache name="default"/>
        <server name="default-server">
            <ajp-listener name="ajp" socket-binding="ajp"/>
            <http-listener name="default" socket-binding="http" redirect-socket="https"/>
            <host name="cloudflow" alias="localhost">
                <location name="/" handler="welcome-content"/>
                <filter-ref name="server-header"/>
                <filter-ref name="x-powered-by-header"/>
            </host>
        </server>
        <servlet-container name="default">
            <jsp-config/>
            <websockets/>
        </servlet-container>
        <handlers>
            <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
        </handlers>
        <filters>
            <response-header name="server-header" header-name="Server" header-value="WildFly/9"/>
            <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
        </filters>
    </subsystem>


<interfaces>
    <interface name="management">
        <inet-address value="${jboss.bind.address.management:192.168.2.226}"/>
    </interface>
    <interface name="public">
        <inet-address value="${jboss.bind.address:192.168.2.226}"/>
    </interface>
    <interface name="unsecure">
        <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>
    </interface>
</interfaces>

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
    <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
    <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
    <socket-binding name="http" port="${jboss.http.port:8080}"/>
    <socket-binding name="https" port="${jboss.https.port:8443}"/>
    <socket-binding name="jgroups-mping" port="0" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/>
    <socket-binding name="jgroups-tcp" port="7600"/>
    <socket-binding name="jgroups-tcp-fd" port="57600"/>
    <socket-binding name="jgroups-udp" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/>
    <socket-binding name="jgroups-udp-fd" port="54200"/>
    <socket-binding name="modcluster" port="0" multicast-address="224.0.1.105" multicast-port="23364"/>
    <socket-binding name="txn-recovery-environment" port="4712"/>
    <socket-binding name="txn-status-manager" port="4713"/>
    <outbound-socket-binding name="mail-smtp">
        <remote-destination host="localhost" port="25"/>
    </outbound-socket-binding>
</socket-binding-group>

my application settings

pom.xml

<contextRoot>/</contextRoot>

jboss-web.xml

<jboss-web>  
    <context-root>/</context-root>
    <virtual-host>cloudflow</virtual-host>
</jboss-web>

jboss-web.xml

 <distributable />

I start httpd with systemctl start httpd and then i run Wildfly with ./standalone.sh -c standalone-ha.xml. Servers starts without an error and deploy application. I can see my application on both nodes on localhost:8080

On 192.168.2.240:6666/mod_cluster_manager i can see following screen:

screenshot

When i want to get my app in browser on address http://192.168.2.240/ but i get 503 Service Unavailable when i restart httpd and page 404 - Not found few seconds letter. On http://192.168.2.240:6666/ i get fedora test page. Error log of httpd dont show any error only debug messages.

I think i have problem in configuration where my app gets deployed.

1
Does it change anything if you deploy your app so as it has context /cloudflow (without vhost config) instead of / ? It might be a bug in mc. Gonna try to reproduce.Michal Karm Babacek
no nothing helped so i changed httpd to 2.2. and mod_cluster to 1.2.6 and it works fine. I think there is bug in newest modcluster or httpd. Httpd tries to ping port 27233 which is not even openDomen Petrič
Thanks Domen for digging into it. I'll dissect the latest mod_cluster and get back to you.Michal Karm Babacek
I managed to make it work today. Problem was on command: ServerAdvertise On I changed it to: ServerAdvertise On IP:port after that it workedDomen Petrič

1 Answers

1
votes

Problem was on command: ServerAdvertise On I changed it to: ServerAdvertise On IP:6666

I also delelted whole virtual Host section for port 80 in httpd.conf After that it worked