我有时会在 Web/应用程序服务器(AWS linux AMI + nginx + php)的 nginx 日志中收到 499 状态代码。
\n\n阅读另一篇文章后,我将 ALB 空闲超时从 60 秒增加到 300 秒。
\n\n问题仍然存在,我仍然可以看到 499 错误。
\n\nAWS 控制台中的平均延迟(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我有一个应用程序在私有子网中的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处理付费.
谢谢!
是否有人在您的VPC的公共子网中配置了NLB,以将流量路由到私有子网中的EC2实例?
使用ELB时,一个好的解决方案是为ELB创建一个安全组,然后为私有EC2实例创建另一个SecurityGroup,允许来自该ELB安全组的传入流量,如下所述:
https://aws.amazon.com/premiumsupport/knowledge-center/public-load-balancer-private-ec2/
“您还可以在实例的安全组上添加一条规则,以允许来自分配给负载平衡器的安全组的流量。例如,如果负载平衡器上的安全组是sg-1234567a,请对关联的安全组进行以下更改与私有实例”
由于您无法将安全组与NLB关联,因此如何使用相同的安全类型来实现此目的?
谢谢!
如何使用 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) 我的目标是根据我的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
我有一个带有MyISAM表的AWS RDS MySQL 5.7数据库,我想将其迁移到自定义VPC中的另一个RDS,并且一旦迁移,请将那些MyISAM表转换为InnoDB。如果我理解正确,那么创建正确的自动备份的唯一方法是使用此处说明的以下过程:“使用不受支持的MySQL存储引擎进行自动备份” https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithAutomatedBackups .html#Overview.BackupDeviceRestrictions
有人做过这个程序吗?即使快照包含MyISAM表,每天晚上如何从当前RDS数据库实例成功创建快照?
谢谢!
amazon-ec2 ×3
amazon-vpc ×2
amazon-elb ×1
autoscaling ×1
aws-vpc ×1
mysql ×1
nginx ×1
rds ×1
terraform ×1
vpc ×1