使用 openstack-installer 安装 Openstack 后,我可以使用 Landscape。经过一段时间,重新启动所有程序,以及与 juju 进行一些斗争之后 (使用 juju-core 1.20.x 重启后 Landscape 无法运行)、Landscape 再次运行,Openstack 也是如此。
问题是没有计算机向 Landscape 报告。我每 5 分钟收到一封电子邮件,主题为“[Landscape 警报] 过去 5 分钟内有 18 台计算机未联系 Landscape“,即使所有服务器都已启动并正在运行。
我在 Openstack 上也遇到了严重的问题(无法启动新实例、备份卷等),我猜测这个问题是相关的。
答案1
通过对原始问题的评论进行调试后,我们发现了问题所在。
当使用自签名证书时,apache2 charm 有一个错误,它会生成有效期仅为 30 天的证书。
发生的事情是它已过期。这个问题已在新版本的 charm 中得到修复,因此我们将升级到该版本并触发新证书生成。
请按照以下步骤升级charm并重新生成证书:
- 跑步
juju ssh apache2/0 'sudo rm -f /etc/ssl/certs/apache2.cert /etc/ssl/private/apache2.key /etc/ssl/certs/landscape_server_ca.crt'
。 - 运行
juju upgrade-charm apache2
。这将升级 charm,新的 charm 一旦发现没有证书(在第一步中删除),就会生成一对新的证书。 - 观察输出
juju debug-log
直到它平静下来。 - 运行
juju ssh apache2/0 'sudo service apache2 restart'
(我将对此步骤提交错误报告:它本来不应该是必需的,但现在是需要的)
现在我们需要告诉客户端这个新证书。这有点棘手,因为客户端正在 Landscape/0 单元上的另一个 Juju 环境中运行,类似 Inception。请按照以下步骤操作:
- 获取新证书:
juju scp apache2/0:/etc/ssl/certs/apache2.cert .
- 确保权限为 0644:
chmod 0644 apache2.cert
- 确认其将于 10 年后过期:
openssl x509 -in apache2.cert -noout -enddate
- 将其上传至landscape/0:
juju scp apache2.cert landscape/0:/tmp
- 登录到景观/0:
juju ssh landscape/0
- 更改景观用户 shell:
sudo chsh -s /bin/bash landscape
- 變成景觀:
sudo -u landscape -i
- 指向云juju环境:
export JUJU_HOME=/var/lib/landscape/juju-homes/$(ls -1t /var/lib/landscape/juju-homes/|head -n 1)
- 运行此命令以确认 juju 在该环境中正常运行:
juju status
。您应该会看到很多 OpenStack 服务 - 告诉 Landscape 客户端有关新证书的信息:
juju set landscape-client ssl-public-key="base64:$(cat /tmp/apache2.cert|base64)"
- 观察输出,
juju debug-log
直到它安静下来 - 在所有地方重启 Landscape 客户端:
juju run --service landscape-client 'sudo service landscape-client restart'
- 如果上述命令失败,提示下属服务不受支持,请运行以下命令:
juju run --all 'sudo service landscape-client restart'
您可以登录客户端并 tail -f broker.log 文件,查看 SSL 错误是否仍然存在。