Example AWS Deployments

Last Updated: Mar 14, 2022
documentation for the dotCMS Content Management System

Non-Dockerized

Single Node

This is the simplest recommended deployment on AWS infrastructure. It consists of:

  • An optional instance for a HTTP Proxy / SSL terminator
  • A single dedicated instance running a single dotCMS instance. This embeds elasticsearch and file storage on the dotCMS instance.
  • A database or RDS instance.

Single-node diagram.

Single Node Recipe

single-node:
  data:
    subnets:
      - db-A
    rds:
      - single AZ
      - t2.medium
      - postgresql 10 (latest)
      - db-A subnet
      storage:
          - 100+ GB (General Purpose SSD)

  application:
    subnets:
      - cms-A
    ec2 (cms):
      - qty 1+
      - m5.large
      - AWS Linux 2 AMI
      - cms-A subnet
      storage:
        - '/opt/dotcms': 20 GB (General Purpose SSD)
        - '/opt/dotcms/data': 250+ GB (General Purpose SSD)
        - '/opt/dotcms/logs': 20+ GB (General Purpose SSD)

  http:
    subnets:
      - http-A
    ec2 (http proxy):
      - qty 1
      - t3.medium
      - AWS Linux 2 AMI
      - http-A subnet
    storage:
          - '/opt/dotcms/logs': 20+ GB (General Purpose SSD)

Single Zone High Availability

Single Zone High Availability diagram.

This deployment runs dotCMS in a clustered configuration, which requires a proxy or load balancer that support sticky sessions. This configuration is horizontally scalable as additional dotCMS nodes can be added and removed from the cluster as needed.

  • An optional instance for a HTTP Proxy / SSL terminator
  • A load balancer if the proxy does not already do load balancing
  • Two more more dedicated instances running a dotCMS.
  • This embeds elasticsearch on the dotCMS instance.
  • An NFS file share that is mounted on both dotCMS instances for shared file storage
  • A database or RDS instance.

Single Availability Zone High Availability Recipe

single-az-ha:
  data:
    subnets:
      - db-A
    rds:
      - single AZ
      - m4.large
      - postgresql 10 (latest)
      - db-A subnet
      storage:
          - 100+ GB (General Purpose SSD)
    ec2 (nfs):
          - qty 1
          - m5.large
          - AWS Linux 2 AMI
          - nfs-A subnet
        storage:
              - '/opt/dotcms/data': 500+ GB (General Purpose SSD)
  application:
    subnets:
      - cms-A
    ec2 (cms):
      - qty 1+
      - m5.xlarge
      - AWS Linux 2 AMI
      - cms-A subnet
      storage:
        - '/opt/dotcms': 20 GB (General Purpose SSD)
        - '/opt/dotcms/data': 100+ GB (General Purpose SSD)
        - '/opt/dotcms/logs': 20+ GB (General Purpose SSD)
  http:
    subnets:
      - http-A
    ec2 (http proxy):
      - qty 1
      - t3.medium
      - AWS Linux 2 AMI
      - http-A subnet
    storage:
          - '/opt/dotcms/logs': 20+ GB (General Purpose SSD)

Multi-Zone High Availability

Multi-Zone diagram.

This deployment runs the components that underlie dotCMS in clustered configurations across availability zones.

  • Two instances of a HTTP Proxy / SSL terminator
  • A load balancer if the proxy does not already do load balancing
  • Two more more dedicated instances running a dotCMS.
  • This embeds elasticsearch, hazelcast on the dotCMS instance.
  • Each dotCMS instance can be run in separate availability zones.
  • An NFS file share that is mounted on both dotCMS instances for shared file storage
  • A database or RDS instance.
  • A cold slave database for failover
  • An NFS file share that is mounted on both dotCMS instances for shared file storage - can be mirrored for fault tolerance.

Multi-Zone High Availability Recipe

multi-az:
  data:
    subnets:
      - db-A
      - db-B
      - nfs-A
    rds:
      - multi AZ
      - m4.large
      - postgresql 10 (latest)
      - db-A, db-B subnets
      storage:
          - 100+ GB (General Purpose SSD)
    ec2 (nfs):
          - qty 1
          - m5.large
          - AWS Linux 2 AMI
          - nfs-A subnet
        storage:
              - '/opt/dotcms/data': 500+ GB (General Purpose SSD)
  application:
    subnets:
      - cms-A
      - cms-B
    ec2 (cms):
      - qty 2+ (>=1 per AZ)
      - m5.xlarge
      - AWS Linux 2 AMI
      - cms-A,cms-B subnets
      storage:
        - '/opt/dotcms': 20 GB (General Purpose SSD)
        - '/opt/dotcms/data': 100+ GB (General Purpose SSD)
        - '/opt/dotcms/logs': 20+ GB (General Purpose SSD)
  http:
    subnets:
      - http-A
      - http-B
    ec2 (proxy):
      - qty 2 (>=1 per AZ)
      - c5.large
      - AWS Linux 2 AMI
      - http-A,http-B subnets
    storage:
          - '/opt/dotcms/logs' :20+ GB (General Purpose SSD)

Enterprise dotCMS Environment

Enterprise diagram.

When designing a large scale dotCMS installation, the above configurations can be considered building blocks which can be rolled out to perform various functions in your deployment strategy. The diagram below shows 3 environments, DEV, AUTH and DELIVERY each with different degrees of fault tolerance.

On this page

×

We Dig Feedback

Selected excerpt:

×