System Redundancy
Multiple instances of GroundControl can run simultaneously and connect to the same database and RabbitMQ instance. Setting up a second system can increase performance and improve fault tolerance.
Setting Up a Second GroundControl Instance
When setting up a second GroundControl instance, there are a few common pitfalls to avoid:
SQLCMD Must Be Downloaded Separately
Since the second machine (most likely) will not have SQL Server installed, SQLCMD must be downloaded separately to enable the Manager Tool to verify and save database information.
Download link: Run Transact-SQL script files using sqlcmd - SQL Server | Microsoft Learn
RabbitMQ User Must Be Created
Authentication with "guest – guest" only works against the local RabbitMQ instance, not from another machine. You must create a dedicated user account for remote connections.
Service Distribution and Scaling
All GroundControl services can run multiple times across different machines. However, the behavior differs depending on the service type:
Services That Can Run Truly in Parallel
The following services can run multiple instances simultaneously without any restrictions, allowing for increased throughput and redundancy:
- Internal Event Processing
- External Event Processing
- Subscriber Broker
- Logging
- Licensing
Services with Built-in Coordination Mechanisms
These services have built-in mechanisms to ensure that only one instance sends messages at a time, even when multiple instances are running:
- Event Scheduler
- DAMM Subscriber
API/Web Frontend Considerations
The API/Web service is more complex because it always provides an instance of the GroundControl VGRS frontend on the configured machine's port. You have two options:
- Background processes only: Do not start the API service and only run the background processes multiple times
- Load balancer approach: Deploy a load balancer or reverse proxy in front of multiple API instances to distribute incoming requests