亚马逊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 时出现关键错误

代理到 Node/Express 上游时不常见的 NGINX 错误/超时(连接到上游时上游超时)

亚马逊ec2上的Websockets连接失败

[AWS][计算]AWS EC2 SSH连接错误排查

突然无法使用 EC2 亚马逊服务器登录 filezilla

如何在亚马逊 ec2 实例上设置 solr