はじめまして。
現在AWS Fargateを用いてredashをserver及びworkerコンテナに分け構築しています。(postgres=RDS、redis=ElastiCacheを使用しております。)
CloudFormationにてデプロイ後、serverコンテナへのALBのヘルスチェックがタイムアウトで失敗してしまいます。
awsサポートセンターにて同現象について問い合わせたところ、
- セキュリティーグループの見直し
- ヘルスチェック猶予時間を設ける
以上についてご指摘を頂き、修正を行いましたが、依然としてヘルスチェックに失敗しております。
そこで自身の、コンテナ定義及びECSサービス部分の記述に間違いがあり正常に稼働できてないのではないかと思い、こちらにて質問させていただいております。
抽象的な質問になってしまい恐縮ですが、
原因等ご存じの方がいらっしゃいましたら、ご指摘いただけますと幸いです。
よろしくお願いいたします。
以下server部分及びALBのテンプレートになります。
ALB
ALBForRedash:
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
Properties:
Name: redash-alb
Subnets:
- !ImportValue RedashVPCSubnet-PublicSubnet2A
- !ImportValue RedashVPCSubnet-PublicSubnet2C
SecurityGroups:
- !ImportValue RedashSecurityGroupe
Tags:
- Key: Name
Value: ResdashECSALB
Scheme: internet-facing
## RedashECSALBTargetGroup
ALBTargetGroupForRedash:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Properties:
Name: redash-alb-targetgroup
VpcId: !ImportValue RedashVPCSubnet-VPC
HealthCheckPath: '/'
HealthCheckIntervalSeconds: 30
Matcher:
HttpCode: 200-302
Port: 5000
Protocol: HTTP
TargetType: ip
## RedashECSALBListener
ALBListenerForRedash:
Type: AWS::ElasticLoadBalancingV2::Listener
Properties:
LoadBalancerArn: !Ref ALBForRedash
Port: 80
Protocol: HTTP
DefaultActions:
- Type: forward
TargetGroupArn: !Ref ALBTargetGroupForRedash
serverタスク定義
ECSTaskDefinitionApplication:
Type: 'AWS::ECS::TaskDefinition'
Properties:
Family: redash-server
RequiresCompatibilities:
- 'FARGATE'
Cpu: 1024
Memory: 2048
NetworkMode: 'awsvpc'
ExecutionRoleArn: !GetAtt IAMRoleForRedashTaskExecution.Arn
ContainerDefinitions:
- Image: redash/redash:8.0.0.b32245
Name: 'redash-server'
Command:
- 'server'
Environment:
- Name: 'PYTHONUNBUFFERED'
Value: '0'
- Name: 'REDASH_LOG_LEVEL'
Value: 'INFO'
- Name: 'REDASH_REDIS_URL'
Value: !Sub redis://${ElasticacheClusterForRedash.RedisEndpoint.Address}:${ElasticacheClusterForRedash.RedisEndpoint.Port}/0
- Name: 'REDASH_DATABASE_URL'
Value: !Sub postgresql://test:{{resolve:secretsmanager:${RDSUserPasswordForRedash}::password}}@${RDSForRedash.Endpoint.Address}/redash
- Name: 'REDASH_HOST'
Value: ''
- Name: 'REDASH_ALLOW_SCRIPTS_IN_USER_INPUT'
Value: 'true'
- Name: 'REDASH_DATE_FORMAT'
Value: 'YY/MM/DD'
Cpu: 1024
Memory: 2048
PortMappings:
- ContainerPort: 5000
HostPort: 5000
Protocol: 'tcp'
LogConfiguration:
LogDriver: 'awslogs'
Options:
awslogs-group: !Ref LogGroupForRedashServer
awslogs-region: !Ref AWS::Region
awslogs-stream-prefix: 'server'
ECSセキュリティーグループ
EC2SecurityGroupECSRedash:
Type: 'AWS::EC2::SecurityGroup'
Properties:
GroupName: redash-ecs-security-group
GroupDescription: 'ecs security group for redash'
VpcId: !ImportValue RedashVPCSubnet-VPC
SecurityGroupIngress:
- SourceSecurityGroupId: !ImportValue RedashSecurityGroupe
FromPort: 5000
ToPort: 5000
IpProtocol: 'tcp'
ECSサービス
ECSServiceRedash:
Type: 'AWS::ECS::Service'
DependsOn:
- IAMServiceLinkedRoleForECSRedashService
- RDSForRedash #RDSインスタンス
- ElasticacheClusterForRedash #redisインスタンス
- ALBListenerForRedash #リスナールール
Properties:
Cluster: !Ref ECSClusterForRedash
DesiredCount: 1
LaunchType: 'FARGATE'
LoadBalancers:
- ContainerName: 'redash-server'
ContainerPort: 5000
TargetGroupArn: !Ref ALBTargetGroupForRedash
HealthCheckGracePeriodSeconds: 600
NetworkConfiguration:
AwsvpcConfiguration:
AssignPublicIp: ENABLED
SecurityGroups:
- !Ref EC2SecurityGroupECSRedash
Subnets:
- !ImportValue RedashVPCSubnet-PublicSubnet2A
- !ImportValue RedashVPCSubnet-PublicSubnet2C
PlatformVersion: '1.4.0'
TaskDefinition: !Ref ECSTaskDefinitionApplication