【问题标题】:How to customize hosts file in Elastic Beanstalk?如何在 Elastic Beanstalk 中自定义主机文件?
【发布时间】:2017-06-13 16:27:03
【问题描述】:

我们有一个通过 EBS(在 tomcat 上)部署的应用程序,但我们时不时地遇到错误:

unable to resolve host ip-172-30-0-167

这会导致其他问题。 据我所知,解决此问题的方法之一是更新主机文件并使用将ip-172-30-0-167 指向服务器真实IP 地址的条目。

我的问题是,如何在部署时向主机文件添加条目?我没有通过 .ebsextensions 找到任何与之相关的内容。

也许还有其他方法可以解决。

更新

我遇到的一个问题是发送电子邮件:

ERROR g.plugins.mail.MailMessageBuilder: Failed to send email
Jan 27 15:40:30 unknown staging:  org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: 501 Syntax: EHLO hostname
Jan 27 15:40:30 unknown staging:  . Failed messages: javax.mail.MessagingException: 501 Syntax: EHLO hostname
Jan 27 15:40:30 unknown staging:    at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:417) ~[spring-context-support-4.1.8.RELEASE.jar:4.1.8.RELEASE]
Jan 27 15:40:30 unknown staging:    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:345) ~[spring-context-support-4.1.8.RELEASE.jar:4.1.8.RELEASE]
Jan 27 15:40:30 unknown staging:    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:340) ~[spring-context-support-4.1.8.RELEASE.jar:4.1.8.RELEASE]
Jan 27 15:40:30 unknown staging:    at org.springframework.mail.javamail.JavaMailSender$send$0.call(Unknown Source) ~[na:na]
Jan 27 15:40:30 unknown staging:    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) ~[groovy-2.4.5.jar:2.4.5]
Jan 27 15:40:30 unknown staging:    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) ~[groovy-2.4.5.jar:2.4.5]
Jan 27 15:40:30 unknown staging:    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) ~[groovy-2.4.5.jar:2.4.5]
Jan 27 15:40:30 unknown staging:    at grails.plugins.mail.MailMessageBuilder$_sendMessage_closure1.doCall(MailMessageBuilder.groovy:124) [mail-2.0.0.RC6.jar:na]
Jan 27 15:40:30 unknown staging:    at grails.plugins.mail.MailMessageBuilder$_sendMessage_closure1.doCall(MailMessageBuilder.groovy) [mail-2.0.0.RC6.jar:na]
Jan 27 15:40:30 unknown staging:    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_111]
Jan 27 15:40:30 unknown staging:    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_111]
Jan 27 15:40:30 unknown staging:    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_111]
Jan 27 15:40:30 unknown staging:    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_111]
Jan 27 15:40:30 unknown staging:    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) [groovy-2.4.5.jar:2.4.5]
Jan 27 15:40:30 unknown staging:    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) [groovy-2.4.5.jar:2.4.5]
Jan 27 15:40:30 unknown staging:    at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) [groovy-2.4.5.jar:2.4.5]
Jan 27 15:40:30 unknown staging:    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1019) [groovy-2.4.5.jar:2.4.5]
Jan 27 15:40:30 unknown staging:    at groovy.lang.Closure.call(Closure.java:426) [groovy-2.4.5.jar:2.4.5]
Jan 27 15:40:30 unknown staging:    at groovy.lang.Closure.call(Closure.java:420) [groovy-2.4.5.jar:2.4.5]
Jan 27 15:40:30 unknown staging:    at groovy.lang.Closure.run(Closure.java:507) [groovy-2.4.5.jar:2.4.5]
Jan 27 15:40:30 unknown staging:    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_111]
Jan 27 15:40:30 unknown staging:    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_111]
Jan 27 15:40:30 unknown staging:    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_111]
Jan 27 15:40:30 unknown staging:  Caused by: javax.mail.MessagingException: 501 Syntax: EHLO hostname
Jan 27 15:40:30 unknown staging:    at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1481) ~[mail-1.4.1.jar:1.4.1]
Jan 27 15:40:30 unknown staging:    at com.sun.mail.smtp.SMTPTransport.helo(SMTPTransport.java:917) ~[mail-1.4.1.jar:1.4.1]
Jan 27 15:40:30 unknown staging:    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:417) ~[mail-1.4.1.jar:1.4.1]
Jan 27 15:40:30 unknown staging:    at javax.mail.Service.connect(Service.java:345) ~[javax.mail-api-1.5.1.jar:1.5.1]
Jan 27 15:40:30 unknown staging:    at org.springframework.mail.javamail.JavaMailSenderImpl.connectTransport(JavaMailSenderImpl.java:486) ~[spring-context-support-4.1.8.RELEASE.jar:4.1.8.RELEASE]
Jan 27 15:40:30 unknown staging:    at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:406) ~[spring-context-support-4.1.8.RELEASE.jar:4.1.8.RELEASE]
Jan 27 15:40:30 unknown staging:    ... 22 common frames omitted
Jan 27 15:40:30 unknown staging:  ERROR g.plugins.mail.MailMessageBuilder: Failed to send email
Jan 27 15:40:30 unknown staging:  org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: 501 Syntax: EHLO hostname
Jan 27 15:40:30 unknown staging:  . Failed messages: javax.mail.MessagingException: 501 Syntax: EHLO hostname
Jan 27 15:40:30 unknown staging:    at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:417) ~[spring-context-support-4.1.8.RELEASE.jar:4.1.8.RELEASE]
Jan 27 15:40:30 unknown staging:    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:345) ~[spring-context-support-4.1.8.RELEASE.jar:4.1.8.RELEASE]
Jan 27 15:40:30 unknown staging:    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:340) ~[spring-context-support-4.1.8.RELEASE.jar:4.1.8.RELEASE]
Jan 27 15:40:30 unknown staging:    at org.springframework.mail.javamail.JavaMailSender$send$0.call(Unknown Source) ~[na:na]
Jan 27 15:40:30 unknown staging:    at grails.plugins.mail.MailMessageBuilder$_sendMessage_closure1.doCall(MailMessageBuilder.groovy:124) [mail-2.0.0.RC6.jar:na]
Jan 27 15:40:30 unknown staging:    at grails.plugins.mail.MailMessageBuilder$_sendMessage_closure1.doCall(MailMessageBuilder.groovy) [mail-2.0.0.RC6.jar:na]
Jan 27 15:40:30 unknown staging:    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_111]
Jan 27 15:40:30 unknown staging:    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_111]
Jan 27 15:40:30 unknown staging:    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_111]
Jan 27 15:40:30 unknown staging:    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_111]
Jan 27 15:40:30 unknown staging:    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) [groovy-2.4.5.jar:2.4.5]
Jan 27 15:40:30 unknown staging:    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) [groovy-2.4.5.jar:2.4.5]
Jan 27 15:40:30 unknown staging:    at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) [groovy-2.4.5.jar:2.4.5]
Jan 27 15:40:30 unknown staging:    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1019) [groovy-2.4.5.jar:2.4.5]
Jan 27 15:40:30 unknown staging:    at groovy.lang.Closure.call(Closure.java:426) [groovy-2.4.5.jar:2.4.5]
Jan 27 15:40:30 unknown staging:    at groovy.lang.Closure.call(Closure.java:420) [groovy-2.4.5.jar:2.4.5]
Jan 27 15:40:30 unknown staging:    at groovy.lang.Closure.run(Closure.java:507) [groovy-2.4.5.jar:2.4.5]
Jan 27 15:40:30 unknown staging:    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_111]
Jan 27 15:40:30 unknown staging:    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_111]
Jan 27 15:40:30 unknown staging:    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_111]
Jan 27 15:40:30 unknown staging:  Caused by: javax.mail.MessagingException: 501 Syntax: EHLO hostname
Jan 27 15:40:30 unknown staging:    at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1481) ~[mail-1.4.1.jar:1.4.1]
Jan 27 15:40:30 unknown staging:    at com.sun.mail.smtp.SMTPTransport.helo(SMTPTransport.java:917) ~[mail-1.4.1.jar:1.4.1]
Jan 27 15:40:30 unknown staging:    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:417) ~[mail-1.4.1.jar:1.4.1]
Jan 27 15:40:30 unknown staging:    at javax.mail.Service.connect(Service.java:345) ~[javax.mail-api-1.5.1.jar:1.5.1]
Jan 27 15:40:30 unknown staging:    at org.springframework.mail.javamail.JavaMailSenderImpl.connectTransport(JavaMailSenderImpl.java:486) ~[spring-context-support-4.1.8.RELEASE.jar:4.1.8.RELEASE]
Jan 27 15:40:30 unknown staging:    at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:406) ~[spring-context-support-4.1.8.RELEASE.jar:4.1.8.RELEASE]
Jan 27 15:40:30 unknown staging:    ... 19 common frames omitted

