0

We have an app that is getting deployed through EBS (on tomcat) and every now and then we are getting an error:

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

This causes other issues. As far as I am aware, one of the ways to solve it is by updating the hosts file and with an entry that points ip-172-30-0-167 to real IP address of the server.

My question is, how can I add an entry to hosts file on deployment? I didn't find anything related to it through .ebsextensions.

Maybe there is another way to solve it.

UPDATE

One of the issues that I have is with sending emails:

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

and it looks like on deployment the proposed approach didn't help:

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]
Shurik Agulyansky
  • 2,607
  • 2
  • 34
  • 76

2 Answers2

3

Well, I said that it was common and then looked into some other code and found that I'm setting the hostname in .ebextensions. I have something like:

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

to add a hostname. Note that I'm not sending email so I'm not sure if you need the real hostname. If you do that could be changed to:

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

The ultimate problem is that the Elastic Beanstalk sets the hostname to something that is not in /etc/hosts as you said.

stdunbar
  • 16,263
  • 11
  • 31
  • 53
  • This solution has couple of issues. I need to know the internal IP for that, which I don't (well, not always). + It will do this on every deployment, so I'll end up with bunch of these entries. As for your last question, I didn't say that is sets anything in not hosts file. I think it leaves it as is from the bare bones ubuntu image. – Shurik Agulyansky Jan 27 '17 at 22:00
  • The curl command gets you the internal IP (the private IP). You're right - my deployment process takes down all instances and spins up new ones so if you reuse the instances you'll get multiple entries. That won't actually hurt anything but it's arguably not correct. – stdunbar Jan 27 '17 at 22:04
  • Another question though: what is this: http://169.254.169.254/latest/meta-data/local-ipv4 ? – Shurik Agulyansky Jan 27 '17 at 22:05
  • http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html - Elastic Beanstalk machines are just EC2's. – stdunbar Jan 27 '17 at 22:27
  • But for that I still need to know the private IP, right? – Shurik Agulyansky Jan 27 '17 at 22:30
  • That's what the curl statement gives you - the "local-ipv4" address. Try it. – stdunbar Jan 27 '17 at 22:31
  • So, what is this IP then? `169.254.169.254` – Shurik Agulyansky Jan 27 '17 at 22:31
  • Take a look at the docs I linked to - it is a linked local address. – stdunbar Jan 27 '17 at 22:45
  • This approach didn't seem to help – Shurik Agulyansky Jan 28 '17 at 00:12
  • Just validated the if I set everything in hosts file, all works as expected. However, the approach with doing it on deployment like you proposed, is not really working. Nothing is getting added into the hosts file. – Shurik Agulyansky Jan 28 '17 at 01:06
0

I think this is caused by enableDnsHostnames parameter in your VPC config.

Take a look at AWS error - sudo: unable to resolve host ip-10-0-xx-xx

Thanks!

Community
  • 1
  • 1