PPS*_*ein 1 amazon-ec2 mongodb amazon-web-services amazon-ecs aws-fargate
我已经在 ECS 上创建了 Fargate 集群。但是当我运行我的实例时,我遇到了以下错误消息:
错误:挂钩
orm加载时间过长。确保它正在触发其initialize()回调,或者在 Timeout.tooLong 处将 `sails.config.orm._hookTimeout 设置为更高的值(当前为 20000)作为 _onTimeout
但在 mongoDB EC2 实例中,我已经bindIp这样配置了
# network interfaces
net:
port: 27017
bindIp: 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
但是,当我从本地尝试这个 docker 实例时,我没有发现该错误消息,并且当我在 EC2 中部署该源代码时,也没有发现错误。请让我知道如何解决该问题。谢谢。
您没有指定您从本地 docker 实例运行和连接的 mongodb 是否也是本地的,或者它是否是 AWS 中的同一个 MongoDB 实例(大概您会使用 VPN 或 ssh 隧道来连接)。
那么为什么 docker 实例在本地运行而不是在 AWS 中运行将有点难以解释。我建议它与网络连接相关。
我们在运行 mongodb 的 EC2 实例上运行 ECS Fargate。关键是确保建立安全组关系。
例如,这可能类似于下面的 Cloudformation 示例。您已将 Fargate rAppFargateSecurityGroup 安全组(通过 8080 公开应用程序)附加到您的 Fargate 服务。并且您将 mongodb rMongoDbEc2SecurityGroup 安全组附加到 mongodb EC2 实例(通过端口 27017 公开 mongodb)。
你会注意到这里的粘合剂是“SourceSecurityGroupId: !Ref rAppFargateSecurityGroup”,它允许fargate连接到mongodb。
rAppFargateSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: !Sub '${pAppName}-${pEnvironment} ECS Security Group'
VpcId: !Ref pVpcId
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 8080
ToPort: 8080
SourceSecurityGroupId: !Ref rAppAlbSecurityGroup
rMongoDbEc2SecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: !Sub '${pAppName}-${pEnvironment} MongoDb Security Group'
VpcId: !Ref pVpcId
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 27017
ToPort: 27017
SourceSecurityGroupId: !Ref rAppFargateSecurityGroup
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式配置 Fargate 服务:
rFargateService:
Type: AWS::ECS::Service
Properties:
...
NetworkConfiguration:
AwsvpcConfiguration:
SecurityGroups:
- !Ref pAppFargateSecurityGroup
Subnets:
- !Ref pPrivateSubnetA
- !Ref pPrivateSubnetB
- !Ref pPrivateSubnetC
Run Code Online (Sandbox Code Playgroud)
如果您不使用 VPC 对等互连或专用链接等,则需要(需要)在与 mongodb 主机相同的 VPC 中配置 Fargate 服务子网。
我还应该补充一点,其他可能让你陷入困境的事情是NACL。当然还有本地主机防火墙(如 iptables)。
| 归档时间: |
|
| 查看次数: |
3052 次 |
| 最近记录: |