我有一个在Google Cloud Plataform VM上运行的OpenStack。尽管我创建了一个带有外部IP的openstack4j操作系统,但当我调用任何方法时,我都会得到connect timed out,因为openstack4j使用的是内部IP。在调用像os.compute().flavors().list()这样的方法时,我可以手动设置我的主机吗
OSClient.OSClientV3 os = OSFactory.builderV3()
.endpoint("http://external_ip:5000/v3")
.credentials("admin", "pass", domain)
.scopeToProject(project)
.authenticate();
os.compute().flavors().list();使用OSFactory.enableHttpLoggingFilter(true);,我发现flavors.list正在调用http://internal_ip:8774/v2.1/.../flavors/detail。
另一件奇怪的事情是,如果我删除.scopeToProject(project)并调用相同的flavors.list方法,则调用外部ip,但不返回任何风格(有问题,因为它应该坚持一个项目)。
为什么flavors.list呼叫我的GCP虚拟机的内部IP?我可以设置为external吗?
发布于 2019-04-20 13:27:23
正如@larsks建议的那样,我必须告诉openstak4j需要使用外部IP。为了解决这个问题,我用我的公网IP添加了一个指令:.withConfig(Config.newConfig().withEndpointNATResolution("x.x.x.x"))。新的验证码:
OSClient.OSClientV3 os = OSFactory.builderV3()
.endpoint("http://external_ip:5000/v3")
.credentials("admin", "pass", domain)
.scopeToProject(project)
.authenticate();https://stackoverflow.com/questions/55767604
复制相似问题