【问题标题】:Restarting a service in Openstack installed using Devstack在使用 Devstack 安装的 Openstack 中重新启动服务
【发布时间】:2014-06-28 21:34:59
【问题描述】:

如何重启使用 devstack 安装的特定 openstack-service?

【问题讨论】:

    标签: openstack devstack


    【解决方案1】:

    您可以使用systemctl start devstack@* 重新启动每个 devstack 服务

    【讨论】:

      【解决方案2】:

      新版本的 devstack 发生了变化。

      默认情况下,DevStack 将所有服务作为 systemd 单元运行 文件。 Systemd 现在是几乎所有 Linux 的默认初始化系统 发行版和 systemd 编码并解决了许多与 进程运行不佳。

      假设单位为n-cpu,让例子更清晰。

      Enable a unit (allows it to be started):
      sudo systemctl enable devstack@n-cpu.service
      

      欲了解更多信息,请访问https://docs.openstack.org/devstack/latest/systemd.html

      【讨论】:

        【解决方案3】:

        以root身份运行此命令(例如:启动keystone服务)

        $ systemctl start devstack@keystone.service
        

        您可以根据需要使用restartstopstatus 等代替start

        您也可以使用通配符。如下所示。

        $ systemctl start devstack@*

        => 它将启动所有 devstack 服务。

        【讨论】:

          【解决方案4】:

          rejoin-stack.sh 已根据 git commit 删除,您需要执行 screen -c /path/to/devstack_install/stack-screenrc

          【讨论】:

            【解决方案5】:

            运行屏幕命令

             screen -r 
            

            现在,您将在屏幕窗口中看到 Openstack 服务列表;像屏幕底部的“q-svc”、“horizo​​n”、“key-access”; 当前活动屏幕将标有 *,如 "horizo​​n*"

            要移动到特定的 Openstack 服务,请按

                     "Ctrl + a" and "0-9" 
                     Example: "Ctrl + a" 5
            

            跳转到实际服务;您还可以使用以下命令移至下一个或上一个屏幕

                     "Ctrl + a" and n  --- > for next
                     "Ctrl + a" and p  --- > for previous
            

            现在停止和启动服务;转到相应的屏幕窗口并按

                     "Ctrl + c" 
            

            停止服务;现在,这将在相应的屏幕窗口中显示 bash 屏幕;要启动服务,请按向上箭头标记在屏幕窗口中查看最后执行的命令,然后按 Enter 启动相同的命令。

            屏幕可以更轻松地启动和停止配置为与 Devstack 一起运行的 Openstack 服务。

            【讨论】:

            • 但是在我用 kill -9 命令杀死进程后如何启动它。在我杀死 -9 之后我没有看到 n-cpu 屏幕
            • 你应该知道二进制文件的路径和传递给二进制文件的参数;不建议在屏幕外杀死 -9;转到屏幕停止和启动服务;那将是正确的选择。
            【解决方案6】:

            重新加入堆栈屏幕

            ./rejoin-stack.sh

            并使用ctrl+a+"移动到指定的服务页面,然后输入你需要去的屏幕编号。

            按 9,然后按 ctrl+C。该服务现在将停止。重新运行以下 devstack 命令以启动服务: (例如对于新星网络) cd /opt/stack/nova && /usr/bin/nova-network --config /etc/nova/nova.conf || echo "n-net 启动失败" | tee "/opt/stack/stack/n-net.failure"

            按 Ctrl+d 可从堆栈屏幕分离。

            【讨论】:

            • 但是在我用 kill -9 命令杀死进程后如何启动它。在我杀死 -9 后我没有看到 n-cpu 屏幕
            【解决方案7】:

            当 ./stack.sh 完成时,openstack 表面上正在运行。

            作为您的堆栈用户,您可以发出以下命令:

            screen -dr
            

            这应该为每个服务打开一个带有窗口的屏幕会话。服务从那些屏幕终端会话或 pty 运行。

            您可以简单地终止该进程并从这些 pty 重新启动它。

            当然适用标准的逻辑操作顺序。如果 mysql 死了,nova-api 将无法很好地启动。 keystone 关闭也是如此。所以,请注意依赖关系。

            如果您不确定如何在终端中执行服务,请先执行ps auxww | grep service 或类似的操作。这应该提供一些关于如何再次运行二进制文件的见解。

            祝你好运。

            【讨论】:

            • 有没有办法通过类似于 service xxxxx restart 的命令来做到这一点?我想自动化这个。目前做不到。
            • 这是我几年前写的……现在devstack中可能有服务定义,但我对此表示怀疑。这不是 devstack 的用途。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2023-03-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多