0

认证后,如果我调用任何方法,比如os.compute().flavors().list()or os.images().list(),我会得到connect timed out. 为什么会这样?

我在 GoogleCloudsPlataform VM 上使用 RDO packstack 建立了一个 OpenStack。我正在对域和项目进行身份验证。我尝试过没有项目的身份验证,并且方法调用没有超时,但是响应是错误的,例如,如果我调用列表风味,则不返回任何风味。

如果我使用 API 端点进行这些调用,它就可以工作;如果我使用相同的信息(用户、通行证、域、项目)进行身份验证并调用风味或图像,它就可以工作。

授权码:

OSClient.OSClientV3 os = OSFactory.builderV3()
                .endpoint("http://host:5000/v3")
                .credentials("admin", "pass", domain)
                .scopeToProject(project)
                .authenticate();

os.compute().flavors().list(); // "connection timed out" code

端点身份验证调用(有效):

curl -i \
  -H "Content-Type: application/json" \
  -d '
{ "auth": {
    "identity": {
      "methods": ["password"],
      "password": {
        "user": {
          "name": "admin",
          "domain": { "id": "default" },
          "password": "pass"
        }
      }
    },
    "scope": {
      "project": {
        "name": "admin",
        "domain": { "id": "default" }
      }
    }
  }
}' \
"http://host:5000/v3/auth/tokens" ; echo

端点图像调用:

curl -v -i -H "Content-Type: application/json" -H "X-Auth-Token:token" "http://host:8774/v2/images"; echo
4

1 回答 1

0

一般来说,如果您的 HTTP 请求超时,需要检查的内容是:

  • 您是否使用了正确的主机名或 IP 地址?
  • 您是否使用正确的端口?
  • 访问是否被防火墙(某处)阻止?
  • 错误配置的网络路由(某处)是否阻碍了访问?

由于您使用的是openstack4j,因此您可能可以通过打开 HTTP 请求的日志记录来了解正在发生的事情:

OSFactory.enableHttpLoggingFilter(true);

检查它是否正在向 V2 Glance 端点发送请求。

如果失败,请使用 IDE 的 Java 调试器来确定哪些请求被发送到哪些服务端点。

于 2019-04-19T06:35:32.023 回答