This AWS autoscaler will start EC2 instances if Airflow does not get matched offers from mesos.
To open an issue, please use this place: https://github.com/m3scluster/mesos-airflow-autoscaler-aws/issues
- Airflow min 2.1.x
- Apache Mesos min 1.6.x
- Airflow Mesos Provider min 2.0
- AWS
ENV | Default | Description |
---|---|---|
AIRFLOW_MESOS_SCHEDULER | 127.0.0.1:11000 | IP Address and port of the Apache Airflow Mesos provider |
LOGLEVEL | debug | Loglevel (info, warn, debug) |
WAIT_TIME | 2m | The time in minutes the autoscaler have to wait until it will create a mesos instance in AWS |
WAIT_TIME_OVERWRITE_INSTANCE | 15m | If the DAG is still after 15m in the queue, the autoscaler will ignore the custom instance type to start a new ec2 instance. |
REDIS_SERVER | 127.0.0.1:6480 | Redis server and port |
REDIS_PASSWORD | Redis DB password | |
REDIS_DB | 2 | Redis DB Number |
REDIS_PREFIX | asg | Prefix for every Redis key |
API_USERNAME | user | Username to authenticate against the Apache Airflow Mesos provider |
API_PASSWORD | password | Password to authenticate against the Apache Airflow Mesos provider |
AWS_SECRET | AWS Secret | |
AWS_REGION | eu-central-1 | AWS Region |
AWS_WAIT_TIME | 10m | The time the autoscaler have to wait until it check if the EC2 intance can be terminated. |
AWS_LAUNCH_TEMPLATE_ID | The AWS Launche Template ID | |
AWS_INSTANCE_FALLBACK | t3a.2xlarge | Fallback instance type will be used if there are no more ec2 resources in AWS. |
AWS_INSTANCE_DEFAULT_ARCHITECTURE | x86_64 | Default architecture of ec2 instance. |
AWS_INSTANCE_ALLOW | "t3.,r5.,c5." | Only these instances are allowed. |
AWS_INSTANCE_MAX_AGE | 6h | Max age on an instance. That should prevent instances to run endless. |
MESOS_AGENT_SSL | false | Enable SSL for the communication to the Mesos agent |
MESOS_AGENT_USERNAME | Username of the Mesos Agent | |
MESOS_AGENT_PASSWORD | Password of the Mesos Agent | |
MESOS_AGENT_PORT | 5051 | Port of the Mesos Agent |
MESOS_AGENT_TIMEOUT | 10m | Mesos agent timeout |
SSL | false | Enable SSL for the communication to the Airflow Scheduler API |
DAG_TTL | 6h | Set the TTL for DAG'keys in Redis. |
These autoscaler support the following executor config parameters:
executor_config={
"mem_limit": 2048,
"instance_type": "t2.xlarge"
}
- With the help if the
mem_limit
parameter, the autoscaler will determin which AWS instance is the right one. instance_type
will overwrite the mem_limit and just crate a instance of that type.
AWS - https://docs.aws.amazon.com/code-samples/latest/catalog/go-ec2-create_instance.go.html