GuancheData is packaged as a multi-module Maven project. A singleDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/GuancheData/stage_3/llms.txt
Use this file to discover all available pages before exploring further.
mvn clean package command produces all the executable JARs that Docker Compose then picks up when building container images. Deployment is profile-driven: the main node runs the broker, backend services, and load balancer together, while additional nodes join the Hazelcast cluster by running only the backend profile. Follow the steps below to go from a fresh clone to a running cluster.
Navigate to the repository root
All Maven and Docker Compose commands must be run from the root of the repository, where the top-level
pom.xml and docker-compose.yml live.Build all service JARs
Compile and package every module in one pass from the root:This builds four modules —
ingestion-service, indexing-service, search-service, and benchmarking — and places the shaded (fat) JARs in each module’s target/ directory. Docker Compose will copy these artifacts into the container images at startup; you do not need to run docker build separately.Configure IP addresses in docker-compose.yml
Every On each additional node, set
xxx placeholder in docker-compose.yml must be replaced with a real IP address before the cluster starts.The substitution rules are:- In
HZ_PUBLIC_ADDRESS— use the host IP of the machine running that service. - In
HZ_MEMBERS— use the host IP of the main node (the seed node for Hazelcast discovery). All services on all nodes should point here. - In
BROKER_URL— use the host IP of the node running thebrokerprofile (i.e., the main node).
192.168.1.10):HZ_PUBLIC_ADDRESS to that node’s own IP and keep HZ_MEMBERS pointing at the main node’s ingestion-service (<MAIN_NODE_IP>:5701).Configure nginx.conf with search-service backend IPs
The Nginx load balancer proxies Add one
/search and /health requests to the search-service instances in the cluster. Before starting the loadbalancer profile, replace the <NODE_IP> placeholders in nginx.conf with the real IPs of every node running a search-service.server line per search-service instance. Nginx uses a least-connections strategy and will automatically stop routing to a backend after 10 consecutive failures, with a 30-second recovery window.For a single-node deployment, keep only one
server line pointing at 127.0.0.1:7003 or the host’s LAN IP.Start the cluster
Choose the deployment mode that matches your environment.
- Single node
- Multi-node
Start the broker, all backend services, and the load balancer together on one machine:This brings up the following containers:
| Container | Profile | Description |
|---|---|---|
ingestion-service | backend | Document crawler and datalake writer |
indexing-service | backend | Async indexer consuming ActiveMQ messages |
search-service | backend | HTTP search API (port 7003) |
activemq | broker | ActiveMQ message broker (port 61616) |
nginx | loadbalancer | Reverse proxy and load balancer (port 8080) |