Skip to main content
Skip table of contents

Configuring Clustering on Azure with TCP Protocol

Overview

Clustering on Azure requires using the TCP protocol with the AZURE_PING discovery mechanism. The default UDP protocol experiences issues resolving node physical addresses on the Azure network stack, making TCP the recommended approach for Azure deployments.

This configuration is specifically required for Azure environments. Standard on-premise deployments can continue using the default UDP protocol.

Prerequisites

Before configuring the CData Virtuality Server cluster on Azure, ensure that you have:

  • CData Virtuality Server v25.3 or more recent;

  • Azure VMs for CData Virtuality Server nodes deployed in the same Azure Virtual Network/Subnet;

  • Shared PostgreSQL database accessible by all nodes;

  • Azure Storage Account with appropriate permissions.

Configuration Steps

Step 1: Create Azure Blob Container for Cluster Discovery

The Azure Blob container serves as a shared registry for cluster nodes to discover each other.

1.1 Storage Account Setup

CODE
# Using Azure CLI
az storage account create \
  --name <storage_account_name> \
  --resource-group <resource_group> \
  --location <azure_region> \
  --sku Standard_LRS

1.2 Create Blob Container

CODE
# Create container for cluster discovery
az storage container create \
  --name <container_name> \
  --account-name <storage_account_name> \
  --public-access off

Example container name: cluster-blob

1.3 Retrieve Access Credentials

CODE
# Get Storage Account Key 
az storage account keys list 
--account-name <storage_account_name> 
--resource-group <resource_group> 
--query '[0].value' 
--output tsv {code}

Save these credentials:

  • Storage Account Name: <storage_account_name>

  • Storage Access Key: <key_from_above_command>

  • Container Name: <container_name>

Step 2: Start CData Virtuality Nodes with Azure TCP Configuration

Run each server node using the azure_tcp JGroups protocol stack with the following command:

BASH
./standalone.sh 
--server-config=dvserver-standalone-cluster.xml 
-b <VM_HOSTNAME_IP> 
-Djboss.node.name=<NODE_NAME> 
-Djboss.jgroups.ee.stack=azure_tcp 
-Djboss.jgroups.azure_ping.storage_account_name=<STORAGE_ACCOUNT_NAME> 
-Djboss.jgroups.azure_ping.storage_access_key=<STORAGE_ACCESS_KEY> 
-Djboss.jgroups.azure_ping.container=<BLOB_CONTAINER_NAME>

Parameter Reference

Parameter

Description

Example

-b

Bind address - IP\Name

10.0.1.4

-Djboss.node.name

Unique identifier for the node

cdv-node-1

-Djboss.jgroups.ee.stack

JGroups protocol stack (must be azure_tcp for Azure)

azure_tcp

-Djboss.jgroups.azure_ping.storage_account_name

Azure Storage Account name

cdvstorage

-Djboss.jgroups.azure_ping.storage_access_key

Storage Account access key

base64key==

-Djboss.jgroups.azure_ping.container

Blob container name

cluster-blob

Example: 3-Node Cluster Configuration

Node 1:

BASH
./standalone.sh 
--server-config=dvserver-standalone-cluster.xml 
-b 10.0.1.4 
-Djboss.node.name=cdv-node-1 
-Djboss.jgroups.ee.stack=azure_tcp 
-Djboss.jgroups.azure_ping.storage_account_name=cdvstorage 
-Djboss.jgroups.azure_ping.storage_access_key=abc123def456...== 
-Djboss.jgroups.azure_ping.container=cluster-blob

Node 2:

BASH
./standalone.sh 
--server-config=dvserver-standalone-cluster.xml 
-b 10.0.1.5 
-Djboss.node.name=cdv-node-2 
-Djboss.jgroups.ee.stack=azure_tcp 
-Djboss.jgroups.azure_ping.storage_account_name=cdvstorage 
-Djboss.jgroups.azure_ping.storage_access_key=abc123def456...== 
-Djboss.jgroups.azure_ping.container=cluster-blob

Node 3:

BASH
./standalone.sh 
--server-config=dvserver-standalone-cluster.xml 
-b 10.0.1.6 
-Djboss.node.name=cdv-node-3 
-Djboss.jgroups.ee.stack=azure_tcp 
-Djboss.jgroups.azure_ping.storage_account_name=cdvstorage 
-Djboss.jgroups.azure_ping.storage_access_key=abc123def456...== 
-Djboss.jgroups.azure_ping.container=cluster-blob

Ensure that all CData Virtuality Server nodes are deployed within the same Azure Virtual Network and Subnet for proper cluster communication.

The azure_tcp JGroups protocol stack is available since v25.3

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.