[英]Why Rundeck redirect to ec2 private ip on aws if using public ip?
12.34.56.78
(fake)。 21.43.65.87
(fake)。 ip-21.43.65.87
(fake)。 何时访问:
重定向到:
HTTP:// IP-21-34-65-87:4440 /菜单/家
从官方文档中 ,有一个通知:
server.http.host Address/hostname to listen on, default is all addresses "0.0.0.0"
所以我尝试使用该选项启动rundeck:
java -XX:MaxPermSize=256m -Xmx1024m -jar -Dserver.http.host="12.34.56.78" rundeck-launcher-2.0.0.jar
它说不能使用那个地址。 为什么?
运行启动命令后:
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
at com.dtolabs.rundeck.RunServer.run(RunServer.java:128)
at com.dtolabs.rundeck.RunServer.main(RunServer.java:81)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.dtolabs.rundeck.ExpandRunServer.invokeMain(ExpandRunServer.java:758)
at com.dtolabs.rundeck.ExpandRunServer.execute(ExpandRunServer.java:715)
at com.dtolabs.rundeck.ExpandRunServer.run(ExpandRunServer.java:313)
at com.dtolabs.rundeck.ExpandRunServer.main(ExpandRunServer.java:117)
2018-06-08 03:53:11.824:WARN:oejuc.AbstractLifeCycle:main: FAILED org.eclipse.jetty.server.Server@6fc26fb1: java.net.BindException: Cannot assign requested address
java.net.BindException: Cannot assign requested address
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:264)
at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
at org.eclipse.jetty.server.Server.doStart(Server.java:303)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
at com.dtolabs.rundeck.RunServer.run(RunServer.java:128)
at com.dtolabs.rundeck.RunServer.main(RunServer.java:81)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.dtolabs.rundeck.ExpandRunServer.invokeMain(ExpandRunServer.java:758)
at com.dtolabs.rundeck.ExpandRunServer.execute(ExpandRunServer.java:715)
at com.dtolabs.rundeck.ExpandRunServer.run(ExpandRunServer.java:313)
at com.dtolabs.rundeck.ExpandRunServer.main(ExpandRunServer.java:117)
java.net.BindException: Cannot assign requested address
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:264)
at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
at org.eclipse.jetty.server.Server.doStart(Server.java:303)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
at com.dtolabs.rundeck.RunServer.run(RunServer.java:128)
at com.dtolabs.rundeck.RunServer.main(RunServer.java:81)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.dtolabs.rundeck.ExpandRunServer.invokeMain(ExpandRunServer.java:758)
at com.dtolabs.rundeck.ExpandRunServer.execute(ExpandRunServer.java:715)
at com.dtolabs.rundeck.ExpandRunServer.run(ExpandRunServer.java:313)
at com.dtolabs.rundeck.ExpandRunServer.main(ExpandRunServer.java:117)
这可能是由于AWS EC2实例中的公共IPv4寻址 :
“每个接收到公共IP地址的实例也将获得一个外部DNS主机名;例如ec2-203-0-113-25.compute-1.amazonaws.com。我们将外部DNS主机名解析为实例网络外部的实例,以及从实例网络内部实例的私有IPv4地址。通过网络地址转换(NAT)将公共IP地址映射到主要私有IP地址”
如文档中所述,Rundeck可以侦听的IP地址是为其网络接口配置的地址,而不是通过NAT映射的IP地址。
此外,还可以通过在启动jar时添加以下属性来强制Rundeck仅使用IPv4套接字:-Djava.net.preferIPv4Stack = true。
希望能帮助到你。
在这两个配置文件中编辑公共IP后,效果很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.