v1
Clustered Installation on AWS

Clustered Installation on AWS

⚠️
v1 is no longer supported. Please upgrade to v2

With this installation model, some of the components required to run the GameBench platform are deployed to different servers.

The GameBench platform is composed of:

  • Front-end
  • Back-end
  • User control
  • Redis
  • Elasticsearch
  • Postgres
  • MTA

We’ll use these Amazon services:

  • EC2
  • Elasticache
  • Elasticsearch
  • RDS
  • SES
  • EFS

Requirements

  • Linux
  • Docker 1.12+
  • Docker Compose 1.6.0+
  • Credentials for our private Docker registry
  • A valid GameBench enterprise license
  • Only ports 80, 443 and 8090 should be externally accessible

Getting started

Please note the instance types and storage amounts listed here are only appropriate for a lightly used deployment.

Create an AWS RDS Postgres instance

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html

  • Engine: PostgreSQL, version 9.6
  • Instance type: db.t2.micro
  • Storage: 20 GiB

Make a note of the endpoint once the instance has been created.

Please create a database with the name elm-integration.

Create an AWS Elasticache Redis cluster

https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/GettingStarted.html

  • Redis 5.x
  • Instance type: cache.t2.micro
  • Transit encryption should not be enabled
  • Set an auth token

Make a note of the endpoint once the cluster has been created.

Create an AWS Elasticsearch instance

https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-gsg.html

  • Version: 6.x
  • Instance type: t2.small.elasticsearch
  • Storage: 10 GiB

Make a note of the VPC endpoint.

Configure Amazon SES

https://docs.aws.amazon.com/ses/latest/DeveloperGuide/Welcome.html

You’ll need to create a verified domain or email address if you don’t already have an appropriate one.

Be aware of the SES sandbox for new accounts. If you have not yet moved out of the sandbox, please consult https://docs.aws.amazon.com/ses/latest/DeveloperGuide/request-production-access.html. Within the sandbox, emails can only be sent to verified domains or addresses.

Create an EFS file system

https://docs.aws.amazon.com/efs/latest/ug/creating-using.html

Make a note of the DNS name.

Note: this step is not necessary if you are planning to run a single GameBench backend server.

Create an EC2 instance

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html

It’s not a requirement but for the purposes of this guide, we’ll pick the Canonical Ubuntu 18.04 AMI.

  • Instance type: t2.micro
  • Storage: 15 GiB

Install:

If you’re using EFS, create /home/ubuntu/gamebench and mount to it the EFS file system created previously.

License

Copy your license zip onto the server.

mkdir /home/ubuntu/gamebench/license
cd /home/ubuntu/gamebench/license
unzip /path/to/license.zip

Log into the GameBench Docker registry

You’ll need your credentials for our Docker registry supplied to you by your account representative. Please get in touch with support@gamebench.net if you are unable to log in and we’ll be happy to assist.

If you have been provided with quay.io credentials:

docker login -u <username> quay.io

Alternatively if you have docker.gamebench.net credentials:

docker login -u <username> docker.gamebench.net

Please note that docker.gamebench.net is deprecated and will be unavailable from 27/08/2019.

Download install scripts

In /home/ubuntu, run:

curl -L -s --output gbserver.sh https://downloads.gamebench.net/gbserver.sh/latest
chmod +x gbserver.sh
curl -L -s --output gbctl https://downloads.gamebench.net/gbctl/latest
chmod +x gbctl

Run install script

./gbserver.sh

You’ll be required to provide the following information:

  • Backend port: 8090
  • Backend host: Public IP address of EC2 instance
  • Frontend host: Public IP address of EC2 instance
  • License directory: /home/ubuntu/license
  • TLS enabled: no
  • External Elasticsearch: yes
  • Elasticsearch host: Elasticsearch VPC endpoint domain
  • Elasticsearch port: 443
  • Elasticsearch user: elastic
  • Elasticsearch password:
  • Elasticsearch SSL: yes
  • External Redis: yes
  • Redis host: Elasticache Redis cluster endpoint
  • Redis port: 6379
  • Redis auth: Elasticache Redis auth token
  • External Postgres: yes
  • Postgres host: RDS instance endpoint
  • Postgres port: 5432
  • Postgres username: Postgres user created during RDS instance set-up
  • Postgres password: Postgres password set during RDS instance set-up
  • External mail: yes
  • Mail host: See the SMTP settings in SES management
  • Mail port: 587
  • Mail user: See the SMTP settings in SES management
  • Mail password: See the SMTP settings in SES management
  • Mail from: Dependent on your SES configuration
  • Mail secure: no
    • TLS negotiation occurs so a secure connection will be used
  • Bind mount GameBench directory: yes
    • Note: Not necessary if you are only running a single GameBench backend server.
  • GameBench directory: /home/ubuntu/gamebench
    • Only appears if bind mount option is answered yes

Enabling HTTPS

Create an ALB routing traffic to the EC2 instance. Forward HTTPS traffic. You can configure HTTP to redirect to HTTPS here too.

Re-run:

./gb-server.sh
  • Backend port: 443
  • Backend host: backend.gbexample.com - replace “gbexample.com” with your chosen domain
  • Frontend host: web.gbexample.com - replace “gbexample.com” with your chosen domain
  • TLS enabled: yes
  • Publish ports to host: no

Create a docker-compose.override.yml file with the contents:

version: '3'
services:
  proxy:
    image: nginx
    volumes:
      - ./nginx:/etc/nginx/conf.d
    ports:
      - 80:80

Create nginx/proxy.conf file with the contents:

server {
        listen 80;

        server_name web.gbexample.com;

        location / {
                proxy_pass http://frontend:80;
        }
}

server {
        listen 80;

        server_name backend.gbexample.com;

        location / {
                proxy_pass http://backend:5000;
        }
}

Create an initial admin user

Please see our create admin user documentation.

Last updated on