小编Lui*_*uis的帖子

带有 AWS ALB 的 nginx http 499 状态代码

我有时会在 Web/应用程序服务器(AWS linux AMI + nginx + php)的 nginx 日志中收到 499 状态代码。

\n\n

阅读另一篇文章后,我将 ALB 空闲超时从 60 秒增加到 300 秒。

\n\n

问题仍然存在,我仍然可以看到 499 错误。

\n\n

AWS 控制台中的平均延迟(ALB -> 监控 -> 平均延迟)在 499\xc2\xb4s 时不断增加,这导致请求花费的时间比预期更长,因此这些 499\xc2\xb4s发生。

\n\n

另一个问题是,当问题发生时,ALB 运行状况检查也会收到 499,这会导致 ASG 终止并创建新的 EC2。

\n\n

奇怪的是,我在三个不同的环境中同时获得 499\xc2\xb4s,这些环境位于 3 个不同的自定义 VPC 中,并且除了 AWS AMI(不同的 RDS、ALB、VPC、EFS)之外不共享任何内容。 ..)

\n\n

我在AWS论坛中检查了不同人提出的与此问题相关的几个问题:

\n\n\n\n

如何解决这个问题?

\n

nginx amazon-web-services amazon-elb

6
推荐指数
0
解决办法
5186
查看次数

私有EC2和HTTP流量中的AWS应用程序

我有一个应用程序在私有子网中的EC2实例中运行(以增加额外的安全性),直接从与公有子网关联的面向Internet的NLB接收流量.

我还在公共子网中配置了NAT网关,以便私有EC2实例可以从Internet下载所需的任何内容.

我刚刚得出了下一个结论:

  • 如果我从互联网上请求:http://index.html

  • 私有EC2实例使用NAT网关发回HTTP响应,因此您需要为该NAT处理付费.

https://aws.amazon.com/vpc/pricing/

"数据处理费用适用于通过NAT网关处理的每千兆字节,无论流量的来源或目的地如何"

与私有子网(Web/app服务器所在的位置)关联的路由表具有{ - local; 0.0.0.0/0 - NATGateway}如果删除0.0.0.0/0条目,则对服务器的HTTP请求不起作用.如果我删除NAT网关,我会遇到同样的问题.此外,当我有NAT网关和路由表从私有子网使用它时,当我从Internet做一个简单的HTTP请求时,我也可以在NAT网关的监控选项卡中看到流量 - http:/// index html的

有人遇到过同样的问题吗?我的理解是否正确?

是否有任何解决方法可以避免这种情况?我可以想到以下几点:

  • 将应用程序移动到Web层(在公有子网中),以便EC2实例具有公共IP,因此它不需要NAT网关来响应每个HTTP请求

  • 除了应用程序层之外还创建一个Web层,以便所有流量来自NLB < - > Web Tier < - > App Tier

  • 创建NAT实例而不是NAT网关,这样您就不需要为该NAT处理付费.

谢谢!

amazon-ec2 amazon-web-services amazon-vpc aws-vpc

4
推荐指数
1
解决办法
562
查看次数

公共子网中的AWS NLB和私有子网中的EC2

是否有人在您的VPC的公共子网中配置了NLB,以将流量路由到私有子网中的EC2实例?

使用ELB时,一个好的解决方案是为ELB创建一个安全组,然后为私有EC2实例创建另一个SecurityGroup,允许来自该ELB安全组的传入流量,如下所述:

https://aws.amazon.com/premiumsupport/knowledge-center/public-load-balancer-private-ec2/

“您还可以在实例的安全组上添加一条规则,以允许来自分配给负载平衡器的安全组的流量。例如,如果负载平衡器上的安全组是sg-1234567a,请对关联的安全组进行以下更改与私有实例”

由于您无法将安全组与NLB关联,因此如何使用相同的安全类型来实现此目的?

谢谢!

amazon-ec2 vpc amazon-web-services amazon-vpc

4
推荐指数
2
解决办法
3760
查看次数

Terraform 映射到字符串值

如何使用 Terraform12 将地图变量解析为资源值中的字符串?

我有这个变量:

variable "tags" {
  type                = map
  default = {
    deployment_tool   = "Terraform"
    code              = "123"
  }
}
Run Code Online (Sandbox Code Playgroud)

并且想要这个:{deployment_tool=Terraform, code=123}

我尝试了以下但没有成功:

resource "aws_ssm_parameter" "myparamstore" {
  ***
  value = {
    for tag in var.tags:
      join(",",value, join("=",tag.key,tag.values))
  }
}
Run Code Online (Sandbox Code Playgroud)

amazon-web-services terraform terraform-provider-aws

4
推荐指数
2
解决办法
1679
查看次数

CloudWatch自定义EC2内存指标和具有AutoScaling策略的警报

我的目标是根据我的EC2实例上使用的内存来测试AutoScaling。

为了监视EC2实例内存,我在EC2实例上安装了CloudWatch代理,并创建并配置了CloudWatch代理配置文件,如下所示:https ://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch -Agent.html https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file.html

{
        "metrics": {
                "append_dimensions": {
                        "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
                        "ImageId": "${aws:ImageId}",
                        "InstanceId": "${aws:InstanceId}",
                        "InstanceType": "${aws:InstanceType}"
                },
                "metrics_collected": {
                        "cpu": {
                                "measurement": [
                                        "cpu_usage_idle",
                                        "cpu_usage_iowait",
                                        "cpu_usage_user",
                                        "cpu_usage_system"
                                ],
                                "metrics_collection_interval": 60,
                                "totalcpu": false
                        },
                        "disk": {
                                "measurement": [
                                        "used_percent",
                                        "inodes_free"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ]
                        },
                        "diskio": {
                                "measurement": [
                                        "io_time"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ]
                        },
                        "mem": {
                                "measurement": [
                                        "mem_used_percent"
                                ],
                                "metrics_collection_interval": 60
                        },
                        "swap": {
                                "measurement": [
                                        "swap_used_percent"
                                ],
                                "metrics_collection_interval": 60 …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 amazon-web-services autoscaling amazon-cloudwatch

2
推荐指数
1
解决办法
2196
查看次数

AWS RDS-使用MyISAM表自动备份与快照

我有一个带有MyISAM表的AWS RDS MySQL 5.7数据库,我想将其迁移到自定义VPC中的另一个RDS,并且一旦迁移,请将那些MyISAM表转换为InnoDB。如果我理解正确,那么创建正确的自动备份的唯一方法是使用此处说明的以下过程:“使用不受支持的MySQL存储引擎进行自动备份” https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups .html#Overview.BackupDeviceRestrictions

  1. 停止对MyISAM表的所有活动(即关闭所有会话)。您可以通过对SHOW FULL PROCESSLIST命令返回的每个进程调用mysql.rds_kill命令来关闭所有会话。
  2. 锁定并刷新每个MyISAM表
  3. 创建数据库实例的快照。快照完成后,释放锁并恢复MyISAM表上的活动

有人做过这个程序吗?即使快照包含MyISAM表,每天晚上如何从当前RDS数据库实例成功创建快照?

谢谢!

mysql rds amazon-web-services

1
推荐指数
1
解决办法
670
查看次数