As Wazuh deployments grow, organizations often expand beyond a single cluster. Large enterprises may deploy separate Wazuh Indexer clusters for different geographic regions, business units, cloud environments, or compliance boundaries.
While this architecture improves scalability and data isolation, it also introduces a new challenge: searching and analyzing security data across multiple clusters.
Without a centralized search capability, security analysts must switch between clusters to investigate incidents, correlate events, and hunt for threats.
This fragmented workflow slows investigations and increases the risk of overlooking important indicators of compromise.
Wazuh Cross Cluster Search (CCS) solves this problem by allowing a single Wazuh Indexer cluster to search indexes stored on one or more remote clusters.
Because Wazuh Indexer is built on OpenSearch, it inherits OpenSearch’s Cross-Cluster Search functionality, enabling organizations to query distributed security data without replicating indexes or merging environments.
In this guide, you’ll learn how Wazuh Cross Cluster Search works, its architecture, prerequisites, configuration steps, security considerations, performance optimization techniques, troubleshooting methods, and best practices for operating CCS in production environments.
What Is Wazuh Cross Cluster Search?
Wazuh Cross Cluster Search (CCS) enables one Wazuh Indexer cluster to search indexes located on other Wazuh Indexer clusters as though they were part of a single environment.
Instead of copying security data into one central cluster, CCS sends search requests from a local cluster to one or more remote clusters.
Each remote cluster executes the query against its local indexes and returns only the matching results.
The coordinating cluster combines these responses into a unified search result for the user.
Because CCS searches data where it already resides, organizations avoid the storage overhead and synchronization challenges associated with duplicating indexes across environments.
This capability is particularly valuable for organizations operating multiple Wazuh deployments across different data centers, cloud providers, or geographic regions.
Definition of Cross Cluster Search (CCS)
Cross Cluster Search is an OpenSearch feature that allows a cluster to execute search requests against indexes stored on remote OpenSearch clusters.
Rather than replicating data, CCS establishes trusted connections between clusters.
Queries are securely forwarded to remote clusters, executed locally, and the resulting documents are returned to the coordinating cluster.
This architecture provides:
- Unified searches across multiple clusters
- Minimal additional storage requirements
- Near real-time access to remote data
- Centralized threat hunting without data duplication
Since Wazuh Indexer uses OpenSearch as its search engine, administrators can leverage CCS using native OpenSearch capabilities.
How CCS Works in Wazuh Indexer (OpenSearch)
Wazuh Indexer acts as the search engine for all Wazuh alerts, archives, vulnerability data, inventory information, and other indexed security events.
When Cross Cluster Search is configured:
- The local Wazuh Indexer cluster registers one or more remote clusters.
- Each remote cluster is assigned a unique alias.
- A search request references the alias along with the target index.
- The local coordinating node forwards the query.
- Remote clusters execute the search locally.
- Matching documents are returned.
- The coordinating node merges and ranks all results before returning them to the client.
For example:
GET us-east:wazuh-alerts-*/_searchOr search multiple clusters simultaneously:
GET us-east:wazuh-alerts-*,eu-west:wazuh-alerts-*/_searchThis approach allows analysts to investigate incidents across globally distributed Wazuh environments using a single query.
Difference Between Local and Remote Cluster Searches
A standard Wazuh search operates only on indexes stored within the local cluster.
Cross Cluster Search expands this capability by forwarding searches to remote clusters while presenting the results as one combined dataset.
| Local Search | Cross Cluster Search |
|---|---|
| Searches one cluster | Searches multiple clusters |
| Lowest latency | Slight network overhead |
| No remote connections required | Requires trusted remote cluster configuration |
| Limited visibility | Organization-wide visibility |
| Simpler architecture | Supports distributed deployments |
Local searches remain the fastest option for day-to-day operations, while CCS provides broader visibility for enterprise-wide investigations.
Common Use Cases for CCS
Cross Cluster Search is commonly deployed in enterprise Wazuh environments where security data is distributed across multiple infrastructures.
Typical use cases include:
- Searching alerts across regional SOC deployments
- Investigating attacks spanning multiple cloud providers
- Monitoring subsidiaries from a centralized security team
- Keeping regulated data within specific jurisdictions while enabling centralized searches
- Maintaining separate production, staging, and development Wazuh clusters
- Supporting mergers and acquisitions where separate Wazuh deployments must remain independent
- Performing enterprise-wide threat hunting across multiple business units
Organizations following zero-trust or data sovereignty requirements often prefer CCS because security data remains inside each region while still being searchable centrally.
Benefits of Wazuh Cross Cluster Search
Cross Cluster Search provides organizations with a scalable way to investigate threats across multiple Wazuh deployments without consolidating all indexed data into a single cluster.
Instead of increasing storage costs through data replication, CCS enables federated searches while allowing each cluster to operate independently.
For distributed Security Operations Centers (SOCs), managed security providers, and multinational enterprises, this significantly improves visibility and investigation speed.
Search Security Events Across Multiple Clusters
One of the biggest advantages of CCS is the ability to search security events stored across several Wazuh Indexer clusters with a single query.
Security analysts no longer need to:
- Log into multiple dashboards
- Repeat identical searches
- Export results from different clusters
- Manually correlate findings
Instead, CCS retrieves matching events from every configured remote cluster and combines them into one unified response.
This dramatically accelerates threat hunting, incident response, and forensic investigations.
Centralize Threat Investigations
Many organizations operate independent Wazuh environments for operational reasons, but their SOC still needs centralized visibility.
Cross Cluster Search enables analysts to investigate:
- Malware outbreaks
- Insider threats
- Lateral movement
- Credential compromise
- Distributed attacks
from a single search interface.
Rather than consolidating all security data into one massive cluster, organizations maintain decentralized storage while centralizing investigations.
This aligns with recommendations from the MITRE ATT&CK framework, which emphasizes correlating activity across multiple systems to identify adversary behavior.
Maintain Separate Clusters for Compliance or Regions
Many regulations require organizations to keep security data within specific geographic regions.
Examples include:
- GDPR
- HIPAA
- Government security frameworks
- Financial regulations
Cross Cluster Search allows organizations to:
- Keep European logs in European data centers
- Keep North American logs locally
- Separate cloud and on-premises environments
- Isolate regulated business units
while still enabling centralized searches during investigations.
This provides a balance between compliance requirements and operational efficiency.
Reduce Operational Complexity
Without CCS, organizations often replicate indexes into centralized clusters.
That introduces additional complexity such as:
- Replication pipelines
- Storage duplication
- Synchronization failures
- Additional maintenance
- Larger storage requirements
CCS avoids these problems because data remains in its original location.
Searches occur only when needed, reducing administrative overhead while simplifying infrastructure.
Support Large-Scale Distributed Environments
Large enterprises frequently deploy multiple Wazuh clusters because a single cluster cannot efficiently support every location worldwide.
Cross Cluster Search scales naturally for environments containing:
- Multiple regions
- Multiple cloud providers
- Independent business units
- Disaster recovery clusters
- Managed customer environments
Rather than building one extremely large cluster, organizations can divide workloads while maintaining enterprise-wide search capabilities.
For additional guidance on scaling Wazuh infrastructure, see Step-by-Step Wazuh Manager Scaling Guide and The Complete Wazuh Cluster Architecture Guide.
How Wazuh Cross Cluster Search Works
Cross Cluster Search uses OpenSearch’s distributed search architecture to execute queries across multiple Wazuh Indexer clusters while presenting results as though they originated from a single environment.
Although the process appears simple to users, several components work together behind the scenes to route requests, authenticate clusters, execute searches, and aggregate results.
Local Cluster vs. Remote Clusters
A CCS deployment consists of:
- Local cluster — receives search requests and coordinates execution
- Remote clusters — store indexes and execute searches locally
The local cluster does not permanently store remote indexes.
Instead, it acts as the coordinator that knows how to contact trusted remote clusters whenever a search requires their data.
For example:
Local Cluster
│
├────────► Remote Cluster A
│
├────────► Remote Cluster B
│
└────────► Remote Cluster CEach remote cluster continues operating independently even when participating in CCS.
Coordinating Nodes
A coordinating node receives the user’s search request and manages the entire search lifecycle.
Its responsibilities include:
- Parsing the query
- Determining which clusters contain the requested indexes
- Forwarding requests
- Waiting for remote responses
- Merging search results
- Sorting documents
- Returning the final response
The coordinating node does not perform the search itself unless it also stores local shards.
In large environments, organizations often dedicate coordinating nodes to improve search performance and reduce resource usage on data nodes.
Cluster Aliases
Every remote cluster is registered using a unique alias.
Example:
us-east
eu-west
ap-southeastQueries reference these aliases instead of IP addresses.
Example:
GET eu-west:wazuh-alerts-*/_searchSearching multiple clusters simultaneously:
GET us-east:wazuh-alerts-*,eu-west:wazuh-alerts-*/_searchAliases simplify administration because cluster names remain consistent even if infrastructure changes.
Query Execution Process
A Cross Cluster Search generally follows these steps:
- An analyst submits a search query.
- The coordinating node identifies the referenced cluster aliases.
- The query is securely forwarded to each remote cluster.
- Each remote cluster executes the search against its local shards.
- Matching documents are returned to the coordinating node.
- Results from every cluster are merged.
- The final ranked response is returned to the client.
Because searches execute directly where the data resides, organizations avoid transferring entire indexes across the network.
According to OpenSearch documentation, this distributed execution model minimizes unnecessary data movement and helps maintain scalability across multiple clusters.
Authentication and Secure Communication
Since CCS enables communication between independent clusters, secure authentication is essential.
Best practices include:
- Enable TLS encryption between clusters.
- Use mutual certificate authentication where supported.
- Restrict remote cluster access to trusted hosts.
- Apply least-privilege permissions for search operations.
- Limit firewall rules to required transport ports.
- Monitor remote cluster connections for unusual activity.
Proper certificate management and transport-layer encryption help protect search traffic from interception or unauthorized access.
If you’re configuring secure communication between Wazuh components, see How to Fix Wazuh Certificate Errors for additional guidance.
Prerequisites
Before configuring Wazuh Cross Cluster Search (CCS), verify that both the local and remote Wazuh Indexer clusters meet the necessary software, networking, and security requirements.
Skipping these prerequisites can lead to failed cluster registrations, authentication errors, or unreliable search results.
Supported Wazuh and Wazuh Indexer Versions
Cross Cluster Search depends on the underlying OpenSearch version used by Wazuh Indexer.
As a best practice:
- Use the same Wazuh version across all clusters whenever possible.
- Ensure all Wazuh Indexer nodes run compatible OpenSearch versions.
- Avoid mixing major OpenSearch versions unless explicitly supported.
- Upgrade clusters before enabling CCS if significant version differences exist.
Running mismatched versions can result in unsupported APIs, incompatible search features, or serialization errors during remote queries.
Always verify compatibility before connecting production clusters.
Healthy Wazuh Indexer Clusters
Each participating cluster should be healthy before enabling Cross Cluster Search.
Verify that:
- Cluster health is green whenever possible.
- All primary shards are assigned.
- Replica shards are healthy.
- No nodes are disconnected.
- No indexes are in a read-only state.
- Disk usage remains below flood-stage watermarks.
A degraded remote cluster can still affect CCS queries by increasing latency or returning incomplete search results.
If your cluster is unhealthy, consider resolving those issues first by following How to Fix a Yellow Cluster Status in Wazuh Indexer or How to Fix Wazuh All Shards Failed Error.
Network Connectivity Between Clusters
All participating clusters must communicate over the network.
Verify:
- Bidirectional connectivity (if required by your deployment)
- Low network latency
- Stable routing
- No packet filtering between clusters
- Reliable WAN connectivity for geographically distributed environments
Before configuring CCS, test connectivity using utilities such as:
ping remote-cluster.example.comor
nc -zv remote-cluster.example.com 9300If network connectivity is unstable, Cross Cluster Search performance will suffer regardless of cluster health.
Required Firewall Ports
Firewalls must allow transport-layer communication between participating clusters.
Typical required ports include:
| Port | Purpose |
|---|---|
| 9300 | OpenSearch transport protocol (cluster-to-cluster communication) |
| 9200 | REST API (optional for administration) |
Only expose required ports to trusted systems.
Avoid allowing unrestricted inbound access from the Internet.
Firewall policies should follow the principle of least privilege.
TLS Certificates Configured
Production deployments should always encrypt communication between clusters.
Recommended practices include:
- Enable TLS on transport traffic.
- Use certificates signed by a trusted Certificate Authority (CA).
- Validate certificate chains.
- Rotate certificates before expiration.
- Protect private keys.
Incorrect certificates are among the most common causes of failed remote cluster registration.
If you’re experiencing certificate-related issues, see How to Fix Wazuh Certificate Errors.
Administrative Privileges
Configuring Cross Cluster Search requires administrative access to Wazuh Indexer.
You’ll typically need permissions to:
- Register remote clusters
- Modify persistent cluster settings
- Configure security roles
- Manage certificates
- Verify cluster health
- Access cluster APIs
Users with read-only privileges generally cannot configure CCS.
DNS or Hostname Resolution
Clusters should resolve each other’s hostnames consistently.
Verify:
- Forward DNS resolution
- Reverse DNS resolution (recommended)
- Hostname consistency across all nodes
- No conflicting host entries
Test resolution before configuring CCS:
nslookup remote-cluster.example.comor
host remote-cluster.example.comReliable hostname resolution simplifies administration and avoids future connectivity problems if IP addresses change.
Wazuh Cross Cluster Search Architecture
Cross Cluster Search follows a distributed architecture in which one Wazuh Indexer cluster coordinates search requests while one or more remote clusters execute searches against their local indexes.
Unlike cross-cluster replication, CCS does not move or synchronize data.
Each cluster remains autonomous, storing and managing its own indexes while responding to remote search requests when needed.
Single Coordinating Cluster
The coordinating cluster serves as the entry point for all CCS queries.
Its responsibilities include:
- Receiving user search requests
- Identifying the appropriate remote clusters
- Forwarding search requests
- Receiving responses
- Aggregating results
- Returning a unified response
Importantly, the coordinating cluster does not need to store copies of remote indexes.
Instead, it maintains metadata describing trusted remote clusters and their aliases.
Multiple Remote Clusters
One coordinating cluster can communicate with multiple remote Wazuh Indexer clusters simultaneously.
Example:
- North America cluster
- Europe cluster
- Asia-Pacific cluster
- Disaster recovery cluster
Each remote cluster:
- Stores its own indexes
- Maintains independent cluster health
- Executes searches locally
- Returns only matching documents
Adding additional clusters generally requires registering a new remote cluster alias rather than redesigning the architecture.
Data Flow During Searches
A Cross Cluster Search request typically follows this workflow:
- A user submits a search query.
- The coordinating cluster parses the request.
- Remote cluster aliases are identified.
- Search requests are forwarded to each remote cluster.
- Remote clusters search their local shards.
- Matching results are returned.
- The coordinating node merges and sorts all responses.
- A single result set is presented to the user.
Because only search results traverse the network, not entire indexes, bandwidth consumption remains relatively low.
Example Deployment Diagram
A typical production architecture looks like this:
+------------------------+
| Wazuh Dashboard |
+-----------+------------+
|
|
+-----------v------------+
| Local Wazuh Indexer |
| Coordinating Cluster |
+-----------+------------+
|
------------------------------------------------
| | |
+---------v---------+ +---------v---------+ +----------v---------+
| Remote Cluster A | | Remote Cluster B | | Remote Cluster C |
| North America | | Europe | | Asia-Pacific |
+-------------------+ +-------------------+ +--------------------+Each remote cluster remains operational even if another remote cluster becomes unavailable.
Best Practices for Production Deployments
To maximize reliability and performance:
- Keep clusters running compatible software versions.
- Deploy dedicated coordinating nodes in large environments.
- Use descriptive cluster aliases.
- Enable TLS for all transport traffic.
- Monitor network latency between regions.
- Avoid searching unnecessary indexes.
- Use wildcard patterns carefully.
- Monitor JVM heap utilization.
- Regularly review cluster health.
- Test CCS after upgrades.
Organizations operating large distributed environments should also implement sound shard planning to minimize search overhead.
For additional guidance, see How to Design a Wazuh OpenSearch Shard Allocation Strategy and How to Manage Wazuh Storage.
How to Configure Wazuh Cross Cluster Search
Once the prerequisites are complete, you can configure Cross Cluster Search by registering remote clusters, validating connectivity, assigning security permissions, and testing distributed queries.
The following example uses the OpenSearch REST API supported by Wazuh Indexer.
Step 1: Verify Cluster Health
Before connecting clusters, ensure each Wazuh Indexer cluster is healthy.
Check Cluster Status
Run:
curl -k -u admin:password https://localhost:9200/_cluster/health?prettyExample output:
{
"cluster_name": "wazuh-cluster",
"status": "green",
"number_of_nodes": 3,
"active_primary_shards": 62,
"active_shards": 124
}Ideally, every participating cluster should report a green status.
Verify Node Communication
Confirm all expected nodes are participating:
curl -k -u admin:password https://localhost:9200/_cat/nodes?vReview:
- Node names
- IP addresses
- Roles
- Heap utilization
- CPU usage
- Node availability
Resolve missing or disconnected nodes before proceeding.
Step 2: Configure Remote Cluster Settings
The coordinating cluster must know how to reach each remote cluster.
Add Remote Cluster Aliases
Register a remote cluster using the Cluster Settings API:
curl -k -u admin:password \
-X PUT "https://localhost:9200/_cluster/settings" \
-H "Content-Type: application/json" \
-d '
{
"persistent": {
"cluster": {
"remote": {
"us-east": {
"seeds": [
"10.10.1.15:9300"
]
}
}
}
}
}'In this example:
- us-east is the cluster alias.
- The seeds list contains one or more transport-layer endpoints that the coordinating cluster uses to discover the remote cluster.
Configure Seed Nodes
For production deployments:
- Specify multiple seed nodes for redundancy.
- Use dedicated transport addresses.
- Ensure each seed node is reachable.
- Avoid relying on a single node.
Example:
"seeds": [
"10.10.1.15:9300",
"10.10.1.16:9300",
"10.10.1.17:9300"
]Persistent vs. Transient Settings
OpenSearch supports two cluster configuration types:
| Setting Type | Purpose |
|---|---|
| Persistent | Survives cluster restarts and should be used for production CCS configurations. |
| Transient | Temporary settings that are cleared after a restart and are best suited for testing or troubleshooting. |
In most production environments, persistent settings are recommended.
Step 3: Verify Remote Cluster Connectivity
After registering the remote cluster, confirm that communication is working correctly.
Confirm Remote Cluster Registration
Retrieve the configured settings:
curl -k -u admin:password \
https://localhost:9200/_cluster/settings?prettyVerify that the remote cluster alias appears under the cluster.remote configuration.
Validate Node Connections
Review remote cluster information:
curl -k -u admin:password \
https://localhost:9200/_remote/info?prettyA healthy response should show:
- Cluster alias
- Connection status
- Connected nodes
- Seed nodes
- Connection mode
If the cluster reports connected: false, investigate network connectivity, firewall rules, TLS configuration, or transport port accessibility.
Step 4: Configure Security Permissions
Cross Cluster Search should only be accessible to authorized users.
Required OpenSearch Security Roles
Administrators should create or assign roles that allow users to:
- Search remote indexes
- Read index metadata
- Execute distributed search requests
Avoid granting unnecessary cluster administration privileges to analysts who only need search access.
User Permissions
Assign CCS privileges using role-based access control (RBAC).
Users should have access only to the indexes required for their responsibilities.
Restricting access minimizes the risk of exposing sensitive security data from unrelated business units or regions.
If you’re using custom RBAC configurations, see Troubleshooting Wazuh RBAC.
Cross-Cluster Authentication
Each participating cluster must trust the identity of the others.
Best practices include:
- Use mutual TLS authentication.
- Validate certificate chains.
- Rotate certificates regularly.
- Store private keys securely.
- Audit authentication failures.
These measures help ensure that only trusted clusters can participate in Cross Cluster Search.
Step 5: Test Cross Cluster Search Queries
Once connectivity and security are configured, verify that searches return the expected results.
Query Syntax
CCS queries reference the remote cluster alias followed by the target index pattern:
cluster_alias:index_name/_searchSearching a Single Remote Cluster
Example:
GET us-east:wazuh-alerts-*/_searchThis query searches only the wazuh-alerts-* indexes stored in the us-east remote cluster.
Searching Multiple Clusters Simultaneously
Search two remote clusters with a single request:
GET us-east:wazuh-alerts-*,eu-west:wazuh-alerts-*/_searchThe coordinating cluster forwards the query to both remote clusters and merges the returned results.
Combining Local and Remote Indexes
You can also search local and remote indexes in the same request.
Example:
GET wazuh-alerts-*,us-east:wazuh-alerts-*/_searchThis is particularly useful during enterprise-wide investigations where recent local events need to be correlated with historical or geographically distributed data.
Step 6: Validate Search Performance
After confirming functionality, evaluate how CCS performs under normal workloads.
Measure Query Latency
Compare:
- Local search response times
- Remote search response times
- Multi-cluster search latency
Higher latency may indicate network congestion, overloaded remote clusters, or inefficient query patterns.
Confirm Expected Search Results
Verify that:
- All expected remote indexes are searched.
- Document counts match expectations.
- Results from each cluster are included.
- Filters and aggregations behave correctly.
- No shard failures are reported.
Testing several query types helps ensure that CCS is functioning correctly across different investigation scenarios.
Review Cluster Logs
Finally, examine Wazuh Indexer and OpenSearch logs for warnings or errors related to Cross Cluster Search.
Look for messages involving:
- Remote cluster connectivity
- TLS handshake failures
- Authentication or authorization issues
- Shard failures
- Query timeouts
- Transport-layer communication
Routine log reviews can identify configuration issues early, helping maintain reliable and secure cross-cluster search operations.

Be First to Comment