В современном быстро меняющемся мире цифровых технологий масштабируемость является важнейшим аспектом любого приложения или услуги. AWS Fargate, бессерверная вычислительная система для контейнеров, предоставляет отличную платформу для беспрепятственного масштабирования ваших приложений. В этой статье мы рассмотрим различные методы достижения молниеносного масштабирования с помощью AWS Fargate, используя разговорный язык и практические примеры кода.
- Группы автоматического масштабирования.
AWS Fargate легко интегрируется с группами автоматического масштабирования, что позволяет автоматически регулировать количество задач (контейнеров) на основе предопределенных политик масштабирования. Вы можете настроить правила для увеличения и уменьшения масштаба на основе таких показателей, как загрузка ЦП, сетевой трафик или пользовательские метрики CloudWatch. Ниже приведен пример масштабирования в зависимости от загрузки ЦП:
Resources:
MyFargateService:
Type: "AWS::ECS::Service"
Properties:
Cluster: my-cluster
ServiceName: my-service
TaskDefinition: my-task-definition
DesiredCount: 2
DeploymentConfiguration:
MaximumPercent: 200
MinimumHealthyPercent: 50
LaunchType: FARGATE
NetworkConfiguration:
AwsvpcConfiguration:
Subnets:
- subnet-12345678
SecurityGroups:
- sg-12345678
MyScalingPolicy:
Type: "AWS::ApplicationAutoScaling::ScalingPolicy"
Properties:
PolicyName: my-scaling-policy
PolicyType: StepScaling
ScalingTargetId: my-service
StepScalingPolicyConfiguration:
AdjustmentType: ChangeInCapacity
Cooldown: 60
MetricAggregationType: Average
StepAdjustments:
- MetricIntervalLowerBound: 0
ScalingAdjustment: 1
- Политики масштабирования целевого отслеживания.
AWS Fargate также поддерживает политики масштабирования целевого отслеживания, которые автоматически регулируют желаемое количество задач для поддержания определенного значения метрики. Например, предположим, что вы хотите поддерживать среднюю загрузку ЦП на уровне 70 %:
MyScalingPolicy:
Type: "AWS::ApplicationAutoScaling::ScalingPolicy"
Properties:
PolicyName: my-scaling-policy
PolicyType: TargetTrackingScaling
ScalingTargetId: my-service
TargetTrackingScalingPolicyConfiguration:
TargetValue: 70
PredefinedMetricSpecification:
PredefinedMetricType: ECSServiceAverageCPUUtilization
ScaleOutCooldown: 60
ScaleInCooldown: 60
- Масштабирование вручную.
Если вы предпочитаете масштабировать вручную, вы можете использовать консоль управления AWS, интерфейс командной строки AWS или SDK, чтобы изменить желаемое количество вашего сервиса Fargate. Этот подход полезен, когда вы хотите внести немедленные корректировки или выполнить специальное масштабирование. Например, с помощью AWS CLI:
aws ecs update-service --cluster my-cluster --service my-service --desired-count 5
- Масштабирование на основе событий.
Используйте AWS CloudWatch Events и AWS Lambda для масштабирования на основе событий. Вы можете настроить события CloudWatch для запуска функции Lambda на основе определенных событий, таких как увеличение трафика или внезапный рост спроса. Затем функция Lambda может соответствующим образом изменить желаемое количество вашей службы Fargate.
import boto3
def scale_fargate(event, context):
desired_count = 10 # Modify as per your requirements
service_name = 'my-service'
cluster_name = 'my-cluster'
ecs = boto3.client('ecs')
response = ecs.update_service(
cluster=cluster_name,
service=service_name,
desiredCount=desired_count
)
print(response)