-
Notifications
You must be signed in to change notification settings - Fork 120
AWS Configuration
The AWS backend for the autocluster supports two different node discovery, Autoscaling Group membership and EC2 tags.
The following settings impact the behavior of the AWS backend. See the AWS API Credentials section below for additional settings.
- Autoscaling
- Cluster based upon membership in an Autoscaling Group. Set to
true
to enable. - EC2 Tags
- Filter the cluster node list with the specified tags. Use a comma delimiter for multiple tags when specifying as an environment variable.
NOTE: If this is your first time setting up RabbitMQ with the autoscaling cluster and are doing so for R&D purposes, you may want to check out the gavinmroy/alpine-rabbitmq-autocluster Docker Image repository for a working example of the plugin using a CloudFormation template that creates everything required for an Autoscaling Group based cluster.
Environment Variable | Setting Key | Type | Default |
---|---|---|---|
AWSAUTOSCALING |
aws_autoscaling |
atom |
false |
AWS_EC2_TAGS |
aws_ec2_tags |
[string()] |
If aws_autoscaling
is enabled, the EC2 backend will dynamically determine the autoscaling group that the node is a member of and attempt to join the other nodes in the autoscaling group.
If aws_autoscaling
is disabled, you must specify EC2 tags to use to filter the nodes that the backend should cluster with.
As with the AWS CLI, the autocluster
plugin configures the AWS API requests by attempting to resolve the values in a number of steps.
The configuration values are discovered in the following order:
- Explicitly configured in the
autocluster
configuration. - Environment variables
- Configuration file
- EC2 Instance Metadata Service (for Region)
The credentials values are discovered in the following order:
- Explicitly configured in the
autocluster
configuration. - Environment variables
- Credentials file
- EC2 Instance Metadata Service
The following settings and environment variables impact the configuration and credentials behavior. For more information see the Amazon AWS CLI documentation.
Environment Variable | Setting Key | Type | Default |
---|---|---|---|
AWS_ACCESS_KEY_ID |
aws_access_key |
string |
|
AWS_SECRET_ACCESS_KEY |
aws_secret_key |
string |
|
AWS_DEFAULT_REGION |
aws_ec2_region |
string |
us-east-1 |
AWS_DEFAULT_PROFILE |
N/A | string |
|
AWS_CONFIG_FILE |
N/A | string |
|
AWS_SHARED_CREDENTIALS_FILE |
N/A | string |
If you intend to use the EC2 Instance Metadata Service along with an IAM Role that is assigned to EC2 instances, you will need a policy that allows the plugin to discover the node list. The following is an example of such a policy:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"autoscaling:DescribeAutoScalingInstances",
"ec2:DescribeInstances"
],
"Resource": [
"*"
]
}
]
}
The following configuration example enables the autoscaling based cluster discovery and sets the EC2 region to us-west-2
:
[
{rabbit, [
{log_levels, [{autocluster, info}, {connection, info}]}
]},
{autocluster, [
{backend, aws},
{aws_autoscaling, true},
{aws_ec2_region, "us-west-2"}
]}
].
For non-autoscaling group based clusters, the following configuration demonstrates how to limit EC2 instances in the cluster to nodes with the tags region=us-west-2
and service=rabbitmq
. It also specifies the AWS access key and AWS secret key.
[
{rabbit, [
{log_levels, [{autocluster, info}, {connection, info}]}
]},
{autocluster, [
{backend, aws},
{aws_ec2_tags, [{"region", "us-west-2"}, {"service", "rabbitmq"}]},
{aws_ec2_region, "us-east-1"},
{aws_access_key, "AKIDEXAMPLE"},
{aws_secret_key, "wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY"}
]}
].
The following is an example cloud-init that was tested with Ubuntu Trusty for use with an Autoscaling Group:
#cloud-config
apt_update: true
apt_upgrade: true
apt_sources:
- source: deb https://apt.dockerproject.org/repo ubuntu-trusty main
keyid: 58118E89F3A912897C070ADBF76221572C52609D
filename: docker.list
packages:
- docker-engine
runcmd:
- docker run -d --name rabbitmq --net=host -p 4369:4369 -p 5672:5672 -p 15672:15672 -p 25672:25672 gavinmroy/rabbitmq-autocluster
- Home
- Configuration
- [General Settings](General Settings)
- [AWS](AWS Configuration)
- [Consul](Consul Configuration)
- [DNS](DNS Configuration)
- [etcd](etcd Configuration)
- [k8s](k8s Configuration)
- Development
- Roadmap