Deploy StandardCluster
Prerequisites
- Ensure you have JDK 17 or higher installed.
- Download the latest BifroMQ release.
Installation Steps
This section illustrates the deployment process for a 3-node cluster. Similar to deployment on Linux, you need to extract the downloaded tar file first.
Configurations
A configuration file is provided by default with the following settings:
# The cluster requires exactly one bootstrap node
bootstrap: true
mqttServerConfig:
tcpListener:
port: 1883
# BifroMQ Cluster Configuration
clusterConfig:
# Cluster environment, cluster members under same environment can communicate with each other
env: "Test"
# Host address to bind for inter-member communication. If left blank, a site-local address will be used if available
host:
# Port for listening to cluster membership-related messages. If left blank, the operating system will automatically choose an available port.
# For seed nodes, it is recommended to specify an explicit port number to simplify the cluster building process.
port:
# Optional DNS domain name used to achieve cluster member address discovery, can be used in K8S environment deployment
clusterDomainName:
# Comma-separated list of <ADDRESS>:<PORT> for joining the cluster
seedEndpoints:
Setting Seed Nodes
Before setting up the cluster, you need to specify seedPoints in a comma-separated format of <ADDRESS>:<PORT>
, for example:
clusterConfig.seedEndpoints: ${NODE1_ADDR}:${PORT},${NODE2_ADDR}:${PORT},${NODE3_ADDR}:${PORT}
For detailed configuration information, refer to the BifroMQ Configuration Documentation.
Setup Bootstrap Node
Start the bootstrap node using the command:
./bin/standalone.sh start
This will create the necessary persistent metadata required for the cluster to function.
Setup Non-Bootstrap Nodes
For non-bootstrap nodes, the bootstrap configuration must be set to false
to prevent them from generating inconsistent metadata.
Run the script ./bin/standalone.sh start
to start non-boostrap nodes.
Cluster Status Check
After running the script, the nodes will form a cluster and generate the AgentHost joined seedEndpoint: ${seedEndpoints}
logs on their respective machines.
You can also use various system-level metrics to monitor the cluster's health and performance.