3-Tier Deployment Guide
Production deployment instructions for the 3-Tier Multi-VM Orchestration Engine Cluster.
MCM Platform — 3-Tier Deployment Guide
About this architecture
The 3-tier orchestrated deployment is the recommended architecture for production environments. It separates services by role into three distinct tiers to strengthen security isolation and optimize system performance:
- Tier 1: Access Node (VM1): Hosts the gateway interface. This is the only node exposed to public traffic.
- Tier 2: App Node (VM2): Hosts the core backend microservices and the User Interface (UI).
- Tier 3: DB Node (VM3): Hosts the storage layers.
3-Tier Network Architecture
1. Prerequisites & VM Specifications
Ensure that your physical, virtual (on-premises), or cloud virtual machines meet the following minimum configuration requirements:
| Host / VM | Role / Tier | OS | CPU | RAM | Disk | Network | Cloud VM Examples (AWS / Azure) |
|---|---|---|---|---|---|---|---|
VM 1 (mcm-access) | Access Gateway / Manager | Ubuntu 24.04 LTS | 2 CPU | 4 GB | 50 GB SSD | 1 Gbps | t3.medium / Standard_D2als_v6 |
VM 2 (mcm-app) | Backend APIs & UI | Ubuntu 24.04 LTS | 4 CPU | 16 GB | 50 GB SSD | 1 Gbps | t3.xlarge / Standard_D4ads_v6 |
VM 3 (mcm-db) | Database | Ubuntu 24.04 LTS | 4 CPU | 16 GB | 105 GB SSD | 1 Gbps | t3.xlarge / Standard_D4ads_v6 |
Scaling for Production
The above specifications are the minimum requirements to deploy and run the MCM Platform. For production environments with larger workloads, refer to the VM Sizing Guide for recommended specifications based on your managed resource count.
Baseline Network Prerequisites
The 3-tier architecture requires the following network conditions:
- VM1 (Access Node): Must be reachable by end users — either via a public IP, VPN, or internal corporate network.
- VM2 (App Node) & VM3 (DB Node): Must have private IP connectivity to VM1 and to each other. These nodes do not need to be reachable from outside your network.
- Outbound Internet Access:
- All VMs: Require outbound internet access during installation to download system dependencies (Docker, packages, etc.).
- VM2 (Runtime): Requires persistent outbound internet access because the MCM microservices connect to cloud provider APIs (AWS, Azure) for resource orchestration, inventory sync, and cost metrics.
For detailed port mappings, security groups, and domain firewall rules, see Section 2: Network & Security Requirements.
2. Network & Security Requirements
All three VMs must be placed within a network where they can route traffic to each other using private IPs. A single subnet (or separate subnets for strict tiering) can be used depending on your network topology.
Example IP layout (using 10.0.0.0/16):
- Subnet 1 (
10.0.1.0/24) — Hosts VM1 (mcm-access). - Subnet 2 (
10.0.2.0/24) — Hosts VM2 (mcm-app). - Subnet 3 (
10.0.3.0/24) — Hosts VM3 (mcm-db).
If your deployment uses a different IP layout, ensure you adapt all subnet ranges, IP values, and source filters accordingly throughout this guide.
On-Premises & Private Cloud Setup
If you are deploying on physical servers or a private virtualized environment:
- VM Provisioning: Provision 3 virtual machines meeting the CPU, RAM, and Disk specifications listed in Section 1: Prerequisites & VM Specifications.
- Network Layout & IP Assignment:
- VM1 (
mcm-access): Assign an IP address accessible by your target users (can be a public IP or a private IP if accessed via an internal corporate network, VPN, or local load balancer). - VM2 (
mcm-app) & VM3 (mcm-db): Assign static private IP addresses. Ensure VM1, VM2, and VM3 have mutual private IP routing to communicate with each other.
- VM1 (
- Firewall & Egress Configuration: Configure your network firewall appliances or host-level firewalls (e.g. UFW) using the Port Requirements and Outbound Connection Requirements tables below.
Port Requirements
The following ports must be open between the VMs. Configure these in your firewall, security groups, or host-level rules (e.g., UFW) as needed:
| Port | Protocol | Source | Destination | Purpose |
|---|---|---|---|---|
| 22 | TCP | Admin workstation | VM1 | Administrative SSH access |
| 22 | TCP | VM1 | VM2, VM3 | Installer SSH tunnel for deployment |
| 80 | TCP | Users | VM1 | HTTP (auto-redirects to HTTPS) |
| 443 | TCP | Users | VM1 | Primary HTTPS gateway |
| 2377 | TCP | VM2, VM3 | VM1 | Cluster management |
| 7946 | TCP + UDP | All VMs | All VMs | Service discovery & gossip protocol |
| 4789 | UDP | All VMs | All VMs | VXLAN overlay network (container-to-container traffic) |
| 1514 | TCP | VM1, VM2 | VM3 | Wazuh log collection (Required when SecOps module is enabled) |
| 1515 | TCP | VM1, VM2 | VM3 | Wazuh agent enrollment (Required when SecOps module is enabled) |
CAUTION: The Port 4789 Trap
The VXLAN overlay network data plane traffic MUST run over UDP Port 4789. If you mistakenly configure Port 4789 as TCP in your Cloud Security Groups, the Container Orchestrator services will start, but they will be completely isolated. You will experience 504 Gateway Timeouts because the microservices on VM2 will not be able to talk to the databases on VM3.
Outbound Connection Requirements
The MCM platform requires outbound HTTPS (port 443) connectivity to the following main domains:
Firewall Configuration Tip:
When configuring your corporate egress firewall or proxy server rules, use wildcard matching (e.g. *.ubuntu.com, *.docker.com, *.docker.io, *.github.com, *.azure.com, *.windows.net, *.microsoftonline.com, *.amazonaws.com, *.amazon.com, *.aws.com) to ensure all subdomains are automatically allowed.
| # | Destination | Required On | Phase | Purpose |
|---|---|---|---|---|
| 1 | ubuntu.com | VM1, VM2, VM3 | Installation | System package updates (apt-get) |
| 2 | docker.com, docker.io | VM1, VM2, VM3 | Installation / Runtime | Docker Engine package repository & container images |
| 3 | github.com | VM1, VM2, VM3 | Installation / Runtime | yq binary download & GitHub API integration |
| 4 | registry.mcm.revdau.ai | VM1 | Installation | MCM deployment archive download |
| 5 | digicert.com | VM1 | Installation | TLS certificate chain validation |
| 6 | azure.com, windows.net, microsoftonline.com | VM2 | Runtime | Azure Cloud management APIs, Entra ID & cost reports |
| 7 | amazonaws.com, amazon.com, aws.com | VM2 | Runtime | AWS Cloud management & STS APIs |
| 8 | frankfurter.app | VM2 | Runtime | Currency exchange rates (FinOps) |
Understanding the Connection Phase:
- Installation: Outbound access required only during initial platform setup/installation to download system packages and binary dependencies.
- Runtime: Outbound access required persistently while the platform is running for cloud API synchronization, inventory management, and cost metric reporting.
AWS & Azure Infrastructure Setup
If you are provisioning resources on a public cloud, navigate to the dedicated guide for your provider to set up your network, security groups, and VM instances:
Once your cloud infrastructure and VMs are provisioned, return to Section 3: Installation Procedure of this guide to complete the platform setup.
3. Installation Procedure
Pre-Deployment Checklist
Before you begin:
-
Ensure that the SSH user on VM2 and VM3 belongs to the
sudogroup. -
Ensure SSH password authentication is enabled on VM2 and VM3 to allow key distribution.
Run the following commands on VM2 and VM3 to configure a password and temporarily enable authentication:
# Set a password for the SSH user (e.g. ubuntu) sudo passwd [VM_SSH_USER] # Enable password authentication drop-in config echo "PasswordAuthentication yes" | sudo tee /etc/ssh/sshd_config.d/00-mcm-temp-auth.conf sudo systemctl restart ssh
The installer script automatically performs all pre-checks including hardware verification (minimum RAM, disk, CPU), OS version validation, and bidirectional network port connectivity testing. If any pre-check fails, the installer reports the exact issue and exits. Fix the reported issue and re-run the installer.
Download & Execute the Installer
Procedure
-
SSH into VM1 (Access Node):
ssh [VM1_USER]@<VM1_IP> # or (using a private key) ssh -i /path/to/key.pem [VM1_USER]@<VM1_IP> -
Download the MCM platform deployment archive: Log in to the MCM Registry portal at https://registry.mcm.revdau.ai/license using your MCM credentials.
Navigate to the License page to view your MCM App Credentials (Username and Password) and available release versions under Download installation package:
Copy the
wgetdownload command, replace<your MCM App password>with your MCM App password, and execute it on your server to download the platform deployment archive:wget --user="your_email@example.com" --password="your_mcm_app_password" \ "https://registry.mcm.revdau.ai/api/mcm-app/downloads/package?version=1.1.0" -O mcm_artifacts_1.1.0.tar.gz(Note: Swap the version number in the URL to download a different release).
-
Extract the downloaded archive:
tar -xzvf mcm_artifacts_1.1.0.tar.gz -
Navigate into the installation directory, and run the installer script:
cd mcm_artifacts sudo chmod +x install.sh sudo bash install.sh --three-tier -
The installer will prompt for VM2 and VM3 connection details:
- Enter VM1 IP (Access Node): Type the IP address of VM1.
- Enter VM2 IP (App Node): Type the IP address of VM2.
- Enter VM2 SSH Username: Type the SSH username for VM2.
- Enter SSH Password for VM2: Type the user password for VM2.
(The installer will repeat this for VM3.)
-
Installer Execution Tasks:
- Configures SSH key authentication between all nodes
- Runs pre-deployment checks (hardware, network, port connectivity)
- Initializes the container orchestration cluster
- Distributes configurations and container images to all nodes
- Deploys the application stack
If any check fails, the installer reports the exact error — fix the issue and re-run.
Post-Deployment Warm-up: After the installer finishes, wait at least 5 minutes for all services to initialize.
Once the initialization is complete, open the application in your web browser:
| Application | URL |
|---|---|
| MCM UI | https://<DOMAIN_OR_IP>/subscription (IP of VM1 Access Node or custom domain) |
Platform Activation & Onboarding
When you access the MCM platform gateway for the first time, you must activate the installation using your subscription details:
1. Retrieve Your Subscription Key
Once your purchase is approved, you will receive a subscription details email from the MCM team containing your Username (Registered Email ID) and Password/Token:
2. Activate the Subscription
Open the application URL (https://<DOMAIN_OR_IP>) in your web browser. You will be greeted by the Subscription Activation page. Enter the Username (Email ID) and Password/Token received in your email, then click Activate:
3. Create the Administrator User
Once the subscription is activated, you will be redirected to the Create User page. Enter the details for the primary platform administrator (First Name, Last Name, Email, MSP Name, and Legal Name) and click Submit:
4. Log In to the Platform
After submitting, you will be redirected to the main login portal.
For a walkthrough of the login process, managing credentials, and exploring user dashboards, please refer to the Getting Started User Guide.
4. Operations & Health Verification
You can verify the status and health of all deployed services by executing the healthcheck script (Optional) on VM1 (Access Node):
sudo bash /opt/mcm/scripts/healthcheck.shGeneral Verification and Control
For verification steps, stack teardown commands, and utility control scripts (starting, stopping, restarting, or upgrading the platform components), please refer to the Helper Scripts and Commands Guide.
For custom domain configuration and SSL/TLS certificate management, please refer to the Domain and TLS Certificate Configuration Guide.
For troubleshooting configuration, certificate, or service initialization errors, refer to the Troubleshooting Guide.