Cluster Configuration
This page summarizes information specific to the cluster configuration (the architecture diagram, service list, URL/port number reference, restarting individual services, and restarting only one side of the cluster). For the common setup steps, see Common Setup Steps.
Docker Environment Configuration
In the cluster configuration, Resin starts as two services, resin1 and resin2, and Apache HTTPd distributes requests between them. The differences from the standalone configuration are as follows:
- Resin runs as two services (
resin1,resin2). - Apache HTTPd handles request distribution (load balancing) between them.
- The Resin storage area (
data/resin/storage) is shared-mounted by both Resin instances, and logs for each Resin are stored separately underdata/resin1anddata/resin2.
The following container group is started with docker compose.
The role of each service is as follows:
| Service | Role |
|---|---|
httpd | Web server (Apache HTTPd). Serves static files and distributes requests to resin1 and resin2 (reverse proxy + load balancing). |
resin1 | Application server (Caucho Resin) – instance 1. Runs the iAP application. |
resin2 | Application server (Caucho Resin) – instance 2. Runs the iAP application. |
<db> | Database. Used as the main database for iAP. The service name corresponds to the DB service name for the selected branch. PostgreSQL: postgresqlOracle: oracleSQL Server: sqlserverSee the README.md of the selected branch for details. Throughout this guide, the DB service name is represented by the <db> placeholder. |
solr | Search engine (Apache Solr). |
cassandra | NoSQL database (Apache Cassandra). |
mailpit | Test SMTP server. Lets you inspect sent emails via a web UI. |
accelstudio-testing-agent | Accel Studio Testing Function Test Execution Agent. Started only when needed. |
juggling-build-war | Container dedicated to building war files and static files. It also incorporates the user modules under data/juggling/additional-modules. Not always running; executed on demand with run. |
URL / Port Number Reference
| Port | Service | URL / Connection Info |
|---|---|---|
| 80 | Apache HTTPd | http://127.0.0.1/imart/login http://127.0.0.1/imart/system/login |
| 8080 | Resin1 (application server) | http://127.0.0.1:8080/imart/login (may not display correctly if BASE_URL is configured) |
| 8081 | Resin2 (application server) | http://127.0.0.1:8081/imart/login (may not display correctly if BASE_URL is configured) |
| 9000 | Resin1 (server-side script debugging) | Connect from VSCode. See Server-Side Setup |
| 9001 | Resin2 (server-side script debugging) | Connect from VSCode (the container-side port is 9000, the same as Resin1) |
| 8983 | Solr (search engine) | http://127.0.0.1:8983/solr |
| 9160 | Cassandra (NoSQL DB) | Connect via Thrift client |
| 8188 | Accel Studio Testing Function Test Execution Agent | http://127.0.0.1:8188 |
| 8025 | mailpit | http://127.0.0.1:8025 |
The database port and connection details (host, DB name, user, password) depend on the selected branch. See the README.md of the selected branch.
If any of the ports listed above are already in use by an existing service, the container will fail to start. Verify that the relevant ports are free before proceeding (note that the cluster configuration uses two more ports than the standalone configuration: 8081 and 9001). For steps to resolve conflicts, see Common Issues.
Restarting Individual Services
To restart only a specific service after a configuration change, you can run restart specifying the service name. Replace <db> with the DB service name for the selected branch (for example, postgresql for PostgreSQL; see README "Stop/Restart").
# Restart Resin1
docker compose restart resin1
# Restart Resin2
docker compose restart resin2
# Restart Apache HTTPd
docker compose restart httpd
# Restart Apache Cassandra
docker compose restart cassandra
# Restart the database (<db>)
docker compose restart <db>
# Restart Solr
docker compose restart solr
Restarting Only One Side of the Cluster
In the cluster configuration, you can restart either resin1 or resin2 independently. While one side is restarting, the other continues to process requests, enabling a rolling restart with no downtime.
# Restart only Resin1
docker compose restart resin1
# Restart only Resin2
docker compose restart resin2
For the steps to stop and restart the entire environment, see Common Setup Steps.