Skip to main content

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 under data/resin1 and data/resin2.

The following container group is started with docker compose.

The role of each service is as follows:

ServiceRole
httpdWeb server (Apache HTTPd). Serves static files and distributes requests to resin1 and resin2 (reverse proxy + load balancing).
resin1Application server (Caucho Resin) – instance 1. Runs the iAP application.
resin2Application 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: postgresql
Oracle: oracle
SQL Server: sqlserver
See the README.md of the selected branch for details. Throughout this guide, the DB service name is represented by the <db> placeholder.
solrSearch engine (Apache Solr).
cassandraNoSQL database (Apache Cassandra).
mailpitTest SMTP server. Lets you inspect sent emails via a web UI.
accelstudio-testing-agentAccel Studio Testing Function Test Execution Agent. Started only when needed.
juggling-build-warContainer 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​

PortServiceURL / Connection Info
80Apache HTTPdhttp://127.0.0.1/imart/login
http://127.0.0.1/imart/system/login
8080Resin1 (application server)http://127.0.0.1:8080/imart/login (may not display correctly if BASE_URL is configured)
8081Resin2 (application server)http://127.0.0.1:8081/imart/login (may not display correctly if BASE_URL is configured)
9000Resin1 (server-side script debugging)Connect from VSCode. See Server-Side Setup
9001Resin2 (server-side script debugging)Connect from VSCode (the container-side port is 9000, the same as Resin1)
8983Solr (search engine)http://127.0.0.1:8983/solr
9160Cassandra (NoSQL DB)Connect via Thrift client
8188Accel Studio Testing Function Test Execution Agenthttp://127.0.0.1:8188
8025mailpithttp://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.

Port Conflicts

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.