Skip to main content

Validating the infrastructure for multi-node deployment

This document provides a step-by-step guide to validate infrastructure connectivity before installing the Adeptia Rancher package (RKE2). The purpose of these validation steps is to ensure that all required network paths, services, and permissions are correctly configured in advance.

Following this guide will help verify:

  • Connectivity between Linux VMs
  • Connectivity between Jumpbox and Linux VMs (If you are using Jump Box to connect to VMs)
  • Connectivity with shared storage (NFS) (If using an NFS LAN server)
  • Required network ports are open and accessible
  • Domain name and Load Balancer connectivity

Architecture overview​

Environment components

  • 1 X Jumpbox VM (Optional)
  • 3 X Linux VMs (VM1, VM2, VM3)
  • 1 X Shared NFS Server
  • 1 X Load Balancer

All components are deployed within the same virtual network unless otherwise specified.


1. Connectivity between Jumpbox VM and Linux VMs​

Objective​

Validate network connectivity from the Jumpbox VM to all three Linux VMs using a Python web server.

Steps​

Step 1: Start Python web server on Linux VM 1​

Code

sudo python3 -m http.server 9345

Step 2: From Jumpbox VM, validate connectivity​

Code

curl --connect-timeout 15 --insecure \ --write-out '%{http_code}' \ --silent --output /dev/null \ http://<Linux_VM1_IP>:9345

Expected Output 200

Step 3: Repeat for Linux VM 2 and VM 3​

  • Start Python server on each VM
  • Update IP address accordingly
  • Use any available port

2. Connectivity among all Linux VMs​

Objective​

Ensure Linux VM1, VM2, and VM3 can communicate with each other.

Steps​

Step 1: Start web server on VM1​

Code

sudo python3 -m http.server 9345

Step 2: From VM2 and VM3, validate connectivity​

Code

curl --connect-timeout 15 --insecure \ --write-out '%{http_code}' \ --silent --output /dev/null \ http://<Linux_VM1_IP>:9345

Step 3: Repeat for VM2 and VM3​

  • Run Python server on VM2
  • Validate from VM1 and VM3
  • Run Python server on VM3
  • Validate from VM1 and VM2

3. Required ports validation (Domain name mapped to Load Balancer)​

Validate that required ports are open and accessible through the Load Balancer using a mapped domain name, and that traffic is allowed at both the network and Linux VM firewall levels.

Required open ports​

The following ports must be allowed at:

  • Network Security Group (NSG) level
  • Linux VM (iptables / firewalld / ufw) level
  • Load Balancer frontend rule level
PortPurpose
443HTTPS traffic
9345Application connectivity validation
6443Kubernetes / API access
1433MS SQL connectivity

Validation steps​

Step 1: Run Python web servers on backend Linux VMs​

Start a Python HTTP server on each Linux VM using different ports (One port per test):

Code

sudo python3 -m http.server 9345

Code

sudo python3 -m http.server 6443

Code

sudo python3 -m http.server 443

``

WarningEnsure the Load Balancer backend pool includes the target Linux VM and the corresponding health probes and load-balancing rules are configured for each port.

Step 2: Validate connectivity using domain name (Via Load Balancer)​

From the following sources:

  • Jumpbox VM
  • Linux VM1
  • Linux VM2
  • Linux VM3

Run:

Code

curl --connect-timeout 15 --insecure --write-out '%{http_code}' --silent --output /dev/null http://<DOMAIN_NAME>:9345

Repeat the command for each port:

Code

http://<DOMAIN_NAME>:6443
http://<DOMAIN_NAME>:443

``

Expected result​

200

  • 200 confirms:

    • Domain name is correctly mapped to the Load Balancer
    • Load Balancer rules are working
    • Required ports are open at NSG and VM firewall levels
    • Backend Linux VMs are reachable

4. Connectivity between Linux VMs and shared NFS server​

Objective​

Validate connectivity and mount access to the NFS share.

NFS mount command:​

Run on VM1, VM2, VM3:

Code

sudo mkdir /mnt/testnfs
sudo mount -t nfs -o vers=4.1 <storage-domain-name:/nfs-drive-path> /mnt/testnfs

Validation:​

Code

df -h | grep testnfs

5. Validate the required permissions on NFS share​

Objective​

Validate Read, Write, Execute, and Ownership access.

  1. Mount the NFS shared drive on all the Kubernetes Nodes:

Code

sudo mkdir /mnt/testnfs
sudo mount -t nfs -o vers=4.1 <storage-domain-name:/nfs-drive-path> /mnt/testnfs
  1. Run the following commands to verify the permissions:

Code

cd /mnt/testnfs
mkdir test-dir
touch test-file.txt
chown 1000:3000 test-file.txt
ls -l test-file.txt
rm test-file.txt
rmdir test-dir
cat > runme.sh <<'EOF'
#!/bin/sh
echo "Executed from NFS"
EOF
chmod +x runme.sh
./runme.sh
rm runme.sh
  1. Unmount the NFS shared drive.

Code

sudo umount -f /mnt/testnfs

WarningEnsure that the NFS export allows ownership and group changes (chown / chgrp). The application performs file creation and ownership updates during installation, upgrades, and migrations. Insufficient ownership privileges on the NFS server may result in deployment failures.

Expected Result

  • Read, Write, Execute, and Ownership permissions enabled.

Important – Linux VM disk and partition requirements​

By default, RKE2 stores its binaries, container images, runtime data, and embedded etcd data under:

Code

/var/lib/rancher/rke2

``

Ensure that the filesystem containing the RKE2 data directory has sufficient free disk space and is SSD-backed.

Recommended free disk space for production:

  • Control-plane (Server) nodes: 150 GB for Production / 100 GB for Non-Prod.

Note: On RHEL and Amazon Linux, /var is often a separate and small partition. On Ubuntu, /var is usually part of the root (/) filesystem.