Separate replica from master

Not having a specific placement strategy for replica might cause it
to be deployed on the same ec2-instance as the master.

If tasks are running on the same instance, both source and destination
IP are the same when being received by the target instance and this
causes packets to be dropped as per convention for L4 networking[1].

Ensure replica is never deployed to the same ec2-instance as the
master by creating separate ASG for master and replica.

Since the cluster is now composed by different autoscaling groups,
rather than one, the DESIRED_CAPACITY variable cannot be used to specify
the size of the cluster as a whole, as each autoscaling group has its
own size.

The master ASG is defined as such:
* minimum:1 - desired:1 - maximum: configurable via the MASTER_MAX_COUNT

The slave ASG does not yet have the ability to scale (it's in the roadmap
to do[2]):
* minimum:1 - desired:1 - maximum:1

[1]https://aws.amazon.com/premiumsupport/knowledge-center/target-connection-fails-load-balancer/
[2]https://bugs.chromium.org/p/gerrit/issues/detail?id=13619

Bug: Issue 13879
Change-Id: I306610e9b5720363f730765d9f9332d0b7f52814
6 files changed
tree: 1496c78ccc2bb61b5645ea99221d0d2c00063091
  1. common-templates/
  2. dual-master/
  3. geo-location-routing/
  4. gerrit/
  5. ldap/
  6. load-test-fleet/
  7. master-slave/
  8. monitoring/
  9. single-master/
  10. .gitignore
  11. common.env
  12. Configuration.md
  13. Docker.md
  14. LICENSE
  15. Makefile.common
  16. Prerequisites.md
  17. README.md
  18. Secrets.md
README.md

Gerrit AWS Templates

Those are a collection of AWS CloudFormation templates and scripts to deploy Gerrit in AWS.

The aim is to provide some guidelines and example on how to deploy different Gerrit setups in the Cloud using AWS as provider.

Outline

Overview

The goal of Gerrit AWS Templates is to provide fully-functional Gerrit installations to helps users deploying Gerrit on AWS by providing out-of-the-box templates.

With Gerrit AWS Templates, developers and administrator can create a production-ready installation on the cloud in minutes and in a repeatable way, allowing them to focus on fine tuning of the Gerrit configuration to suit the user needs.

The provided CloudFormation templates automate the entire creation and deployment of the infrastructure and the application.

Pre-requisites

To manage your AWS services via command line you will need to install AWS CLI and set it up to point to your account.

To build gerrit and related-components' images Docker

To manipulate aws cloudformation outputs jq

Templates

External services

This is a list of external services that you might need to setup your stack and some suggestions on how to easily create them.

SMTP Server

If you need to setup a SMTP service Amazon Simple Email Service can be used. Details how setup Amazon SES can be found here.

To correctly setup email notifications Gerrit requires ssl protocol on default port 465 to be enabled on SMTP Server. It is possible to setup Gerrit to talk to standard SMTP port 25 but by default all EC2 instances are blocking it. To enable port 25 please follow this link.

LDAP Server

If you need a testing LDAP server you can find details on how to easily create one in the LDAP folder.