You are planning to implement a Highly Available (HA) Sage X3 environment, so need to gather together all the information about the various Sage X3 components and how they operate in a HA environment. You may have found the Sage specific HA related documentation a bit tricky to collate together, as it is scattered across several documents. Luckily for you, I thought it might be useful to write this blog as an attempt to bring our HA information together into one place.
NOTE: this article is written for X3 Version 12
What is "High Availability"?
Wikipedia give us a handy summary of the concepts at https://en.wikipedia.org/wiki/High_availability and say "High availability (HA) is a characteristic of a system which aims to ensure an agreed level of operational performance, usually uptime, for a higher than normal period."
Sage X3 provides the ability to configure HA systems, as discussed in this article.
What are the Business objectives
First thing to do is understand your end user business objectives and requirements with regards to HA. Before you can spec any system, you need to know what you need to achieve. In general terms, the more highly available you need a system, the more redundancy you should be looking to provide.
Planning for HA with Sage X3
Overall infrastructure considerations
Don't forget that Sage X3 components themselves don't cover all components to provide a HA system. For example you will need to consider how to make your network resilient:
- Network route from your end-users, through to the X3 servers, such as load balancers, Reverse Proxies or other network devices
- Network disk storage (if used) i.e. SAN or NAS
Non-Sage software components
The following software is not provided by Sage, but are still required for a fully functioning system.
Sage currently relies on Apache to dispatch various files from the Application server file system. Sage have no documentation to describe how to setup Apache in a resilient configuration, although it is possible to configure a load balancer to setup Apache for high availability.
Sage uses a SQL database to store transactional data, etc. Oracle RAC and SQL Server clusters are supported, however Sage have no specific detailed documentation to describe how to setup Databases in a resilient configuration.
SQL Server Cluster
You may find the Microsoft documentation useful, for example https://docs.microsoft.com/en-us/sql/database-engine/sql-server-business-continuity-dr?view=sql-server-ver15
You may find the Oracle documentation useful, for example https://www.oracle.com/uk/database/real-application-clusters/
There is no Sage specific documentation available
Sage uses Elastic Search to provide a system-wide searching mechanism. You may consider this to be non-critical functionality and therefore out-of-scope for a HA setup, although Elastic Search is very much able to be configured in a cluster to provide resilience. Sage have no specific documentation to describe how to setup Elastic Search in a cluster at this time.
You may find the Elastic Search documentation useful, for example https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery-bootstrap-cluster.html
Sage X3 software components
Multiple instances of Syracuse can be installed and provide a Syracuse cluster for HA.
There is on-line help documentation relating to installing multiple Syracuse nodes in a cluster, "Managing Multiple HTTP and HTTPS Servers"
You can also review "Illustrated guide to installing additional Syracuse nodes" which provides a step-by-step guide to building a Syracuse cluster.
The online help "Node.js web server recommendations" mentions "We strongly recommend using dedicated load balancing services such as HAProxy, NGINX, VMWare NSX, ALB or F5 on architectures involving a cluster of Syracuse Servers, when there are more than 200 concurrent sessions" In a HA environment, the number of concurrent sessions is irrelevant really, you will need a dedicated load balancer of some sort.
Also be aware to turn off Syracuse load balancing if you are using an external load balancer, discussed in blog "Is Syracuse’s Load Balancer messing with your External Load Balancer? Learn to Turn it off"
MongoDB clustering is supported for HA (In this context, I refer to Mongo Replica Sets), however there is no Sage specific on-line help documentation relating to such a setup. There is a plethera of documentation on the MongoDB web site, for example https://www.mongodb.com/basics/clusters or https://docs.mongodb.com/v4.2/replication/
I have recently published "Test system Build Diary: 2021 R3 (V12 patch 27) MongoDB cluster implementation" which describes setting up a three node MongoDB cluster (Replica Set) which I hope you would find useful. I also previously published the "Illustrated guide to setting up a single TEST server to use a MongoDB cluster" although this describes setting up a MongoDB cluster on one server for basic familiarisation/testing and is definitely not HA!
Sage X3 has long had multiple Runtime server capability, however until 2021 R1 (v12 patch 25) the Application server component itself was a single point of failure. With 2021 R1, Sage introduced the "Application cluster architecture" which overcomes this limitation and provides HA capability.
A step-by-step example of building a test system is available in the blog "Test system Build Diary: 2021 R3 (V12 patch 27) Multi-Main (Application Cluster) installation"
You can also review KB "Additional notes when installing Application Cluster"
There isn't exactly a HA solution with the X3 Print Server component at the moment, but you can of course install multiple X3 print servers (on multiple Windows servers) following standard documentation. This gives users alternative resources to service the print jobs, if one of the X3 print servers was to become unavailable for some reason.
With 2021 R2 (v12 patch 26) the Print Server was improved to allow the X3 Print Server to continue serving print jobs if an Application Server failed, in an Application Cluster setup. This is described in the attached PDF "Print Server 2021R2 High availability.pdf". In summary, the print server now requests the resources needed to operate from the application server that requested the print.
Configuring a Test system
As always, your test environment should mirror the live environment as closely as feasible in order to provide a realistic testing platform for any changes or patches. As HA systems are going to be multi-node systems, it may be tempting to reduce the number of servers in your TEST environment for cost or simplicity reasons, however I would suggest this is a false economy and advise to maintain the TEST and LIVE servers with the same number of servers if at all possible.
The X3 Console is only used for configuration and is therefore unlikely to be part of a HA solution. However, you should consider it from the point of view of being able to recover the X3 solution data in the event of system failure, which will depend on how and where you have installed the X3 Console component. i.e. the data stored in "C:\Users\<<X3 ADMIN USER>>\AppData\Roaming\Sage\Console"
Is your email system also HA? If you rely on emailed notifications as part of a critical business process, ensure the mailing of notifications from X3 continues to function in failure scenarios.
Thats all folks...
That's it for now, but check back from time to time as the situation and documents described in this article may change over time, and intend to keep this document updated with the latest information.