我正在尝试通过链接http://docs.openstack.org/developer/swift/development_saio.html在Ubuntu 12.04 VM上设置'Swift All In One'系统。
当我在VM上运行命令时:
curl -v -H 'X-Storage-User: test:tester' -H 'X-Storage-Pass: testing' http://127.0.0.1:8080/auth/v1.0
它运行良好,但是如果我将地址“127.0.0.1”更改为“192.168.254.129”(VM IP地址)并且仍然在VM上运行命令 ,如:
curl -v -H 'X-Storage-User: test:tester' -H 'X-Storage-Pass: testing' http://192.168.254.129:8080/auth/v1.0
它失败并暗示“拒绝连接”。
我试图关闭VM上的防火墙,它也不起作用。
在我看来,这两个命令应该成功或失败,因为“127.0.0.1”和“192.168.254.129”都指的是同一个VM机器。
答案 0 :(得分:0)
您发布的示例存在一些潜在问题:
端口不是默认端口。根据您使用的中间件,更改端口可能会非常棘手并导致意外结果。所以不鼓励这样做。
您应该将VM配置为使用具有静态IP配置的专用“仅内部”接口。我不想更改虚拟化主机创建的接口,而是将VIP添加到为仅主机网络创建的接口(例如eth1:0)。
如果仍然没有连接,请(双)确保防火墙没有阻止该接口上的连接。 Ubuntu 12.04使用iptables
作为默认防火墙。因此要么确保服务没有运行,要么刷新输入规则(sudo iptables -F INPUT
)。如果可行,那么不要忘记保存iptables配置(sudo service iptables save
),以便在重启时不会恢复。
您似乎尝试使用v1.0身份验证指定租户。这不受支持。如果您需要指定与用户分开的租户,则必须使用v2.0 authentication。另外,我发现您使用的是已弃用的“存储”标头。如果您想使用v1.0身份验证,则强烈建议您使用X-Auth-User
和X-Auth-Key
标头。
使用swift command-line client验证服务器设置是否正确也是一个好主意。一旦您知道这一点,那么使用curl
可以帮助您更好地理解协议的工作原理。