Reference
The port matrix, the endpoints, and the config fragments that encode the network
model’s invariants — the page to open when you’re actually configuring a firewall
rule, a sd.xml, or an ego.conf, not reading the story behind it.
Symphony port matrix (7.3.2 defaults)
Same base port on every host is mandatory (burst walkthroughs may use a custom BASEPORT, e.g. 30600 — the defaults below are what this build runs).
| Port | Component | Notes |
|---|---|---|
7869 TCP+UDP |
lim ( |
Base port; 7 consecutive ports from here |
7870 TCP |
vemkd ( |
Clients connect here first |
7871 TCP |
pem ( |
|
7872 TCP |
egosc ( |
|
7873 TCP |
repository service |
Service-package distribution |
7874/7875 TCP |
session director ( |
|
dynamic → pin in sd.xml |
SSM |
OS-random by default, reassigned each restart; pin |
8443 (8080 no-TLS) |
Web GUI |
mgmt only |
8180 |
REST |
mgmt only |
9090 |
Web service gateway |
mgmt only |
9443 TLS / 9080 |
Host Factory REST |
mgmt only |
1527 |
Derby DB |
mgmt only |
4046 |
Loader controller (plc) |
|
9200-9202 / 9300-9302 |
Elasticsearch |
mgmt only |
Connection flow: client → vemkd (7870) → SD → SSM. Compute side: LIM starts PEM locally and reports to the master LIM; long-lived idle TCP channels run vemkd<→PEM and SSM<→SIM.
| IBM’s docs do not state which side initiates every channel. Allow bidirectional establishment on the base-port range and SSM ranges between management and compute hosts — see Network model for the failure mode this protects against. |
Verified live: what’s actually listening
Verified on the master pair via ss (phase-log.md 2026-07-10 "EGO master verified
alive"):
| Host | Listening ports |
|---|---|
sym-master1 (primary) |
Full 7-port block 7869-7875 + UDP 7869 |
sym-master2 (non-primary) |
7869 + 7871 + UDP 7869 (lim/pem only — correct for a non-primary management host) |
symphony/config/ fragment reference
Source of truth for grid configuration; rolled onto hosts by mgmt cloud-init
(apply-config.sh) and baked into the Windows firstboot script’s assumptions. Every
value encodes a verified constraint from the reference architecture — change with
care.
| File | What | Why |
|---|---|---|
|
Keepalives, dynamic-host settings |
WAN survival + dynamic join (detail) |
|
Pinned SSM port ranges |
Firewalls/NLB need fixed ports; OS-random by default |
ego.conf.fragment (appended to $EGO_CONFDIR/ego.conf):
EGO_DYNAMIC_HOST_WAIT_TIME=120
EGO_DYNAMIC_HOST_TIMEOUT=15M
EGO_ENABLE_CHAN_KEEPALIVE=y
EGO_CHAN_KEEPALIVE_TIME=180
sd-ssm-ports.xml.fragment (merged into the SD parameter section of sd.xml):
<ego:EnvironmentVariable name="SSM_SDK_ADDR">31000-31019</ego:EnvironmentVariable>
<ego:EnvironmentVariable name="SSM_SIM_ADDR">31020-31039</ego:EnvironmentVariable>
Ranges are deliberately small (20 ports each) to fit an NLB-style listener budget for cross-cloud exposure — size must be >= the number of SSMs (apps) on the management host; 20 is ample at PoC scale.
Endpoints (management plane, mgmt-only ports)
| Endpoint | Port | Notes |
|---|---|---|
Web GUI |
8443 (TLS) / 8080 (no-TLS) |
Symphony admin console |
REST |
8180 |
Symphony REST API |
Web service gateway |
9090 |
|
Host Factory REST |
9443 (TLS) / 9080 |
Burst provider integration point (detail) |
Derby DB |
1527 |
Embedded management database |
Elasticsearch |
9200-9202 / 9300-9302 |
Related
-
Network model — the invariant, the MTU lesson, the story behind each of these rules.
-
Symphony management — how the RHEL masters apply these fragments.
-
Windows compute pool — how the firstboot join script opens the compute-side firewall rules.
Continue to SWOT & sign-off.