![钩子失败:“shared-db-relation-changed” 在与 Juju/MAAS 相同的系统中使用 OpenStack 时](https://linux22.com/image/1046444/%E9%92%A9%E5%AD%90%E5%A4%B1%E8%B4%A5%EF%BC%9A%E2%80%9Cshared-db-relation-changed%E2%80%9D%20%E5%9C%A8%E4%B8%8E%20Juju%2FMAAS%20%E7%9B%B8%E5%90%8C%E7%9A%84%E7%B3%BB%E7%BB%9F%E4%B8%AD%E4%BD%BF%E7%94%A8%20OpenStack%20%E6%97%B6.png)
我一直在尝试使用一台机器在 14.04 上设置 OpenStack。我已设法使用两台机器设置 MAAS 并启动 JUJU,一台机器用于 MAAS,另一台机器用于我尝试在其上设置 openstack 的节点。我读过可以做到这一点,但我遇到了问题,基本上是在阅读了这篇文章之后https://help.ubuntu.com/community/UbuntuCloudInfrastructure在网上搜索后我发现 nova-volume 已经被弃用了,所以我一直尝试使用 cinder 来代替。
我一直在使用这些命令:
juju deploy mysql --to 0
juju deploy rabbitmq-server --to 0
juju deploy --config=openstack.cfg keystone --to 0
juju deploy --config=openstack.cfg nova-cloud-controller --to 0
juju deploy --config=openstack.cfg cinder --to 0
juju deploy nova-compute --to 0
juju deploy glance --to 0
juju deploy openstack-dashboard --to 0
juju add-relation keystone mysql
juju add-relation nova-cloud-controller mysql
juju add-relation nova-cloud-controller rabbitmq-server
juju add-relation nova-cloud-controller glance
juju add-relation nova-cloud-controller keystone
juju add-relation cinder nova-cloud-controller
juju add-relation cinder mysql
juju add-relation cinder rabbitmq-server
juju add-relation cinder keystone
juju add-relation nova-compute mysql
juju add-relation nova-compute:amqp rabbitmq-server:amqp
juju add-relation nova-compute glance
juju add-relation nova-compute nova-cloud-controller
juju add-relation glance mysql
juju add-relation glance keystone
juju add-relation openstack-dashboard keystone
juju expose openstack-dashboard
juju expose nova-cloud-controller
正如您所见,我曾经--to 0
说过我希望它们都位于同一节点上。我可以启动所有功能,但在链接所有关系后,我收到此错误:
hook failed: "shared-db-relation-changed"
我还在其中一个日志中看到一条错误消息,提示该用户和该 IP 的访问被拒绝。
我认为问题在于 juju 告诉其他服务 IP 是 192.168.2.101,但 mysql 为用户设置了 127.0.0.1,这意味着他们无法连接。
有任何想法吗?
其他事情:
- 希望这将用于工作中的私有云,其中有六个左右的实例。
- 我不想使用 devstack,因为每个人都说这不适合生产。
答案1
在没有容器化的情况下使用--to
标志是一个非常糟糕的主意。我们将其比作“绿巨人粉碎”。基本上,您将大量服务层叠在一起,而所有这些服务都希望拥有这台机器。
那么,如何才能实现隔离,同时又将所有内容保留在一台机器上?容器化!
该--to
标志非常巧妙,可让您进行共置而不会发生灾难性冲突。支持类似and--to
的语法,它将把服务放置在列出的机器上的容器中。OpenStack 部署中的几乎所有功能都可以安全地放置在 LXC(或 KVM)容器中,Ceph 和 nova-compute 除外。Nova-compute 是因为它本身将配置 VM(而 LXC 中的 KVM 很奇怪),而 Ceph 是因为它需要拥有磁盘。您可以在没有 Ceph 的情况下进行 OpenStack 部署,所以这不是问题,您可以嵌套 KVM,因此在 KVM 上使用 nova-compute 来创建 KVM(或 LXC)应该可以工作。--to lxc:0
--to kvm:0
此时,一切都与性能有关,而您实际上不会通过此设置获得太多性能。但是,这应该足以试行该过程。