配置控制台

概述

Bare Metal 服务中可用的控制台类型有三种

节点图形控制台

图形控制台驱动程序需要配置并运行 ironic-novncproxy 服务。每个支持的驱动程序如下所述。

redfish-graphical

适用于 Redfish 主机子集的一个驱动程序。启动控制台将启动一个容器,该容器暴露一个 VNC 服务器供 ironic-novncproxy 附加。附加后,将启动一个浏览器,显示基于 HTML5 的控制台,支持以下主机

  • Dell iDRAC

  • HPE iLO

  • Supermicro

[DEFAULT]
enabled_hardware_types = redfish
enabled_console_interfaces = redfish-graphical,no-console

fake-graphical

用于演示工作图形控制台基础设施的一个驱动程序。启动控制台将启动一个容器,该容器暴露一个 VNC 服务器供 ironic-novncproxy 附加。附加后,将启动一个浏览器,显示一个动画。

[DEFAULT]
enabled_hardware_types = fake-hardware
enabled_console_interfaces = fake-graphical,no-console

节点网页控制台

可以在 Bare Metal 服务中以以下方式配置网页控制台

  • 在 ironic conductor 节点上安装 shellinabox。对于 RHEL/CentOS,shellinabox 包不在基本仓库中,用户必须启用 EPEL 仓库,更多信息请参见 FedoraProject 页面

    警告

    Shell In A Box 已被 Ironic 社区认为已废弃。原始维护者已停止维护该项目,因此该项目已被分叉。由此产生的 分叉 已经多年没有更新,也被认为已废弃。因此,shellinabox 支持已被 Ironic 社区弃用。

    安装示例

    Ubuntu

    sudo apt-get install shellinabox
    

    RHEL/CentOS/Fedora

    sudo dnf install shellinabox
    

    您可以在 shellinabox 页面 上找到更多关于 shellinabox 的信息。

    您可以选择在 shellinabox 中使用 SSL 证书。如果您想在 shellinabox 中使用 SSL 证书,则应安装 openssl 并生成 SSL 证书。

    1. 安装 openssl,例如

      Ubuntu

      sudo apt-get install openssl
      

      RHEL/CentOS/Fedora

      sudo dnf install openssl
      
    2. 生成 SSL 证书,这里是一个示例,您可以在 openssl 页面 上找到更多关于 openssl 的信息

      cd /tmp/ca
      openssl genrsa -des3 -out my.key 1024
      openssl req -new -key my.key  -out my.csr
      cp my.key my.key.org
      openssl rsa -in my.key.org -out my.key
      openssl x509 -req -days 3650 -in my.csr -signkey my.key -out my.crt
      cat my.crt my.key > certificate.pem
      
  • 自定义 Bare Metal 服务配置文件 (/etc/ironic/ironic.conf) 中的控制台部分。如果您想在 shellinabox 中使用 SSL 证书,则应指定 terminal_cert_dir。例如

    [console]
    
    #
    # Options defined in ironic.drivers.modules.console_utils
    #
    
    # Path to serial console terminal program. Used only by Shell
    # In A Box console. (string value)
    #terminal=shellinaboxd
    
    # Directory containing the terminal SSL cert (PEM) for serial
    # console access. Used only by Shell In A Box console. (string
    # value)
    terminal_cert_dir=/tmp/ca
    
    # Directory for holding terminal pid files. If not specified,
    # the temporary directory will be used. (string value)
    #terminal_pid_dir=<None>
    
    # Time interval (in seconds) for checking the status of
    # console subprocess. (integer value)
    #subprocess_checking_interval=1
    
    # Time (in seconds) to wait for the console subprocess to
    # start. (integer value)
    #subprocess_timeout=10
    
  • 将控制台参数附加到 Bare Metal 服务的 PXE 启动配置文件 (/etc/ironic/ironic.conf)。请参阅 将内核参数附加到启动实例 中的配置参考。

  • 启用 ipmitool-shellinabox 控制台接口,例如

    [DEFAULT]
    enabled_console_interfaces = ipmitool-shellinabox,no-console
    
  • 配置节点网页控制台。

    如果节点使用硬件类型,例如 ipmi,则将节点的控制台接口设置为 ipmitool-shellinabox

    baremetal node set <node> --console-interface ipmitool-shellinabox
    

    启用网页控制台,例如

    baremetal node set <node> \
        --driver-info <terminal_port>=<customized_port>
    baremetal node console enable <node>
    

    检查是否已启用控制台,例如

    baremetal node validate <node>
    

    禁用网页控制台,例如

    baremetal node console disable  <node>
    baremetal node unset <node> --driver-info <terminal_port>
    

    <terminal_port> 取决于驱动程序。此字段的实际名称可以在驱动程序属性中检查,例如

    baremetal driver property list <driver>
    

    对于 ipmi 硬件类型,此选项是 ipmi_terminal_port。为 <customized_port> 提供一个自定义端口号,例如 8023,此自定义端口用于网页控制台 url。

    如下获取节点的网页控制台信息

    baremetal node console show <node>
    +-----------------+----------------------------------------------------------------------+
    | Property        | Value                                                                |
    +-----------------+----------------------------------------------------------------------+
    | console_enabled | True                                                                 |
    | console_info    | {u'url': u'http://<url>:<customized_port>', u'type': u'shellinabox'} |
    +-----------------+----------------------------------------------------------------------+
    

    您可以使用上述 url 通过网页浏览器打开网页控制台。如果 console_enabledfalseconsole_infoNone,则网页控制台已禁用。如果您想启动网页控制台,请参阅 配置 节点 网页 控制台 部分。

    注意

    在启用控制台时,您可能会遇到一个错误消息,该消息显示 控制台 子进程 启动失败。 等待控制台子进程启动超时或出错,节点 以及 [server] 找不到任何可用端口!。此错误来自 shellinabox 本身,而不是与 BMC 的通信。此问题的一个潜在原因是已经运行了 shellinabox 守护进程,它们阻塞了配置的端口(如果合适,请删除它们并重试启用控制台)。

