Clustered Installation on AWS
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:
- Docker
- Docker Compose
- https://docs.docker.com/compose/install/
- Download binary and move into place
unzip
nfs-common
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
- Only appears if bind mount option is answered
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.