为了对 Openstack 40 捆绑包进行概念验证 (POC) 测试,由于发现问题,我们需要多次重建环境。重建时要考虑的项目清单是什么?请注意,此清单不仅适用于 Openstack 40 捆绑包。此清单中的大部分信息与清理 juju 和端点以重新驱动损坏的部署有关。
IBM POC 遇到了如下所列的一系列问题。添加到此问题的检查表流程列出了可以采取哪些措施来重新推动流程并修复以下问题。
安装 neutron 后,我们在引导节点上丢失了网络连接。这是因为该节点上的桥接设置不正确。seccomp 存在问题,导致无法通信。我们暂时忽略了 seccomp,从而解决了这个问题。
当 juju charm 尝试更改 mysql db 中的密码时失败了。有好几个人都遇到了这个问题,但我们通过脚本没有得到任何结果。为了解决这个问题,我们手动重置密码并重新启动部署。
答案1
使用手动环境执行以下序列。请注意,以下序列假设您使用 virsh 快照。强烈建议设置节点,然后对每个节点进行快照,以便您可以轻松地返回到干净点。对于我们拥有的 IBM POC(使用 openstack 40 包)
- 运行 MAAS/juju 的 VM1。它位于单独的计算节点上。
我们认为此 VM 是 MAAS 部署器或 jujum 部署器服务器。此快照是在 MAAS/juju 安装且未构建环境的情况下制作的。 - VM2、VM2、VM3 和 VM4 在一个节点上运行 ubuntu 14.04 所有这些 VM 的快照都使用网络设置构建,以便相互通信,并且端点上没有 jujud 客户端。
此检查表指示了如果虚拟机是由 MAAS 配置的,则如何快速重建,然后您只需通过 juju 重建即可。MAAS 用于配置。juju 通过手动环境用于配置所有软件。如果它失败或出现问题,那么您可以清理虚拟机,然后使用 juju 手动环境重建。这真的很容易。
1 清理端点
如何清理损坏的端点?
rm -rf /var/lib/juju
rm -rf /etc/init/juju*
ps -ef | grep juju
使用 juju 终止进程机器
如果环境崩溃,如何恢复已损坏虚拟机的快照?
http://kashyapc.com/2011/10/04/snapshotting-with-libvirt-for-qcow2-images/参见页面底部
命令示例:
维尔什之外
virsh snapshot-revert --domain ubuntovm --snapshotname 1441158838
在 virsh
snapshot-revert --domain vm3 --snapshotname 1444163918
2. 检查所有端点虚拟机是否可以访问互联网
这可以通过多种方式实现。我们使用下面的方法,以便在需要时让 Firefox UI 可用于端点。
在每台虚拟机上开始执行以下操作:
x11vnc -create -forever -bg -env FD_TAG=my_xfce_1 -env FD_SESS=xfce -rfbport 5901
请注意,在撰写本文时,您无法将 vnc 用于 ppc64le。请使用 x11vnc。您必须在执行此命令之前安装 x11vnc,这里不讨论。
BSO (IBM) 和 Firefox 访问:确保您可以访问: https://streams.canonical.com/juju/tools/releases/juju-1.24.6-trusty-ppc64el.tgz
3.清理 juju 服务器
由于问题,如何在部署服务器上卸载并重新安装 juju?
您可以按照下面所列的方式彻底清理 juju 部署服务器,也可以快捷方式删除 /root/.juju/ 文件并重新开始。取决于您想要的清理程度。清理 jup /root/.juju/ 并重新开始通常就足够了。请注意,如果您创建了正确的 VM 快照,则不必执行此操作。
彻底删除:
sudo apt-get remove juju-core
sudo apt-get remove --auto-remove juju
sudo apt-get remove juju-quickstart
sudo apt-get remove juju-deployer
/root/.juju/ 删除目录及其下的所有文件目录
例子:
rm -rf /root/.juju/jclient
rm -rf /root/.juju/environments
rm -rf /root/.juju/ssh
rm -rf /root/.juju/.deployer-store-cache
然后重新安装软件包:
sudo add-apt-repository ppa:juju/stable
sudo apt-get update
sudo apt-get install juju-core
sudo apt-get install juju-quickstart
sudo apt-get install juju-deployer
juju-quickstart -i
请注意,如果您正在测试,可能需要将可安装包放在另一个目录中,以免丢失它。建议如下:
/root/.juju2/bundles
4.重新搭建环境(juju部署服务器环境)
只需构建环境,将其标记为默认并保存。不要从 juju-quickstart -i 执行。
对于 IBM POC,我们使用 MAAS 作为初始 VM 配置。完成后,您可以创建快照,之后只需从快照重建 VM。如果您这样做,您使用的 juju 环境是手动定义的,因为目标端点已经配置。
5. Bootstrap 环境
juju bootstrap --show-log --debug -e manual
如果您是第一次使用 juju 或在测试期间使用,请添加 --debug 和 --show-log,因为它会给您带来良好的进步感。
6. 添加所有其他服务器
手动环境将第一台虚拟机放入环境中。然后使用 juju add-machine 命令添加所有其他虚拟机。对于 openstack 40 捆绑包,您总共需要 4 台机器,因此请执行以下操作(显然使用您的 ipaddresses 设置)
juju add-machine ssh:[email protected] -show-log --debug
juju add-machine ssh:[email protected] -show-log --debug
juju add-machine ssh:[email protected] --show-log --debug
7.部署环境
对于 IBM POC,我们必须从 charm store 复制 openstack40.yaml,因为它必须修复为 ppc64el 架构。我们还对 yaml 做了一些其他更改以使其正常工作。
juju-deployer -c /root/.juju/bundles/openstack40.yaml -s 90 -d -v openstack40.yaml
上述 openstack40.yaml 有 3 处变化:1. 使用 ppc64el 2. 为 openstack 仪表板添加选项 debug: 'yes' 3. mysql 的密码 root-password: PASSW0RD sst-password: PASSW0RD
注意:步骤 8 中有与此步骤重叠的部分,请一起阅读步骤 7/8。
8. 在部署过程中修复 lxc 容器配置文件
对于此 POC,lxc 未在前两个 VM 上启动。我们调试得不够深入。不知道其他人是否会遇到此问题,但我们在此列出它以防其他人遇到。
部署的 juju bundle OpenStack 40 的 Linux 容器还没有启动吗?
部署 OpenStack 40 捆绑包时,环境在环境构建时未安装 juju-trusty-lxc-template。当您开始部署时,juju-trusty-lxc-template 最终会安装。因此建议在 juju 状态列表中的前两台机器上安装此组件。必须修复它们。
编辑
/etc/lxc/default.conf
和添加lxc.seccomp = lxc.arch = ppc64le
在部署过程中监视目录
/var/lib/lxc/
用于创建 juju-trusty-lxc-template/ 目录。
我使用 winscp 在部署期间观察文件创建。没有真正的好方法可以做到这一点,所以你必须观察部署过程并时不时检查文件。当 lxc 存在时,处于待处理状态,直到过程后期才开始。所以你有时间修复文件。一旦目录存在
vi /var/lib/lxc/juju-trusty-lxc-template/config and add: lxc.seccomp = lxc.arch = ppc64le
确保末尾有空白行。如果没有,则会添加其他参数,并且它们可能会附加到您错误添加的最后一行。
我们没有找到一个好的方法来做到这一点,所以上面的故障排除问题解释了在部署运行时该做什么。
9. mysql charm 失败并要求设置密码
请参阅其他 askubunto 以了解此问题 mysql 由于“无法为 Percona 设置密码”而失败。请参阅: mysql/percona:无法为 Percona Server“root”用户设置密码 - ppc64el
调试和观察部署的提示:
a) 在 juju 部署机器上
确保你有这个,这样你就可以检查进程。在单独的窗口中重建环境时,在 /root/.juju/ 问题中
juju status > jujudeploylog10132015.txt
定期保存日志,更改文件中的日期
b) 建议在 SSH 中打开两个窗口,一个用于查看 juju-deployer 命令,另一个在手动环境中的第一个 VM 中执行 tail 在 /var/log/juju/tail -f ./all-machines.log 中。这可以让你观察 openstack 环境的构建。
c) 如果使用 openstack 40 包,则 OpenStack horizon UI 位于最后一个 VM 上。检查 juju 状态信息会告诉您 horizon 所处的 lxc。使用:http:///horizon