When deploying a multi-server Ephesoft cluster, there are a few Best Practices recommendations.
Prerequisites:
- Database
- When creating an Ephesoft cluster, it is recommended that you first install MSSQL or MySQL on a server which will not be a processing server or a UI server. This minimizes the running processes, utilized RAM, I/O reads and writes, and network requests send to this server.
- Currently we support failover databases with the MSSQL always on availability feature. We recommend you run a second server which hosts the redundant databases for ephesoft so that you minimize single points of failure in case of hardware or OS issues.
- We recommend weekly database backups. Ephesoft must be stopped for the backups to occur.
- SharedFolders
- It is recommended that you install the SharedFolders on a separate machine from any of the processing or UI servers. This is to minimize I/O read and writes, along with minimizing network requests to the server and drive hosting the SharedFolders.
- We also recommend weekly backups of the SharedFolders when the databases are backed. Ephesoft must be stopped for the backups to occur.
- If possible, RAID shares are preferred.
- Workflows and other configurations
- By default, in Ephesoft 4.0 based versions, the pickup service is set to run on only one server at a time in the cluster. This prevents two machines from requesting the same batch class. The cron schedule for this no longer has to be scheduled.
- It is recommended to set the email import service to run on a UI server to minimize CPU utilization, I/O reads and writes, and network traffic on the processing servers so that they can focus on the Ephesoft workflow.
- “clean error job” executing on each server in a multi-server environment at same time can cause deadlock issues. We would recommend to schedule this in such a way that at no time it is executing simultaneously on multiple servers.
Following changes would be required to do so:
Property File: <Application Directory>/WEB-INF/classes/META-INF/dcma-workflows.properties
Property: dcma.clean.error.job.cronjob.expression
Value:
0 0/30 * ? * * on server 1
0 5/30 * ? * * on server 2
0 15/30 * ? * * on server 3 … and so on