ProjectWise Administrator Help

Setting Up ProjectWise Servers in a Clustered Environment

ProjectWise Design Integration Server supports clustering and load balancing features of Windows Server. This section discusses the basic configuration of ProjectWise Design Integration Server in a clustered environment. It is recommended that you consult Bentley Professional Services for assistance with setting this up in production.

Note: ProjectWise User Synchronization Service, and the Automated File Processing features of the ProjectWise Design Integration Server are NOT cluster-aware and therefore will not fail over if the server they are installed on fails. These services can be installed on servers in a cluster, however in the event of a failure manual steps must be taken to ensure they continue to function correctly.

Setting Up Your Server Cluster

  1. Before installing any ProjectWise software, you must first set up your cluster. This involves creating the cluster, and then specifying each server that will be a part of the cluster. See Microsoft documentation for details on this configuration. When ProjectWise clients need to connect to the ProjectWise Design Integration Server, they point to the name of the cluster, which will then decide which ProjectWise Design Integration Server will handle the request.
  2. Once your basic cluster is configured, the next step is to set up a database to host the ProjectWise database. Follow your normal database setup procedures, noting that the database server must reside outside the cluster. Once the database is set up, on each ProjectWise Design Integration Server computer in the cluster you must create an ODBC datasource that points to the database. All of the ODBC datasources must have the same name.
  3. Next you need to decide how you will store your files. Your storage area must reside outside the cluster. You can either host the storage area on a ProjectWise Caching Server outside the cluster, or you can provision shared storage outside the cluster such that all servers in the cluster can access it. Examples of shared storage include SAN (Storage Area Network), NAS (Network Attached Storage), or SMB Share. If you use shared storage, the service for ProjectWise Design Integration Server must be running as a user who has rights to the shared storage location, and who has the Log on as a service right on the local server (Control Panel > Administrative Tools > Local Security Policy > Security Settings > Local Policies > User Rights Assignments). Make sure this is set before you create any datasources. If you need to change the user that the service runs under, right-click 'ProjectWise Integration Server' in the Services window and select Properties > Log On > This Account, specify a different user account, and then restart the service.
  4. Make sure the following reside outside the cluster:
    • the ProjectWise database
    • the full text index catalog (if full text indexing is used)
    • ProjectWise Caching Server

Configuring a Datasource To Be Used in a Clustered Environment

Once you set up the cluster, the next step is to install ProjectWise Design Integration Server on each server in the cluster. All installation paths and other details must be the same on each server. After installation, you will create a datasource on one server, modify the DMSKRNL.CFG file as described, and then copy the DMSKRNL.CFG file to each ProjectWise Design Integration Server in the cluster.

  1. Install ProjectWise Design Integration Server on each server in the cluster.
  2. If you are using shared storage for your storage area, make sure the service for ProjectWise Design Integration Server is running as a user who has access to the shared storage location, and who has the Log on as a service right on the local server (Control Panel > Administrative Tools > Local Security Policy > Security Settings > Local Policies > User Rights Assignments). This change must be made on each server in the cluster. Restart the service for each ProjectWise Design Integration Server after you make your changes.
  3. On all but one of these servers, stop the service for the ProjectWise Design Integration Server.
  4. On the server where the service is still running, install ProjectWise Administrator and use it to create your datasource.

    When you create your datasource and you get to the Create Administrator and Storage dialog, the storage area node (Host field) defaults to the ProjectWise Design Integration Server computer on which you are working.

  5. If you are using a ProjectWise Caching Server outside the cluster, set the Host field to the server name on which the ProjectWise Caching Server is installed, and in the Path field specify the storage area’s folder path on that server.

    or

    If you are using shared storage, leave the Host field as is (pointing to the local server), and in the Path field specify the address of the shared storage location. For example: \\sharedstorage\pw_storage

  6. After you have created your datasource, stop the service for that ProjectWise Design Integration Server.
  7. Open the DMSKRNL.CFG file of that ProjectWise Design Integration Server.
  8. Uncomment the ServerName and ServerIPAddress properties and set their values to the cluster’s name and IP address, respectively.

    For example:

    ServerName=mycluster.mydomain.com
    ServerIPAddress=192.168.1.10
    Note: The ServerIPAddress property can also be set to the external host name (fully qualified domain name (FQDN)) if needed.
  9. If you want ProjectWise to only respond to requests that come in on the cluster network interface, uncomment the BindAddress properties under the [Broadcast] and [Listener] sections and set their value to the cluster's IP address. For example:
    [Broadcast]
    ...
    BindAddress=192.168.1.10 (cluster IP address)
    ...
    [Listener]
    ...
    BindAddress=192.168.1.10 (cluster IP address)
    Note: This causes the service for the ProjectWise Design Integration Server to attach to this address on startup. If this address is not assigned to an NIC on the server the service will fail to start. Do not set the BindAddress if you want ProjectWise to respond to requests on more than one adapter / IP address, or if you are configuring ProjectWise with a hardware load balancer.
  10. Find the FileAcccessTokenMasterKey, LoginTokenMasterKey1, and LoginTokenMasterKey2 properties under the TeamMate section, and delete everything after the = for each property, so that they now look like this:
    FileAccessTokenMasterKey=
    ...
    LoginTokenMasterKey1=
    LoginTokenMasterKey2=
  11. Add an entry in the Server Name Resolution section with the formatting, "cluster IP address = cluster name".

    For example:

    [ServerNameResolution]
    192.168.1.10=mycluster.mydomain.com
  12. Save and close the DMSKRNL.CFG file.
  13. Restart the service for that ProjectWise Design Integration Server.
  14. At this point you need to run the dmscfgcopy.exe utility to copy the dmskrnl.cfg from one server to another.
    The reason you need to run this utility, and the reason you cannot just manually copy the CFG file, is because the encrypted items in the CFG file will not be correctly copied over. Only using the utility correctly copies the encrypted items.

    Note: Use the same user to run scripts as the one running the ProjectWise Design Integration Server service.

    1. You need to generate encrypted configuration file using the "dmscfgcopy.exe" available in the ProjectWise Server install directory.

      For example:

      dmscfgcopy -dec -inc TeamMate:ServerName -inc TeamMate:FileAccessTokenMasterKey -inc TeamMate:LoginTokenMasterKey1 -inc TeamMate:LoginTokenMasterKey2 "C:\Program Files\Bentley\ProjectWise\bin\dmskrnl.cfg" "C:\Temp\ClusterSetup\Append_dmskrnl_S01.cfg"
    2. Copy generated file at step 1 to other server in a cluster and append original configuration file.

      For example:

      dmscfgcopy -enc -pre "C:\Temp\Append_dmskrnl.cfg" "C:\Program
      				Files\Bentley\ProjectWise\bin\dmskrnl.cfg"
    3. Test if all of the original files contain the same tokens using the same utility.

      For example:

      dmscfgcopy -dec -inc TeamMate:ServerName -inc
      				TeamMate:FileAccessTokenMasterKey -inc TeamMate:LoginTokenMasterKey1 -inc
      				TeamMate:LoginTokenMasterKey2 "C:\Program
      				Files\Bentley\ProjectWise\bin\dmskrnl.cfg"
      				"C:\_deployment\Test2Copy_dmskrnl.cfg"
      			 
  15. Copy the newly modified DMSKRNL.CFG file to each ProjectWise Design Integration Server in the cluster.
  16. Start the services for each ProjectWise Design Integration Server in the cluster.
  17. If using shared storage, log in to ProjectWise Administrator, select the Storage areas datasource node, right-click the storage area that was just created and select Properties. In the Computer name or IP address field, enter the cluster name and click OK.