节点串口控制台

节点的串口控制台使用 socat 实现。它受 ipmiirmcredfish 硬件类型支持。

注意

在任何硬件类型上使用 ipmitool-socat 控制台接口需要在节点的 driver_info 字段中设置 ipmi 连接参数。

可以在 Bare Metal 服务中配置串口控制台,如下所示

  • 在 ironic conductor 节点上安装 socat。此外,socat 需要在 ironic-conductor 服务使用的 $PATH 环境变量中。

    安装示例

    Ubuntu

    sudo apt-get install socat
    

    RHEL/CentOS/Fedora

    sudo dnf install socat
    
  • 将控制台参数附加到 Bare Metal 服务的 PXE 启动配置文件。请参阅 将内核参数附加到启动实例 中关于如何配置它们的参考。

  • 启用 ipmitool-socat 控制台接口,例如

    [DEFAULT]
    enabled_console_interfaces = ipmitool-socat,no-console
    
  • 配置节点控制台。

    如果节点使用硬件类型,例如 ipmi,则将节点的控制台接口设置为 ipmitool-socat

    baremetal node set <node> --console-interface ipmitool-socat
    

    启用串口控制台,例如

    baremetal node set <node> --driver-info ipmi_terminal_port=<port>
    baremetal node console enable <node>
    

    检查是否已启用串口控制台,例如

    baremetal node validate <node>
    

    禁用串口控制台,例如

    baremetal node console disable  <node>
    baremetal node unset <node> --driver-info <ipmi_terminal_port>
    

串口控制台信息可从 Bare Metal 服务获取。如下从 Bare Metal 服务获取节点的串口控制台信息

baremetal node console show <node>
+-----------------+----------------------------------------------------------------------+
| Property        | Value                                                                |
+-----------------+----------------------------------------------------------------------+
| console_enabled | True                                                                 |
| console_info    | {u'url': u'tcp://<host>:<port>', u'type': u'socat'}                  |
+-----------------+----------------------------------------------------------------------+

如果 console_enabledfalseconsole_infoNone,则串口控制台已禁用。如果您想启动串口控制台,请参阅 配置 节点 控制台

Bare Metal 服务的节点串口控制台与 Compute 服务的串口控制台兼容。因此,可以通过 Dashboard 服务查看和交互 Bare Metal 节点的串口控制台。为此,您需要遵循 Compute 服务的 串口 文档。

配置 HA

在 HA (高可用性) 配置下使用 Bare Metal 串口控制台时,您可能需要考虑以下设置。

  • 如果您使用 HAProxy,您可能需要为客户端和服务器端设置具有适当值的超时时间。以下是超时参数配置的一个示例。

    frontend nova_serial_console
      bind 192.168.20.30:6083
      timeout client 10m  # This parameter is necessary
      use_backend nova_serial_console if <...>
    
    backend nova_serial_console
      balance source
      timeout server 10m  # This parameter is necessary
      option  tcpka
      option  tcplog
      server  controller01 192.168.30.11:6083 check inter 2000 rise 2 fall 5
      server  controller02 192.168.30.12:6083 check inter 2000 rise 2 fall 5
    
  • Compute 服务的缓存功能可能需要在 HA 配置下启用,才能使 Bare Metal 串口控制台正常工作。以下是 nova.conf 中的缓存配置示例。

    [cache]
    enabled = true
    backend = dogpile.cache.memcached
    memcache_servers = memcache01:11211,memcache02:11211,memcache03:11211