Install the first server

This topic explains how to install the first Deployment Automation server for a high availability (active-active) implementation.

To install the first server:

  1. Create an Oracle, SQL Server, or PostresSQL database on a separate machine. For details, see Prepare your database.

    Note: You cannot set up a high availability implementation using the Derby database provided with the installer.

  2. Install the first Deployment Automation server. For details, see Server installation.

    The DA user profile is installed into the designated directory, for example:

    C:\Users\<username>\.microfocus\da

    This profile is shared with subsequent server installations. Ensure that all the machines in the active-active cluster can access the installation directory.

  3. Open the installed.properties file in the shared user profile directory, for example:

    C:\Users\<username>\.microfocus\da\conf\server\installed.properties

    Update the Hibernate cache properties in the installed.properties file:

    1. Disable the Hibernate query cache property by setting it to false:

      Copy code
      hibernate.cache.use_query_cache=false

      Note: For increased I/O throughput, query caching is used by default. However, the Hibernate cache must be disabled in active-active configurations because it doesn't work across multiple server instances.

    2. Enable the Hibernate second level cache property by setting it to true:

      Copy code
      hibernate.cache.use_second_level_cache=true
    3. Change the property that references the cache file you create in the next step.

      Copy code
      net.sf.ehcache.configurationResourceName=ehcache-active-active.xml
  4. Create a cache properties file called ehcache-active-active.xml for your active-active servers and save the file to the DA shared user profile directory, for example:

    C:\Users\<username>\.microfocus\da\conf\server\ehcache-active-active.xml

  5. Insert the following code into the ehcache-active-active.xml file, or use the relevant code from the ehcache-active-active-sample.xml located in the DA user profile directory.

    Copy code
    <!--
      ~ © Copyright 2012-2021 Micro Focus or one of its affiliates.
      ~
      ~ The only warranties for products and services of Micro Focus and its affiliates and licensors ("Micro Focus") are set forth in the express warranty statements accompanying such products and services. Nothing herein should be construed as constituting an additional warranty. Micro Focus shall not be liable for technical or editorial errors or omissions contained herein. The information contained herein is subject to change without notice.
      ~
      ~ Contains Confidential Information. Except as specifically indicated otherwise, a valid license is required for possession, use or copying. Consistent with FAR 12.211 and 12.212, Commercial Computer Software, Computer Software Documentation, and Technical Data for Commercial Items are licensed to the U.S. Government under vendor's standard commercial license.
      -->

    <ehcache updateCheck="false"
             maxBytesLocalHeap="15%"
             maxBytesLocalDisk="2G"
            >

        <diskStore path="java.io.tmpdir"/>

        <cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" properties="peerDiscovery=manual,
            rmiUrls=
            //<ip_server1>:<port>/deployServerCache|
            //<ip_server1>:<port>/deployServerCacheNV|
            //<ip_server1>:<port>/securityServerCache|
            //<ip_server1>:<port>/workflowCache|
            //<ip_server1>:<port>/vcCache|
            //<ip_server1>:<port>/org.hibernate.cache.internal.StandardQueryCache|
            //<ip_server1>:<port>/org.hibernate.cache.spi.UpdateTimestampsCache|
            //<ip_server1>:<port>/defaultCache|

            //<ip_server2>:<port>/deployServerCache|
            //<ip_server2>:<port>/deployServerCacheNV|
            //<ip_server2>:<port>/securityServerCache|
            //<ip_server2>:<port>/workflowCache|
            //<ip_server2>:<port>/vcCache|
            //<ip_server2>:<port>/org.hibernate.cache.internal.StandardQueryCache|
            //<ip_server2>:<port>/org.hibernate.cache.spi.UpdateTimestampsCache|
            //<ip_server2>:<port>/defaultCache
            "/>

        <cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" properties="port=40001, socketTimeoutMillis=200000"/>

        <cache name="deployServerCache"
               maxBytesLocalHeap="20%"
               eternal="false"
               timeToIdleSeconds="86400"
               overflowToDisk="true"
               diskPersistent="true"
               diskExpiryThreadIntervalSeconds="86400">
            <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
        </cache>

        <cache name="workflowCache"
               maxBytesLocalHeap="25%"
               eternal="false"
               timeToIdleSeconds="86400"
               overflowToDisk="true"
               diskPersistent="true"
               diskExpiryThreadIntervalSeconds="86400">
            <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
        </cache>

        <cache name="deployServerCacheNV"
               eternal="false"
               timeToIdleSeconds="86400"
               overflowToDisk="true"
               diskPersistent="true"
               diskExpiryThreadIntervalSeconds="86400">
            <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
        </cache>

        <cache name="securityServerCache"
               maxBytesLocalHeap="3%"
               eternal="false"
               timeToIdleSeconds="86400"
               overflowToDisk="true"
               diskPersistent="true"
               diskExpiryThreadIntervalSeconds="86400">
            <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
        </cache>

        <cache name="vcCache"
               maxBytesLocalHeap="35%"
               eternal="false"
               timeToIdleSeconds="86400"
               overflowToDisk="true"
               diskPersistent="true"
               diskExpiryThreadIntervalSeconds="86400">
            <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
        </cache>

        <cache name="org.hibernate.cache.internal.StandardQueryCache"
               maxBytesLocalHeap="15%"
               eternal="false"
               timeToIdleSeconds="86400"
               overflowToDisk="true"
               diskPersistent="true"
               diskExpiryThreadIntervalSeconds="86400">
            <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
        </cache>

        <cache
                name="org.hibernate.cache.spi.UpdateTimestampsCache"
                eternal="true">
            <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
        </cache>

        <defaultCache
                eternal="false"
                timeToIdleSeconds="86400"
                overflowToDisk="true"
                diskPersistent="true"
                diskExpiryThreadIntervalSeconds="120">
            <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
        </defaultCache>
    </ehcache>
  6. For the rmiUrls property, modify and add server IP addresses and port lines to match the servers and port you are using in your active-active configuration. Then save the file.

    Use the following example, where the first server is 10.136.40.114, the second server is 10.136.40.250, and the port is 40001.

    Copy code
    <cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" properties="peerDiscovery=manual,
            rmiUrls=
            //10.136.40.114:40001/deployServerCache|
            //10.136.40.114:40001/securityServerCache|
            //10.136.40.114:40001/vcCache|
            //10.136.40.114:40001/org.hibernate.cache.internal.StandardQueryCache|
            //10.136.40.114:40001/org.hibernate.cache.spi.UpdateTimestampsCache| 
            //10.136.40.114:40001/defaultCache|
            //10.136.40.250:40001/deployServerCache|
            //10.136.40.250:40001/securityServerCache|
            //10.136.40.250:40001/vcCache|
            //10.136.40.250:40001/org.hibernate.cache.internal.StandardQueryCache|
            //10.136.40.250:40001/org.hibernate.cache.spi.UpdateTimestampsCache| 
            //10.136.40.250:40001/defaultCache
            "/>
  7. Update the Common Tomcat set environment:

    Windows
    1. Navigate to the Common Tomcat bin directory, for example:

      C:\Program Files\Micro Focus\common\tomcat\<Tomcat-version>\bin

    2. Open the setenv.bat file and add the following property to the line JAVA_OPTS=...

      -Djava.rmi.server.hostname=<ip_server1>

      where <ip_server1> is the IP address of the first server.

    3. Restart Common Tomcat.

    UNIX/Linux
    1. Navigate to the Common Tomcat bin directory, for example:

      /opt/MicroFocus/da/common/tomcat/<Tomcat-version>/bin

    2. Open the setenv.sh file and add the following property to the line CATALINA_OPTS=...

      -Djava.rmi.server.hostname=<ip_server1>

      where <ip_server1> is the IP address of the first server.

    3. Restart Common Tomcat.

  8. Share the directory where the Deployment Automation user profile is stored. Configure proper access to its content for network clients.

    To share the profile location, follow these guidelines:

    • Make sure that the shared network storage does not reside on any of the Deployment Automation servers. Otherwise, it introduces a dependency on one node always being available and invalidates High Availability principles.

    • Shared storage should be accessed using a symbolic directory link or mapped drive created on each of the Deployment Automation servers.

      Caution: If you use a UNC path on Windows, you cannot run Deployment Automation as a service. Use a mapped drive instead.

    • On each Deployment Automation server, configure the Common Tomcat service to run using a domain service account. The account must have full access to the following:

      • The shared network location.
      • The Deployment Automation and Common Tomcat installation directories on each Deployment Automation server.
  9. Open the Deployment Automation user interface for the first server and create a network relay for each server that is part of your active-active configuration. For details, see Create network relays.

If you are connecting the agents to a single endpoint, with your Deployment Automation servers defined as a cluster with a load balancer, do the following:

  1. In the first server installed in your active-active installation, in the Deployment Automation user interface, navigate to Administration > System.

  2. Select the System Settings tab.

  3. Click Edit and modify the External Agent URL and External User URL fields to use the IP address or the DNS name and port of the load balancer server.

After installing the first server, install other servers in your active-active configuration. See Install additional servers.

Back to top

Next steps: