Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 无法在AWS VPC内绑定到0.0.0.0_Amazon Web Services_Amazon Vpc_Vpc - Fatal编程技术网

Amazon web services 无法在AWS VPC内绑定到0.0.0.0

Amazon web services 无法在AWS VPC内绑定到0.0.0.0,amazon-web-services,amazon-vpc,vpc,Amazon Web Services,Amazon Vpc,Vpc,我正在尝试在EC2中建立一个普通的Jboss(Wildfly-8.0.0.Final),尽管我相信任何应用程序都会有这个问题 在默认空间中的普通ubuntu trusty VM上,我解包并配置它在addr any:0.0.0上运行 在运行时,这将成功解析为实例的本地IP: 15:26:43167信息[org.hornetq.jms.server](ServerService线程池--59)HQ121005:检测到“http连接器”连接器的“主机”值“0.0.0.0”无效。切换到“ip-123-4

我正在尝试在EC2中建立一个普通的Jboss(Wildfly-8.0.0.Final),尽管我相信任何应用程序都会有这个问题

在默认空间中的普通ubuntu trusty VM上,我解包并配置它在addr any:0.0.0上运行

在运行时,这将成功解析为实例的本地IP:

15:26:43167信息[org.hornetq.jms.server](ServerService线程池--59)HQ121005:检测到“http连接器”连接器的“主机”值“0.0.0.0”无效。切换到“ip-123-45-67-8.us我的区域。计算。内部”。如果此新地址不正确,请手动配置连接器以使用正确的连接器

现在,我启动了同一台机器的AMI映像,在VPC中。VPC设置有公共IP和公共DNS。连接并配置路由表/安全组/etc,以便可以使用公共DNS通过ssh连接到新的VPC实例。启动jboss,它无法连接到0.0.0.0:

16:28:47,603 WARN  [org.hornetq.jms.server] (ServerService Thread Pool -- 58) HQ122017: Tried to correct invalid "host" value "0.0.0.0" for "http-connector" connector, but received an exception.: java.net.UnknownHostException: ip-123-45-67-8: ip-123-45-67-8
    at java.net.InetAddress.getLocalHost(InetAddress.java:1473) [rt.jar:1.7.0_65]
    at org.hornetq.jms.server.impl.JMSServerManagerImpl.correctInvalidNettyConnectorHost(JMSServerManagerImpl.java:1883) [hornetq-jms-server-2.4.1.Final.jar:]
    at org.hornetq.jms.server.impl.JMSServerManagerImpl.internalCreateCFPOJO(JMSServerManagerImpl.java:1379) [hornetq-jms-server-2.4.1.Final.jar:]
    at org.hornetq.jms.server.impl.JMSServerManagerImpl.internalCreateCF(JMSServerManagerImpl.java:1324) [hornetq-jms-server-2.4.1.Final.jar:]
    at org.hornetq.jms.server.impl.JMSServerManagerImpl.access$1300(JMSServerManagerImpl.java:103) [hornetq-jms-server-2.4.1.Final.jar:]
    at org.hornetq.jms.server.impl.JMSServerManagerImpl$5.runException(JMSServerManagerImpl.java:1187) [hornetq-jms-server-2.4.1.Final.jar:]
    at org.hornetq.jms.server.impl.JMSServerManagerImpl.runAfterActive(JMSServerManagerImpl.java:1845) [hornetq-jms-server-2.4.1.Final.jar:]
    at org.hornetq.jms.server.impl.JMSServerManagerImpl.createConnectionFactory(JMSServerManagerImpl.java:1173) [hornetq-jms-server-2.4.1.Final.jar:]
    at org.jboss.as.messaging.jms.ConnectionFactoryService$1.run(ConnectionFactoryService.java:66) [wildfly-messaging-8.0.0.Final.jar:8.0.0.Final]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_65]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_65]
    at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_65]
    at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.1.Final.jar:2.1.1.Final]
解决方法是更新/etc/hosts文件以包含主机名: 在/etc/hosts之前: 127.0.0.1本地主机

在/etc/hosts之后: 主机名文件localhost中的127.0.0.1 val


在VPC内运行有什么不同,实例可以找到其主机名,但无法成功绑定到它?

这很可能是VPC配置的问题

DHCP选项集确定主机通过DHCP提供的域名后缀,以便在查找不合格的主机名(包括其自己的主机名)时使用。您将在
/etc/resolv.conf
中看到此配置的结果

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.0.2.2
search ec2.internal
此处,
ec2.internal
是US-East-1中VPC的默认值。其他区域有不同的格式,但这些域仅存在于VPC中,用于查找内部主机

当VPC内的一个实例(比如192.0.2.100)从其主机名查找其地址时,它将查找ip-192-0-2-100.ec2.internal。根据AWS提供的DNS服务器,如果您在VPC配置中启用了
DNS解析
DNS主机名
,则这是一个有效的主机名

如果已将DHCP选项集配置为使用自己的
example.com
域,则分配给实例的主机名(同样,例如ip-192-0-2-100)必须是该域内的有效主机名,因此ip-192-0-2-100.example.com必须是可解析的主机名,并且需要解析到正确的地址

这在EC2 Classic中不是问题,因为这一层的基础结构配置不能更改或禁用。每个EC2 classic实例都可以根据AWS提供的内部
*.internal
域查找自己的主机名,并获得自己的IP


此错误配置问题的另一个症状是,当您使用
sudo
时,会看到
sudo:无法解析主机ip-x-x-x
警告。

这很可能是VPC配置的问题

DHCP选项集确定主机通过DHCP提供的域名后缀,以便在查找不合格的主机名(包括其自己的主机名)时使用。您将在
/etc/resolv.conf
中看到此配置的结果

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.0.2.2
search ec2.internal
此处,
ec2.internal
是US-East-1中VPC的默认值。其他区域有不同的格式,但这些域仅存在于VPC中,用于查找内部主机

当VPC内的一个实例(比如192.0.2.100)从其主机名查找其地址时,它将查找ip-192-0-2-100.ec2.internal。根据AWS提供的DNS服务器,如果您在VPC配置中启用了
DNS解析
DNS主机名
,则这是一个有效的主机名

如果已将DHCP选项集配置为使用自己的
example.com
域,则分配给实例的主机名(同样,例如ip-192-0-2-100)必须是该域内的有效主机名,因此ip-192-0-2-100.example.com必须是可解析的主机名,并且需要解析到正确的地址

这在EC2 Classic中不是问题,因为这一层的基础结构配置不能更改或禁用。每个EC2 classic实例都可以根据AWS提供的内部
*.internal
域查找自己的主机名,并获得自己的IP


此错误配置问题的另一个症状是,当您使用
sudo
并看到
sudo:无法解析主机ip-x-x-x-x
警告时。

为什么认为0.0.0无效?不是,我不知道,也不担心。jboss似乎就是这样记录它正在定位一个接口的。为什么0.0.0.0被认为是无效的?不是,我不知道,也不担心。这似乎就是jboss记录它正在定位一个接口的方式。明白了。DNS主机名和DNS解析已启用,但DNS通信被安全组阻止。添加了一条规则,允许与/etc/resolv.conf中列出的服务器进行DNS通信。VPC内外的日志现在匹配了,明白了。DNS主机名和DNS解析已启用,但DNS通信被安全组阻止。添加了一条规则,允许与/etc/resolv.conf中列出的服务器进行DNS通信。VPC内外的日志现在匹配。