在部署时,建议的方法似乎没有帮助:

ERROR net.sf.ehcache.Cache: Unable to set localhost. This prevents creation of a GUID. Cause was: ip-172-35-11-183: ip-172-35-11-183: Name or service not known
Jan 27 15:35:25 unknown staging:  java.net.UnknownHostException: ip-172-35-11-183: ip-172-35-11-183: Name or service not known
Jan 27 15:35:25 unknown staging:    at java.net.InetAddress.getLocalHost(InetAddress.java:1505) ~[na:1.8.0_111]
Jan 27 15:35:25 unknown staging:    at net.sf.ehcache.Cache.<clinit>(Cache.java:200) ~[ehcache-core-2.4.3.jar:na]
Jan 27 15:35:25 unknown staging:    at net.sf.ehcache.config.ConfigurationHelper.createCache(ConfigurationHelper.java:302) [ehcache-core-2.4.3.jar:na]
Jan 27 15:35:25 unknown staging:    at net.sf.ehcache.config.ConfigurationHelper.createDefaultCache(ConfigurationHelper.java:218) [ehcache-core-2.4.3.jar:na]
Jan 27 15:35:25 unknown staging:    at net.sf.ehcache.CacheManager.configure(CacheManager.java:599) [ehcache-core-2.4.3.jar:na]
Jan 27 15:35:25 unknown staging:    at net.sf.ehcache.CacheManager.init(CacheManager.java:358) [ehcache-core-2.4.3.jar:na]

