Skip to main content

Multi-server deployment with externalized dependencies (Windows)

How to spread an Informer deployment horizontally across Windows servers, with PostgreSQL, Redis, and a three-node Elasticsearch cluster on their own machines.

Hardware

ServerPurposeCPU / Memory / Disk
1x InformerWeb server4 CPU / 20 GB RAM / 60 GB
1x PostgresInformer metadata2 CPU / 8 GB RAM / 60 GB
1x RedisMemory exchange2 CPU / 8 GB RAM / 40 GB
3x ElasticsearchIndexing cluster2 CPU / 16 GB RAM / 100 GB each

The disk figures are the minimum free space after the OS and any other required software. Use solid-state drives for the Elasticsearch nodes, and disable the Windows paging file on them to avoid memory writes to disk that hurt indexing. Elasticsearch distributes indices across nodes with redundancy, so revisit disk allocation after about six months based on Dataset usage.

Ports

ServerPortsProtocolZone
Informer80, 443HTTP, HTTPSExternal
Postgres5432TCP/IPInternal
Redis6379TCP/IPInternal
Elasticsearch (to Informer)9200TCP/IPInternal
Elasticsearch (node to node)9200 - 9305TCP/IPInternal

The Informer web server is the hub: it talks to every dependency, the Datasources, and external clients. Only one of the three Elasticsearch nodes needs port 9200 open to the Informer server (that node is Informer's entry point to the cluster); all three nodes need 9200 - 9305 open between each other. Datasource access also needs granting to the Informer server, but that varies too much to detail here.

Deploy

Download the latest Windows offline installer (see Installing Informer (Windows)) and copy it to every server.

Informer server

Install Informer per the install guide, but uncheck PostgreSQL, Redis, and Elasticsearch in the component list. When filling out the configuration prompts, the default for each dependency is localhost; instead enter the IP or DNS of the respective dependency server (for Elasticsearch, the node with port 9200 open to Informer). After the install, do not start Informer as a service yet.

PostgreSQL server

Run the offline installer with only PostgreSQL selected. By default PostgreSQL only allows local connections; edit pg_hba.conf (in the PostgreSQL data directory, for example C:\Program Files\PostgreSQL\<version>\data\pg_hba.conf). Find the IPv4 block and add a line for the Informer server:

# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all <Informer IP>/32 md5

Save and restart the PostgreSQL Windows service.

At this scale, the default PostgreSQL max_connections of 100 may be too low (the error is sorry, too many clients already). Raise it in postgresql.conf (in the same data directory), based on the PostgreSQL server's resources:

max_connections = 100

Redis server

Run the offline installer with only Redis selected. By default Redis binds only to the loopback address; edit redis.windows-service.conf in the Redis install root. Find the bind line and add the Redis server IP:

bind 127.0.0.1
bind <Redis Server IP>

Save and restart the Redis Windows service.

Elasticsearch cluster

On the first Elasticsearch node, run the offline installer with only Java and Elasticsearch selected. The Locations, Service, and Plugins pages can stay at defaults. On the Configuration page, set:

  • Cluster name: a unique name, configured identically on all nodes.
  • Node name: the server name (populated by default).
  • Roles: leave all checked.
  • Memory: at most 50% of server memory (8 GB on a 16 GB server).
  • Network host: _site_ (uses the server's IP).
  • HTTP port: leave the defaults 9200 and 9300.
  • Discovery: increase to 2, the minimum to form a cluster.
  • Unicast Hosts: add the IP addresses of the other two Elasticsearch nodes, comma-separated.

Repeat on the other two nodes, changing only Unicast Hosts to point at the other two nodes each time. Once all three are installed and running as services, confirm the cluster from any node:

http://<NodeServerIP>:9200/_cluster/stats?human&pretty

Check that the node count is 3 and the status is Green.

Final steps

With the dependencies running, bring Informer online for the first time as a single-threaded foreground process so dependency issues are easy to spot. On the Informer server, open an elevated PowerShell, change to the Informer install root, and run:

informer run

The first startup takes longer than usual; do not interrupt it, and wait for the [started] message. Then close PowerShell and start Informer as a service. If PowerShell shows an error, stop the process with Ctrl + C, fix the dependency named in the error, and run informer run again. If issues persist, contact Support at i5support@entrinsik.com.

Once Informer runs as a service, open it at http://localhost. The default credentials are admin / 123.

Change the default password

Change this password right after your first sign-in. See Passwords and MFA.