0 Replies Latest reply on Jul 22, 2009 8:10 AM by cfazriphale

    Clustering solution question / issues

    cfazriphale

      I am trying to implement a clustering solution involving a BigIP F5, two Sun Solaris 10 boxes which are running ColdFusion 8 in multi-server mode through apache. Currently, the two ColdFusion servers are stand alone and are being load-balanced through the F5.

       

      The end result I want is to have a request come in through the F5, be round-robined to apache which would then point to the ColdFusion 8 cluster.

       

      The optimal effect is that when / if one of the two ColdFusion instances stop responding, the session data should be replicated accross and the user should be transitioned to the operating box without seeing an interruption and with their session intact.

       

      As we do not have the resources to set up a full test system, I have been forced to try and implement a working model in pieces.

       

      Currently, I have a cluster set up on a server which is running two instances (both pointing to seperate directories which contain the same code-base). When I shut one of the instances down, the other instance serves the pages from the inactive server's code-base. However, the session data doesn't appear to persist as the user get's logged out of the system.

       

      When the user logs in to the system (while one server is inactive) and the inactive server is re-activated, their session data again doesn't persist, and they are forced to log in again.

       

      The clustered instances are using J2EE session variables and the cluster is NOT set to sticky sessions.

       

      Here is my apache httpd-vhosts.conf:


      <VirtualHost *:80>
          ServerAdmin webmaster@dummy-host.com
          DocumentRoot "C:\http-docs\smart-tde02"
          ServerName smart-tde02.wernerds.net
          ErrorLog "logs/smart-tde02-error_log"
          CustomLog "logs/smart-tde02-access_log" common
          <Directory "C:\http-docs\smart-tde02">
              Options Indexes FollowSymLinks
              AllowOverride None
              Order allow,deny
              Allow from all
          </Directory>
      <IfModule mod_jrun22.c>
          JRunConfig Verbose false
          JRunConfig Apialloc false
          JRunConfig Ignoresuffixmap false
          JRunConfig Serverstore "C:/applications/JRun4/lib/wsconfig/1/jrunserver.store"
          JRunConfig Bootstrap 127.0.0.1:51000
          #JRunConfig Errorurl url <optionally redirect to this URL on errors>
          #JRunConfig ProxyRetryInterval 600 <number of seconds to wait before trying to reconnect to unreachable clustered server>
          #JRunConfig ConnectTimeout 15 <number of seconds to wait on a socket connect to a jrun server>
          #JRunConfig RecvTimeout 300 <number of seconds to wait on a socket receive to a jrun server>
          #JRunConfig SendTimeout 15 <number of seconds to wait on a socket send to a jrun server>
          AddHandler jrun-handler .jsp .jws .cfm .cfml .cfc .cfr .cfswf
      </IfModule>
      </VirtualHost>


      <VirtualHost *:80>
          ServerAdmin webmaster@dummy-host.com
          DocumentRoot "C:\http-docs\smart-tde01"
          ServerName smart-tde01.wernerds.net
          ErrorLog "logs/smart-tde01-error_log"
          CustomLog "logs/smart-tde01-access_log" common
          <Directory "C:\http-docs\smart-tde01">
              Options Indexes FollowSymLinks
              AllowOverride None
              Order allow,deny
              Allow from all
          </Directory>
      <IfModule mod_jrun22.c>
          JRunConfig Verbose false
          JRunConfig Apialloc false
          JRunConfig Ignoresuffixmap false
          JRunConfig Serverstore "C:/applications/JRun4/lib/wsconfig/1/jrunserver.store"
          JRunConfig Bootstrap 127.0.0.1:51003
          #JRunConfig Errorurl url <optionally redirect to this URL on errors>
          #JRunConfig ProxyRetryInterval 600 <number of seconds to wait before trying to reconnect to unreachable clustered server>
          #JRunConfig ConnectTimeout 15 <number of seconds to wait on a socket connect to a jrun server>
          #JRunConfig RecvTimeout 300 <number of seconds to wait on a socket receive to a jrun server>
          #JRunConfig SendTimeout 15 <number of seconds to wait on a socket send to a jrun server>
          AddHandler jrun-handler .jsp .jws .cfm .cfml .cfc .cfr .cfswf
      </IfModule>
      </VirtualHost>

       

      Here are my questions:

       

      1) Is the type of session persistence I am seeking possible?

       

      2) Is there a setting or configuration I am missing to make this work?

       

      3) Is there a better solution for the results I am seeking?

       

      4) Will I be able to implement this with the servers being external from each other?

       

      I thank you for your help and your expertise in advance ^___^