Typical ADx Enterprise Setup
On this page
Introduction
An ADx setup consists of multiple applications: ADx and Conversion. To avoid single points of failure, each application requires at least two nodes running on different hosts. ADx nodes can share the same host. Conversion nodes, which perform CPU-intensive tasks, should be installed on separate hosts to better distribute the load.
Hosts & Nodes
A typical ADx enterprise setup therefore consists of two ADx nodes and two Conversion nodes running on four hosts:
- Host 1 with ADx node 1
- Host 2 with ADx node 2
- Host 3 with Conversion node 1
- Host 4 with Conversion node 2
From there it's naturally possible to scale up when needed, e.g. add host 5 with Conversion node 3.
Load Balancers
Communication to ADx and Conversion instances is achieved through load balancers:
- ADx: HTTP load balancer delegating to ADx nodes
- Conversion: HTTP load balancer delegating to Conversion nodes
ADx applications, by default, only provide a self-signed certificate. In a typical setup this is fine though, also for production, because the load balancer provides a valid certificate for external communication. Internally the load balancer can be then configured to accept self-signed certificates. That way, communication is still encrypted.
For example, ADx load balancer adx-lb
listens on HTTPS port 443
and delegates requests to HTTPS port 8443
of ADx node 1 on host adx-host-1
and ADx node 2 on host adx-host-2
:
`adx-lb:443` -> `adx-host-1:8433`, `adx-host-2:8433`
Databases
Multiple databases (or database schemas) are used to separate system from business data:
- ADx System database
- Stores system data such as repository configuration, users or sessions
- Backups are important
- ADx Content database
- Stores ADx repository content data
- Backups are very important!
- ADx Cache database
- Stores ADx cache and conversion data
- Backups are not important (only temporary data or data which can be recreated automatically)
If required, one could further separate and e.g. have a separate database for each repository.
Storage
In addition to the database data, ADx also needs to store resources of various kinds, e.g. content, cache or conversion resources. Usually these resources are stored as normal files in various folders on a shared file system which all nodes have access to.
In the example setup below there is a single shared file system which is accessible via mount point /adx-shared-fs
from all the hosts. Subfolders are used to organize the files, e.g. to separate repository files from conversion files. Of course, one could further separate, e.g. by having a separate conversion file system /adx-conversion-shared-fs
and only allowing access from Conversion nodes.
Concrete Example Setup
Below we provide a concrete example setup, i.e. example hosts, ports, urls, folders. Based on this it should be easy to adapt the values to match a real setup.
Hosts
ADx 1
Hostname: adx-host-1
Nodes: ADx Node 1
ADx 2
Hostname: adx-host-2
Nodes: ADx Node 2
Conversion 1
Hostname: conversion-host-1
Nodes: Conversion Node 1
Conversion 2
Hostname: conversion-host-2
Nodes: Conversion Node 2
Databases
ADx System
DB name: adx-system
DB host: adx-db
ADx Content
DB name: adx-content
DB host: adx-db
ADx Cache
DB name: adx-cache
DB host: adx-db
Storage
ADx Shared Filesystem
Description: single shared file system accessible from all nodes, see mount point.
Mount Point: /adx-shared-fs
Nodes
ADx Node 1
Host: adx-host-1
Ports:
- HTTP:
8080
Databases:
- System:
adx-system
- (additional databases dependent on repo settings, see below)
URLs:
- Tribefire Services URL:
https://adx-lb:443/tribefire-services
- Controlled by setting
TRIBEFIRE_PUBLIC_SERVICES_URL
- Controlled by setting
- Conversion URL:
https://conversion-lb:443/tribefire-services
- Controlled by setting
DOCUMENTS_CONVERSION_TFS_URL
- Controlled by setting
Repositories:
Example Repository:
Name: `example`
Content:
Database: `adx-content`
Storage: `/adx-shared-fs/repository-resources/content/example`
Cache:
Database: `adx-cache`
Storage: `/adx-shared-fs/repository-resources/cache/example`
ADx Node 2
Host: adx-host-2
(Rest of settings same as ADx Node 1.)
Conversion Node 1
Host: conversion-host-1
Ports:
- HTTP:
8080
Databases:
- System:
adx-system
- Conversion:
adx-cache
URLs:
- Tribefire Services URL:
https://adx-lb:443/tribefire-services
- Controlled by setting
TRIBEFIRE_PUBLIC_SERVICES_URL
- Controlled by setting
Conversion Storage: /adx-shared-fs/conversion-resources
Conversion Node 2
Host: conversion-host-2
(Rest of settings same as Conversion Node 1.)
Load Balancers
ADx
Host: adx-lb
Ports:
- HTTPS:
adx-lb:443
->adx-host-1:8443
,adx-host-2:8443
- HTTP load balancing, i.e. level 7
Conversion
Host: conversion-lb
Ports:
- HTTPS:
conversion-lb:443
->conversion-host-1:8443
,conversion-host-2:8443
- HTTP load balancing, i.e. level 7