控制 Glance 服务器

本节描述了启动、停止和重新加载 Glance 服务器程序的方法。

启动服务器

启动 Glance 服务器有两种方法

  • 手动调用服务器程序

  • 使用 glance-control 服务器守护进程包装程序

我们建议使用第二种方法。

手动启动服务器

第一种方法是直接调用服务器程序,传入命令行选项和一个用于配置服务器应用程序的 paste.deploy 配置文件作为参数。

注意

Glance 附带一个 etc/ 目录,其中包含示例 paste.deploy 配置文件,您可以将其复制到标准配置目录并根据自己的需要进行调整。特别是,bind_host 必须正确设置。

如果您在命令行中 没有 指定配置文件,Glance 将尽力在以下目录之一中找到配置文件,并在找到第一个配置文件时停止

  • $CWD

  • ~/.glance

  • ~/

  • /etc/glance

  • /etc

搜索的文件名取决于服务器应用程序名称。因此,如果您正在启动 API 服务器,将搜索 glance-api.conf

如果未找到配置文件,您将看到一个错误,例如

$ glance-api
ERROR: Unable to locate any configuration file. Cannot load application glance-api

这是一个示例,显示了如何在 shell 中手动启动 glance-api 服务器。

$ sudo glance-api --config-file glance-api.conf --debug &
jsuh@mc-ats1:~$ 2011-04-13 14:50:12    DEBUG [glance-api] ********************************************************************************
2011-04-13 14:50:12    DEBUG [glance-api] Configuration options gathered from config file:
2011-04-13 14:50:12    DEBUG [glance-api] /home/jsuh/glance-api.conf
2011-04-13 14:50:12    DEBUG [glance-api] ================================================
2011-04-13 14:50:12    DEBUG [glance-api] bind_host                      65.114.169.29
2011-04-13 14:50:12    DEBUG [glance-api] bind_port                      9292
2011-04-13 14:50:12    DEBUG [glance-api] debug                          True
2011-04-13 14:50:12    DEBUG [glance-api] default_store                  file
2011-04-13 14:50:12    DEBUG [glance-api] filesystem_store_datadir       /home/jsuh/images/
2011-04-13 14:50:12    DEBUG [glance-api] ********************************************************************************
2011-04-13 14:50:12    DEBUG [routes.middleware] Initialized with method overriding = True, and path info altering = True
2011-04-13 14:50:12    DEBUG [eventlet.wsgi.server] (21354) wsgi starting up on http://65.114.169.29:9292/

$ ps aux | grep glance
root     20009  0.7  0.1  12744  9148 pts/1    S    12:47   0:00 /usr/bin/python /usr/bin/glance-api glance-api.conf --debug
jsuh     20017  0.0  0.0   3368   744 pts/1    S+   12:47   0:00 grep glance

只需将配置文件作为参数传递给 --config-file 选项(上面的示例使用了 etc/glance-api.conf 示例配置文件),然后是您想要使用的任何其他选项。(--debug 在上面用于显示服务器启动时显示的一些调试输出。使用 --help 调用服务器程序以查看可以在命令行上指定的全部可用选项。)

有关通过 paste.deploy 配置文件配置服务器的更多信息,请参阅题为 配置 Glance 服务器 的章节

请注意,服务器在之前的示例中使用标准 shell 后台指示符 & 对自身进行 守护进程化。对于大多数用例,我们建议使用 glance-control 服务器守护进程包装程序进行守护进程化。有关使用 glance-control 进行守护进程化的更多详细信息,请参阅下文。

使用 glance-control 程序启动服务器

启动 Glance 服务器的第二种方法是使用 glance-control 程序。glance-control 是一个包装脚本,允许用户以更适合自动化和脚本编写的方式启动、停止、重新启动和重新加载其他 Glance 服务器程序。

通过 glance-control 程序启动的服务器始终被 守护进程化,这意味着服务器程序进程在后台运行。

要使用 glance-control 启动 Glance 服务器,只需调用 glance-control,后跟服务器和单词“start”,以及您希望提供的任何命令行选项。以以下方式使用 glance-control 启动服务器

$ sudo glance-control [OPTIONS] <SERVER> start [CONFPATH]

注意

您必须使用 sudo 程序来运行 glance-control,因为服务器程序的 pid 文件目前写入 /var/run/glance/。

这是一个示例,显示了如何使用 glance-control 包装脚本启动 glance-api 服务器。

$ sudo glance-control api start glance-api.conf
Starting glance-api with /home/jsuh/glance.conf

$ ps aux | grep glance
root     20038  4.0  0.1  12728  9116 ?        Ss   12:51   0:00 /usr/bin/python /usr/bin/glance-api /home/jsuh/glance-api.conf
jsuh     20042  0.0  0.0   3368   744 pts/1    S+   12:51   0:00 grep glance

glance-control 启动 Glance 服务器程序所使用的配置文件相同,并且您可以(如上面的示例所示)在启动服务器时指定配置文件。

为了使您启动的 glance 服务能够监视意外死亡并在必要时重新启动,请使用以下选项

$ sudo glance-control [service] start --respawn ...

请注意,这将导致 glance-control 本身保持运行。另请注意,故意停止的服务不会重新启动,快速跳动(进程死亡发生在上次启动后一秒内)的服务也不会重新启动。

默认情况下,使用 glance-control 启动时会丢弃 glance 服务的输出。为了通过 syslog 捕获此类输出,请使用以下选项

$ sudo glance-control --capture-output ...

停止服务器

如果您手动启动了 Glance 服务器并且没有使用 & 后台函数,只需通过键入 Ctrl-C 向服务器进程发送终止信号

如果您使用 glance-control 程序启动了 Glance 服务器,则可以使用 glance-control 程序停止它。只需执行以下操作

$ sudo glance-control <SERVER> stop

如本示例所示

$ sudo glance-control api stop
Stopping glance-api  pid: 17602  signal: 15

重新启动服务器

您可以使用 glance-control 程序重新启动服务器,如下所示

$ sudo glance-control api restart etc/glance-api.conf
Stopping glance-api  pid: 17611  signal: 15
Starting glance-api with /home/jpipes/repos/glance/trunk/etc/glance-api.conf

重新加载服务器

您可以使用 glance-control 程序重新加载服务器,如下所示

$ sudo glance-control api reload
Reloading glance-api (pid 18506) with signal(1)

重新加载会向主进程发送 SIGHUP 信号,并导致新的配置设置被提取,而不会中断正在运行的服务(前提是 bind_host 或 bind_port 没有更改)。