亚马逊EC2的常见错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了亚马逊EC2的常见错误相关的知识,希望对你有一定的参考价值。
参考技术A亚马逊Web服务让企业相信他们拥有了自己的私有资源,但是有时候共享云系统反咬一口虔诚的企业。在亚马逊Web服务EC2实例中会看到一个错误RequestLimitExceeded,这也是反咬企业的错误之一。
如果你进行了过多的AWS调用,你的调用就会出现RequestLimitExceeded错误。然而,AWS并没有明确多少调用算“过多”,很可能是因为这是一个复杂的且未公开的算法,AWS也有待进一步开发。但是这意味着没办法预测什么时候这个错误会发生。
解决方法
首先将AWS作为有约束的资源考虑,而且往返周期昂贵。正如你无法一次按字节阅读一个文件,不要在一个小的组块中询问AWS。
如果你希望了解正在运行的每一个实例,可以对每一个实例运行一个单独的AWS调用,或者使用灵活的API来针对AWS EC2实例列表的信息进行单独请求。第一种方法更有可能导致问题。
第二种选择是考虑你多久需要更新一下请求的AWS数据。假定你正在收集实例数据来进行手动扩展决定。频繁更新数据增加了精准度,知道你收到了请求拒绝提示,而且不得不以指数方式退下。要平衡你所请求的数据频率。
然而,在做了这些时候,所有的AWS调用需要防止请求限制异常,你必须决定如何处理。一些调用可以失败,而且你可以基于逻辑尝试一次;其他的调用需要局部再次尝试直到成功为止。
对于第二种情况,很多管理员会编写类似的代码:
int backOffFactor = 0; while(true) try amazonClient.someCall(); break; catch(AmazonServiceException e) if(e.getErrorCode().equalsIgnoreCase(RequestLimitExceeded)) quietSleepSeconds(++backOffFactor);
这个代码是一种改进的强制性重传延迟,通过使用重试之间的更长周期的休眠实现,使用一个实用功能来完成,即所有的管理员编写休眠和捕捉/忽略“InterruptedException”,直到“过多”情况消失。你可以调整多快增加休眠时间,而且也可以创建最高上限限制休眠时间。
这并不是完美的代码,而且可以作为一个lambda表达式在这些语言支持闭包中处理,但是表达了基本的意图:假设失败的可能,并且放慢失败直到系统停止抱怨。
从亚马逊 ec2 实例发送电子邮件时后缀日志显示错误
【中文标题】从亚马逊 ec2 实例发送电子邮件时后缀日志显示错误【英文标题】:postfix log shows error while sending email from amazon ec2 instance 【发布时间】:2014-01-13 09:11:04 【问题描述】:我正在尝试使用亚马逊 EC2 实例上的后缀服务器发送电子邮件。
命令是:sendmail xxxxxx@gmail.com 来自:本地主机 主题:欢迎 这是一封测试邮件.... .
但是我在 /var/log/maillog 文件中收到以下错误。
错误是:
1 月 13 日 09:00:37 ip-172-31-32-76 后缀/拾取 [26635]: C43AE62D00: uid=222 来自=
1 月 13 日 09:00:37 ip-172-31-32-76 后缀/清理[26727]:C43AE62D00: message-id=
1 月 13 日 09:00:37 ip-172-31-32-76 后缀/qmgr[26636]: C43AE62D00: from=,size=435,nrcpt=1(队列活动)
1 月 13 日 09:00:37 ip-172-31-32-76 后缀/smtp[26729]: 连接到 127.0.0.1[127.0.0.1]:2525: 连接被拒绝
1 月 13 日 09:00:37 ip-172-31-32-76 后缀/smtp[26729]: C43AE62D00: to=,relay=none,delay=22,delays=22/0.02/0/0,dsn=4.4.1,status=deferred(连接到 127.0.0.1[127.0.0.1]:2525:连接被拒绝)
我已经隐藏了主机名的详细信息和我要发送到的电子邮件 ID。
请在这方面帮助我。
我还在我的实例的安全组的出站和入站端口中添加了端口 25。
问候, 阿努拉格
【问题讨论】:
【参考方案1】:我认为其他服务正在同一个端口上运行,
"netstat -tap" 运行命令并检查是否同一个端口正在用于某事。
【讨论】:
【参考方案2】:连接到 127.0.0.1[127.0.0.1]:2525:连接被拒绝
有些东西阻止了 Postfix 使用这个端口。 (有时会使用 2525 端口而不是 587 作为替代 smtp 端口。)
验证哪些端口正在监听:
netstat -tanp | grep LISTEN
如果您看到 sendmail(或除 Postfix 之外的任何其他 MTA):
tcp 0 0 127.0.0.1:2525 0.0.0.0:* LISTEN 1014/sendmail
摆脱它:
service sendmail stop
yum remove sendmail
验证第一个表格行的设置:
/etc/postfix/master.cf
如果它说: smtp inet n - n - - smtpd postfix 侦听端口 25 并且您的安全组设置是有意义的。如果这条线说 第2525章 您是在告诉 postfix 在端口 2525 上侦听传入的 smtpd 连接。
上面写着:
submission inet n - n - - smtpd
不以评论开头。
验证 iptables 规则,必要时调整:
iptables -L -n
【讨论】:
【参考方案3】:这可能无关紧要,但我将在此处发布它,因为我很难找到问题的答案。通过编辑我的 /etc/resolv.conf 以使用 Google 的名称服务器而不是它设置为的 10.0.x.x IP,我能够从一个 vagrant 虚拟框获取出站电子邮件:
sudo nano /etc/resolv.conf
更改域名服务器 IP:
nameserver 8.8.8.8
然后你需要重启postfix:
sudo /etc/init.d/postfix restart
【讨论】:
以上是关于亚马逊EC2的常见错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 boto3 创建自动缩放组 amazon ec2 时出现关键错误