【问题讨论】:

  • 在 Tomcat Elastic Beanstalks 上总是出错 - 它会导致什么问题?
  • 在我们的例子中,似乎电子邮件发送阻塞 + 有时 nginx 代理需要在部署后重新启动。
  • @stdunbar 所以,这种方法似乎并没有真正帮助。查看帖子的更新

标签: amazon-web-services tomcat amazon-elastic-beanstalk hosts-file


【解决方案1】:

好吧,我说这很常见,然后查看了其他一些代码,发现我在 .ebextensions 中设置了主机名。我有类似的东西:

01_command:
    echo 127.0.0.1 `hostname` >> /etc/hosts"

添加主机名。请注意,我没有发送电子邮件,所以我不确定您是否需要真实的主机名。如果您这样做,可以更改为:

01_command:
    echo `curl -s http://169.254.169.254/latest/meta-data/local-ipv4` `hostname` >> /etc/hosts"

最终的问题是 Elastic Beanstalk 将主机名设置为您所说的 /etc/hosts 中不存在的内容。

【讨论】:

  • 这个解决方案有几个问题。我需要知道内部 IP,我不知道(嗯,并非总是如此)。 + 它会在每次部署时执行此操作,所以我最终会得到一堆这些条目。至于你的最后一个问题,我没有说在非主机文件中设置任何内容。我认为它从裸露的 ubuntu 图像中保持原样。
  • curl 命令为您获取内部 IP(私有 IP)。你是对的 - 我的部署过程会删除所有实例并启动新实例,因此如果您重用这些实例,您将获得多个条目。这实际上不会伤害任何东西,但可以说是不正确的。
  • 还有一个问题:这是什么:169.254.169.254/latest/meta-data/local-ipv4?
  • docs.aws.amazon.com/AWSEC2/latest/UserGuide/… - Elastic Beanstalk 机器只是 EC2 的。
  • 但是我仍然需要知道私有IP,对吧?
【解决方案2】:

我认为这是由您的 VPC 配置中的 enableDnsHostnames 参数引起的。

看看AWS error - sudo: unable to resolve host ip-10-0-xx-xx

谢谢!

【讨论】:

    猜你喜欢
    • 2012-08-13
    • 2011-12-24
    • 2014-05-09
    • 2012-08-30
    • 2020-10-23
    • 2020-05-15
    • 2014-11-16
    • 2019-01-16
    • 2015-11-05
    相关资源
    最近更新 更多