配置虚拟机订阅


Red Hat Satellite 6.15

使用 virt-who 管理基于主机的订阅

Red Hat Satellite Documentation Team

摘要

本指南提供有关在 Red Hat Satellite 中准备订阅和激活码的信息,配置 virt-who 和注册虚拟机,以便它们从 hypervisor 中继承订阅。

对红帽文档提供反馈

我们感谢您对我们文档的反馈。让我们了解如何改进它。

使用 Red Hat JIRA 中的 Create Issue 表单提供您的反馈。JIRA 问题在 Red Hat Satellite Jira 项目中创建,您可以在其中跟踪其进度。

先决条件

流程

  1. 单击以下链接: 创建问题。如果 Jira 显示登录错误,则登录并在您重定向到表单后继续。
  2. 完成 SummaryDescription 字段。在 Description 字段中,包含文档 URL、章节号以及问题的详细描述。不要修改表单中的任何其他字段。
  3. Create

第 1 章 简介

您可以在以下虚拟化平台中为 Red Hat Enterprise Linux 虚拟机使用基于主机的订阅:

  • Red Hat Virtualization
  • Red Hat Enterprise Linux Virtualization (KVM)
  • Red Hat OpenStack Platform
  • VMware vSphere
  • Microsoft Hyper-V
  • Nutanix AHV

请注意,订阅模式已弃用,并将在以后的发行版本中删除。建议您使用 Simple Content Access 作为替换。

1.1. 基于主机的订阅

虚拟机可以使用基于主机的订阅,而不是消耗物理订阅中的权利。基于主机的订阅附加到 hypervisor,并授权其为虚拟机提供订阅。许多基于主机的订阅为无限制虚拟机提供权利。

要允许虚拟机从其 hypervisor 中继承订阅,您必须安装和配置 virt-who。virt-who 查询虚拟化平台,并将 hypervisor 和虚拟机信息报告给 Red Hat Satellite。

当使用未附加订阅的激活码注册虚拟机时,自动附加了设置为 true,且有足够的基于主机的订阅可用,则会发生以下行为之一:

  • 如果 virt-who 报告了虚拟机,并且基于主机的订阅附加到 hypervisor,则虚拟机将继承 hypervisor 中的订阅。
  • 如果 virt-who 报告了虚拟机,且 hypervisor 注册到 Satellite,但没有附加基于主机的订阅,则基于主机的订阅将附加到 hypervisor 中,并由虚拟机继承。
  • 如果 virt-who 没有报告虚拟机或其管理程序,Satellite 会为虚拟机授予临时订阅,最多为 7 天有效。在 virt-who 报告更新的信息后,Satellite 可以决定虚拟机正在运行哪些管理程序,并将永久订阅附加到虚拟机。

如果启用了自动附加,但 virt-who 没有运行,或者没有基于主机的订阅可用,Satellite 会将物理订阅附加到虚拟机,这可能会消耗比预期更多的权利。

如果没有启用自动附加,则虚拟机无法使用基于主机的订阅。

要查看订阅是否需要 virt-who,在 Satellite Web UI 中进入到 Content > Subscriptions。如果 Requires Virt-Who 列中有一个 tick,您必须将 virt-who 配置为使用该订阅。

虚拟机订阅过程

此图显示了当虚拟机尚未由 virt-who 报告时的订阅工作流:

虚拟机订阅过程

1 Satellite 置备虚拟机。

2 虚拟机从 Satellite 服务器请求订阅。

3 Satellite 服务器将虚拟机赋予一个临时订阅,在最多 7 天内有效,同时确定虚拟机所属的虚拟机监控程序。

4 virt-who 连接到 hypervisor 或虚拟化管理器,并请求有关其虚拟机的信息。

5 管理程序或虚拟化管理器将其虚拟机列表返回到 virt-who,包括每个 UUID。

6 virt-who 向 Satellite 服务器报告虚拟机及其管理程序的列表。

7 如果有足够的权利,则 Satellite 服务器会将永久订阅附加到虚拟机。

其他资源

有关红帽订阅模式的更多信息,请参阅 红帽订阅管理工作流简介。

1.2. 配置概述

要允许虚拟机从其 hypervisor 中继承订阅,请完成以下步骤:

先决条件

  • 将包含基于主机的订阅的订阅清单导入到 Satellite 服务器中。如需更多信息,请参阅管理内容中的将红帽订阅清单导入到 Satellite 服务器中
  • 确保您有足够的基于主机订阅的权利,以涵盖您计划使用的所有 hypervisor。
  • 如果您使用 Microsoft Hyper-V,请在虚拟机监控程序上启用远程管理。
  • 如果您使用 Nutanix AHV,请参阅 如何为 Nutanix AHV 配置 virt-who 以使用 红帽知识库 中的 RHSM
  • 创建一个具有只读访问权限的用户,以及每个虚拟机监控程序或虚拟化管理器上的非过期密码。virt-who 使用此帐户来检索要报告到 Satellite 服务器的虚拟机列表。

    • 对于红帽产品和 Microsoft Hyper-V,在每个运行 Red Hat Enterprise Linux 虚拟机的虚拟机监控程序上创建一个 virt-who 用户。
    • 对于 VMware vSphere,在 vCenter Server 上创建一个 virt-who 用户。virt-who 用户至少需要对 vCenter 数据中心中的所有对象进行只读访问。

流程概述

  1. 第 1.3 节 “每个虚拟化平台的 virt-who 配置”.使用本节中的表来计划如何为您的虚拟化平台配置和部署 virt-who。
  2. 第 2 章 为虚拟机创建激活码.创建启用自动附加且没有附加订阅的激活码。
  3. 第 3 章 将基于主机的订阅附加到 hypervisor.将基于主机的订阅附加到您计划使用的所有管理程序。
  4. 第 4 章 创建 virt-who 配置.为每个虚拟机监控程序或虚拟化管理器创建一个 virt-who 配置。
  5. 第 5 章 部署 virt-who 配置.使用 Satellite 生成的脚本部署 virt-who 配置。
  6. 第 6 章 注册虚拟机以使用基于主机的订阅.使用自动附加激活码注册虚拟机。

1.3. 每个虚拟化平台的 virt-who 配置

virt-who 使用指定详细信息的文件(如虚拟化类型和 hypervisor 或虚拟化管理器)进行配置。每个虚拟化平台支持的配置都有所不同。

典型的 virt-who 配置文件

本例演示了使用 Satellite Web UI 或 Hammer CLI 创建的典型 virt-who 配置文件:

[virt-who-config-1]
type=libvirt
hypervisor_id=hostname
owner=Default_Organization
env=Library
server=hypervisor1.example.com
username=virt_who_user
encrypted_password=$cr_password
rhsm_hostname=satellite.example.com
rhsm_username=virt_who_reporter_1
rhsm_encrypted_password=$user_password
rhsm_prefix=/rhsm

类型和 服务器 值取决于虚拟化平台。下表提供了更详细的信息。

用户名 指的是 hypervisor 或虚拟化管理器上的只读用户,您必须在配置 virt-who 前创建。rhsm-username 指的是自动生成的用户,该用户仅具有向 Satellite 服务器报告 virt-who 的权限。

每个虚拟化平台都需要配置

使用此表规划 virt-who 配置:

支持的虚拟化平台配置文件中指定的类型配置文件中指定的服务器部署配置文件的服务器

Red Hat Virtualization

RHEL 虚拟化(KVM)

Red Hat OpenStack Platform

libvirt

hypervisor (每个虚拟机监控程序有一个文件)

每个虚拟机监控程序

VMware vSphere

esx

vCenter Server

Satellite 服务器、Capsule 服务器或专用 RHEL 服务器

Microsoft Hyper-V

hyperv

Hyper-V hypervisor (每个虚拟机监控程序有一个文件)

Satellite 服务器、Capsule 服务器或专用 RHEL 服务器

virt-who 配置文件示例

显示了多个常见 hypervisor 类型的 virt-who 配置文件示例。

OpenStack virt-who 配置示例

[root@compute-node]# cat /etc/virt-who.d/virt-who-config-1.conf
This configuration file is managed via the virt-who configure plugin
manual edits will be deleted.
[virt-who-config-1]
type=libvirt
hypervisor_id=hostname
owner=ORG
env=Library
server=qemu:///system   <====
username=virt-who-user
encrypted_password=xxxxxxxxxxx
rhsm_hostname=satellite.example.com
rhsm_username=virt_who_reporter_1
rhsm_encrypted_password=yyyyyyyyyyy
rhsm_prefix=/rhsm

KVM virt-who 配置示例

type=libvirt
hypervisor_id=hostname
owner=gss
env=Library
server=qemu+ssh://root@libvirt.example.com/system
username=root
encrypted_password=33di3ksskd
rhsm_hostname=satellite.example.com
rhsm_username=virt_who_reporter_2
rhsm_encrypted_password=23233dj3j3k
rhsm_prefix=/rhsm

VMware virt-who 配置示例

type=esx
hypervisor_id=hostname
owner=gss
env=Library
server=vcenter.example.com
username=username_vcenter@example.com
encrypted_password=33di3ksskd
rhsm_hostname=satellite.example.com
rhsm_username=virt_who_reporter_2
rhsm_encrypted_password=23233dj3j3k
rhsm_prefix=/rhsm
重要

不支持 rhevmxen 管理程序类型。

kubevirt hypervisor 类型仅作为技术预览提供。

第 2 章 为虚拟机创建激活码

使用这个流程创建启用 auto-attach 的激活码,且没有附加任何订阅。当您使用此激活码注册虚拟机时,如果虚拟机监控程序附加了基于主机的订阅,则虚拟机会从其 hypervisor 中继承订阅。

注意

只有在 Satellite 上禁用了 Simple Content Access (SCA)时,这个过程才有效。如果启用了 SCA,则不需要将订阅附加到激活码。请注意,新创建的机构默认启用 SCA。要了解有关 SCA 的更多信息,请参阅 简单内容访问

有关激活码的更多信息,请参阅管理内容中的 管理 激活码

流程

  1. 在 Satellite Web UI 中,进入到 Content > Activation keys,再点 Create Activation Key
  2. Name 字段中输入激活码的名称。
  3. 确保选中了 Unlimited Hosts 复选框。或者,如果要设置限制,清除 Unlimited hosts 复选框,然后在 Limit 字段中输入您可以使用激活码注册的最大虚拟机数量。
  4. Description 字段中,输入激活码的描述。
  5. Environment 列表中,选择要使用的环境。
  6. 内容视图 列表中,选择要使用的内容视图。
  7. 点击 Save
  8. 当新激活码出现在 Activation Keys 窗口中时,单击密钥的名称。
  9. 点击 Subscriptions 选项卡。
  10. 确保 Auto-Attach 设置为 Yes。如果没有,请单击编辑图标,选中复选框,然后单击保存

    不要在此激活码中添加任何订阅。

对于 CLI 用户

  1. 创建激活码:

    # hammer activation-key create \
    --name "VM_Activation_Key" \
    --unlimited-hosts \
    --description "For VMs to inherit a VDC Subscription" \
    --lifecycle-environment "Environment_Name" \
    --content-view "CV_Name" \
    --organization "My_Organization"
  2. 在激活码中启用自动附加:

    # hammer activation-key update --name "VM_Activation_Key" \
    --organization "My_Organization" --auto-attach true

第 3 章 将基于主机的订阅附加到 hypervisor

使用这个流程将基于主机的订阅( 如用于虚拟数据中心的 Red Hat Enterprise Linux )附加到已注册到 Red Hat Satellite 的 hypervisor 中。

注意

只有在 Satellite 上禁用了 Simple Content Access (SCA)时,这个过程才有效。如果启用了 SCA,则不需要手动附加订阅。请注意,新创建的机构默认启用 SCA。要了解有关 SCA 的更多信息,请参阅 简单内容访问

要注册新的 hypervisor,请确保您的主机激活码包含基于主机的订阅,请参阅管理主机中的将主机注册到 Satellite在配置 virt-who 以查询前,您必须注册管理程序。

先决条件

  • 将包含基于主机的订阅的订阅清单导入到 Satellite 服务器中。
  • 确保您有足够的基于主机订阅的权利,以涵盖您计划使用的所有 hypervisor。

流程

  1. 在 Satellite Web UI 中,进入到 Hosts > Content Hosts
  2. Content Hosts 列表中,选中您要附加订阅的每个管理程序名称旁边的复选框。
  3. Select Action 列表中,选择 Manage Subscriptions
  4. 在 Content Host Bulk Subscriptions 窗口中,选择一个基于主机的订阅,然后单击 Add Selected

对于 CLI 用户

  1. 在 Satellite 服务器上,列出可用订阅以查找基于主机的订阅 ID:

    # hammer subscription list \
    --organization-id organization_id
  2. 将基于主机的订阅附加到 hypervisor:

    # hammer host subscription attach \
    --host host_name \
    --subscription-id subscription_id

    对您计划使用的每个虚拟机监控程序重复这些步骤。

第 4 章 创建 virt-who 配置

使用这个流程创建 virt-who 配置。红帽产品和 Microsoft Hyper-V 需要每个运行 Red Hat Enterprise Linux 虚拟机的虚拟机监控程序配置。VMware vSphere 为每个 vCenter Server 需要一个配置。

此流程中的大多数值都添加到 /etc/virt-who.d/conf_name.conf 文件中,并只应用到指定的 hypervisor 或虚拟化管理器。interval,启用调试输出,HTTP Proxy, 和 Ignore Proxy 是存储在 /etc/sysconfig/virt-who 文件中的全局值。全局配置值适用于同一服务器上的所有 virt-who 配置,每次在该服务器上部署新的 virt-who 配置时会覆盖新的 virt-who 配置。

每个 virt-who 配置都会创建一个 virt_who_reporter_[id] 用户,并为它分配 Virt-who Reporter 角色,该角色为向 Satellite 服务器报告的最小权限。无法手动配置或用于登录到 Satellite 服务器。

先决条件

  • 如果您要为红帽管理程序(Red Hat Enterprise Linux 或 Red Hat Virtualization Host)创建 virt-who 配置,请将 hypervisor 注册到 Red Hat Satellite。
  • 在 hypervisor 或虚拟化管理器中创建只读 virt-who 用户:

    • 对于红帽产品和 Microsoft Hyper-V,在每个运行 Red Hat Enterprise Linux 虚拟机的虚拟机监控程序上创建一个 virt-who 用户。
    • 对于 VMware vSphere,在 vCenter Server 上创建一个 virt-who 用户。virt-who 用户至少需要对 vCenter 数据中心中的所有对象进行只读访问。

流程

  1. 在 Satellite Web UI 中,进入到 Infrastructure > Virt-who 配置
  2. 单击 Create Config。在 New Virt-who Config 窗口中,您可以点帮助图标以了解有关每个字段的更多信息。
  3. 输入配置的名称。
  4. Hypervisor Type 列表中,选择您的虚拟化平台:

    • Red Hat Enterprise Linux Virtualization (KVM)、Red Hat Virtualization 或 Red Hat OpenStack Platform: libvirt
    • VMware vSphere:es x
    • Microsoft Hyper-V: hyperv
    • 请注意,不支持 rhevmxen 管理程序类型,kubevirt hypervisor 类型仅作为技术预览提供。
  5. Hypervisor Server 字段中,输入此配置适用的服务器的 FQDN 或 IP 地址。对于 VMware vSphere,使用 vCenter 服务器的 FQDN 或 IP 地址。对于所有其他产品,请使用虚拟机监控程序的 FQDN 或 IP 地址。
  6. Hypervisor Username 字段中,输入您在虚拟机监控程序或虚拟化管理器中创建的 virt-who 用户的名称。
  7. Hypervisor Password 字段中,输入 virt-who 用户的密码。部署配置时,此密码会被加密。使用 libvirt 类型时不需要此字段。
  8. Interval 列表中,选择 virt-who 请求新的或更新的虚拟机信息的频率。由于虚拟机被授予了最多 7 天的临时订阅,因此不需要频繁查询;您可以选择适合您环境大小的间隔。每 24 小时 适合大多数环境。
  9. 输入 Satellite 服务器 FQDN
  10. Hypervisor ID 列表中,选择是否通过其主机名或 UUID 识别 Satellite 服务器中的 hypervisor。
  11. 选择 Filtering 选项:

    • 默认值为 Unlimited。此配置涵盖的所有虚拟机监控程序都由 virt-who 查询。如果不必限制查询哪些虚拟机监控程序,请使用此选项。
    • 您可以列入白名单 黑名单 管理程序。例如,如果某些虚拟机监控程序仅运行 Microsoft Windows Server 虚拟机,则这些虚拟机监控程序不需要由 virt-who 报告。
  12. 如果您选择了 WhitelistBlacklist :在 Filter hostsExclude hosts 字段中,根据所选的 Hypervisor ID 输入以逗号分隔的管理程序列表。例如,如果虚拟机监控程序由其主机名标识,它们必须由主机名包含或排除。如果虚拟机监控程序的名称包含特殊字符,请将其用引号括起。支持通配符和正则表达式。请注意,在使用正则表达式时,必须转义反斜杠。
  13. 如果您选择了 esx 类型和 WhitelistBlacklist :在 Filter host parentsExclude host parents 字段中,请输入以逗号分隔的集群 ID 列表。如需更多信息,请参阅红帽知识库中的 对 VMware 集群使用"Filter Host Parents"和"Exclude Host Parents"属性

    允许的集群中的虚拟机监控程序由 virt-who 报告。排除集群中的虚拟机监控程序不会由 virt-who 报告。如果集群名称包含特殊字符,请将其用引号括起。支持通配符和正则表达式。请注意,在使用正则表达式时,必须转义反斜杠。

  14. 可选:如果您需要调试输出进行故障排除,请选择 Enable debugging output 复选框。
  15. 可选:输入 HTTP 代理,用于部署 virt-who 的服务器之间以及 hypervisor 或虚拟化管理器之间的通信。例如 :http://proxy.example.com:3128

    要不使用代理,请将此字段留空;这与在 Ignore Proxy 字段中输入 * 时的结果相同。

  16. 可选: 在 Ignore Proxy 字段中,输入以逗号分隔的主机名、IP 地址或域列表来绕过现有的代理设置。
  17. Submit

对于 CLI 用户

  • 在控制台中,输入 hammer virt-who-config create 命令。有关选项的更多信息,请输入 hammer virt-who-config create --help

    这个示例为 Red Hat Enterprise Linux hypervisor 创建 virt-who 配置:

    # hammer virt-who-config create \
    --name rhel.example.com \
    --organization "Example Company" \
    --interval 720 \ 1
    --filtering-mode none \ 2
    --hypervisor-id hostname \ 3
    --hypervisor-type libvirt \ 4
    --hypervisor-server rhel.example.com \ 5
    --hypervisor-username virt-who \ 6
    --proxy 'http://proxy.example.com:3128' \ 7
    --satellite-url satellite.example.com
1
选择以分钟为单位的 virt-who 查询虚拟化平台的频率。由于虚拟机被授予了最多 7 天的临时订阅,因此不需要频繁查询;您可以选择适合您环境大小的间隔。一旦一天(1440)适合大多数环境。
2
选择是否过滤 hypervisor。如果不必限制查询哪些虚拟机监控程序,请使用 none。或者,您可以将虚拟机监控程序 列入白名单黑名单中。例如,如果某些虚拟机监控程序仅运行 Microsoft Windows Server 虚拟机,则这些虚拟机监控程序不需要由 virt-who 报告。
3
选择如何识别此配置适用的虚拟机监控程序(或 hypervisor)。使用 主机名 在 Satellite Web UI 中提供有意义的主机名。或者,如果虚拟机监控程序被重命名,您可以使用 uuid 来避免重复。只有当此配置适用于虚拟化管理器而不是单独的虚拟机监控程序时,可以使用 hwuuid,且在 virt-who 开始运行后不得更改为另一个选项,因为这会导致 Subscription Manager 中的重复条目。
4
指定虚拟化平台支持的类型:
  • Red Hat Enterprise Linux Virtualization (KVM)、Red Hat Virtualization 或 Red Hat OpenStack Platform: libvirt
  • VMware vSphere:es x
  • Microsoft Hyper-V: hyperv
  • 请注意,不支持 rhevmxen 管理程序类型,kubevirt hypervisor 类型仅作为技术预览提供。
5
指定此配置应用到的服务器的 FQDN 或 IP 地址。对于 VMware vSphere,使用 vCenter 服务器的 FQDN 或 IP 地址。对于所有其他产品,请使用虚拟机监控程序的 FQDN 或 IP 地址。
6
指定您在虚拟机监控程序或虚拟化管理器中创建的只读 virt-who 用户。使用 libvirt 类型时,您不需要指定密码。对于其他类型的,您必须使用 --hypervisor-password 选项指定 virt-who 用户的密码。
7
可选:输入 HTTP 代理,用于部署 virt-who 的服务器之间以及 hypervisor 或虚拟化管理器之间的通信。

第 5 章 部署 virt-who 配置

创建 virt-who 配置后,Satellite 提供了一个脚本来自动执行部署过程。该脚本安装 virt-who 并创建单个和全局 virt-who 配置文件。

对于红帽产品,您必须在文件中指定的 hypervisor 上部署每个配置文件。对于其他产品,您必须在专用于运行 virt-who 的 Satellite 服务器、胶囊服务器或单独的 Red Hat Enterprise Linux 服务器上部署配置文件。

5.1. 在虚拟机监控程序上部署 virt-who 配置

使用这个流程在文件中指定的 Red Hat hypervisor 上部署 virt-who 配置。全局值只适用于这个 hypervisor。

您还可以使用此流程在 Capsule 服务器上部署 vCenter 或 Hyper-V virt-who 配置。全局配置值适用于同一胶囊服务器上的所有 virt-who 配置,每次部署新的 virt-who 配置时都会覆盖。

先决条件

  • 将虚拟机监控程序注册到 Red Hat Satellite。
  • 如果您使用 Red Hat Virtualization Host (RHVH),请将其更新至最新版本,以便最小 virt-who 版本可用。默认情况下,virt-who 在 RHVH 上可用,但无法从 rhel-7-server-rhvh-4-rpms 存储库中单独更新。
  • 在 hypervisor 中创建只读 virt-who 用户。
  • 为您的虚拟化平台创建一个 virt-who 配置。

流程

  1. 在 Satellite Web UI 中,进入到 Infrastructure > Virt-who 配置
  2. 点 virt-who 配置的名称。
  3. Deploy 选项卡。
  4. Configuration script 下,单击 Download the script
  5. 将脚本复制到 hypervisor 中:

    # scp deploy_virt_who_config_1.sh root@hypervisor.example.com:
  6. 使部署脚本可执行并运行它:

    # chmod +x deploy_virt_who_config_1.sh
    # sh deploy_virt_who_config_1.sh
  7. 部署完成后,删除脚本:

    # rm deploy_virt_who_config_1

5.2. 在 Satellite 服务器上部署 virt-who 配置

使用这个流程在 Satellite 服务器上部署 vCenter 或 Hyper-V virt-who 配置。

全局配置值适用于 Satellite 服务器上的所有 virt-who 配置,每次部署新的 virt-who 配置时都会覆盖。

先决条件

  • 在 hypervisor 或虚拟化管理器上创建只读 virt-who 用户。
  • 如果要部署 Hyper-V virt-who 配置,请在 Hyper-V hypervisor 上启用远程管理。
  • 为您的虚拟化平台创建一个 virt-who 配置。

流程

  1. 在 Satellite Web UI 中,进入到 Infrastructure > Virt-who 配置
  2. 点 virt-who 配置的名称。
  3. Hammer 命令 下,单击 Copy to clipboard
  4. 在命令行中,将 Hammer 命令粘贴到终端中。

5.3. 在单独的 Red Hat Enterprise Linux 服务器中部署 virt-who 配置

使用这个流程在专用 Red Hat Enterprise Linux 7 服务器上部署 vCenter 或 Hyper-V virt-who 配置。服务器可以是物理或虚拟的。

全局配置值适用于这个服务器中的所有 virt-who 配置,每次部署新的 virt-who 配置时都会覆盖。

先决条件

  • 在 hypervisor 或虚拟化管理器上创建只读 virt-who 用户。
  • 如果要部署 Hyper-V virt-who 配置,请在 Hyper-V hypervisor 上启用远程管理。
  • 为您的虚拟化平台创建一个 virt-who 配置。

流程

  1. 在 Red Hat Enterprise Linux 服务器上,安装 Satellite 服务器的 CA 证书:

    # rpm -ivh http://satellite.example.com/pub/katello-ca-consumer-latest.noarch.rpm
  2. 将 Red Hat Enterprise Linux 服务器注册到 Satellite 服务器:

    # subscription-manager register \
    --org=organization_label \
    --auto-attach
  3. 为 virt-who 和 Satellite 服务器之间的通信打开网络端口:

    # firewall-cmd --add-port="443/tcp"
    # firewall-cmd --add-port="443/tcp" --permanent
  4. 打开一个网络端口,以便在 virt-who 和每个 hypervisor 或虚拟化管理器之间的通信:

    • VMware vCenter:TCP 端口 443
    • Microsoft Hyper-V: TCP 端口 5985
  5. 在 Satellite Web UI 中,进入到 Infrastructure > Virt-who 配置
  6. 点 virt-who 配置文件的名称。
  7. Deploy 选项卡。
  8. Configuration script 下,单击 Download the script
  9. 将脚本复制到 Red Hat Enterprise Linux 服务器中:

    # scp deploy_virt_who_config_1.sh root@rhel.example.com:
  10. 使部署脚本可执行并运行它:

    # chmod +x deploy_virt_who_config_1.sh
    # sh deploy_virt_who_config_1.sh
  11. 部署完成后,删除脚本:

    # rm deploy_virt_who_config_1

第 6 章 注册虚拟机以使用基于主机的订阅

使用自动附加激活码来注册虚拟机,以便它们从 hypervisor 中继承订阅。

注意

只有在 Satellite 上禁用了 Simple Content Access (SCA)时,这个过程才有效。如果启用了 SCA,则不需要将订阅附加到激活码。反之,请按照管理主机中的 Registering Hosts 步骤来注册虚拟机。请注意,新创建的机构默认启用 SCA。要了解有关 SCA 的更多信息,请参阅 简单内容访问

有关激活码的更多信息,请参阅管理内容中的 管理 激活码

先决条件

  • 创建启用自动附加且没有附加订阅的激活码。
  • 将基于主机的订阅附加到虚拟机的虚拟机监控程序。
  • 创建和部署查询虚拟机的 hypervisor 的 virt-who 配置。

流程

  1. 配置虚拟机以使用 Satellite 服务器注册:

    # yum install http://satellite.example.com/pub/katello-ca-consumer-latest.noarch.rpm
  2. 使用自动附加激活码注册虚拟机:

    # subscription-manager register --org=organization_label \
    --activationkey=activation_key_name

在 Satellite 服务器等待 virt-who 时,虚拟机会收到一个临时订阅,以提供有关虚拟机在其上运行哪些 hypervisor 的信息。在 virt-who 提供此信息后,Satellite 服务器会为虚拟机附加一个永久订阅。

如果虚拟机迁移到报告给 virt-who 并附加了基于主机的订阅的另一个管理程序,则虚拟机将继承该 hypervisor 的订阅。如果 hypervisor 没有附加基于主机的订阅,则 Satellite 服务器会自动将基于主机的订阅附加到 hypervisor,虚拟机将继承该订阅。

如果虚拟机迁移到未报告给 virt-who 的另一个管理程序,或者订阅不足以附加到 hypervisor,则虚拟机无法继承订阅。要避免这种情况,可以确保虚拟机的所有管理程序都可以迁移为附加基于主机的订阅并报告给 virt-who,或者限制虚拟机的迁移到特定虚拟机监控程序。

附录 A. 对 virt-who 进行故障排除

A.1. 修改 virt-who 配置

您可以使用 Satellite Web UI 或 Hammer CLI 修改现有 virt-who 配置。例如,如果您需要更改 virt-who 的运行频率,则必须更新并再次部署 virt-who 配置。

流程

  1. 在 Satellite Web UI 中,进入到 Infrastructure > Virt-who 配置
  2. 找到要修改的 virt-who 配置,然后在 Actions 列中点 Edit
  3. 编辑您要更改的字段。
  4. Submit
  5. 重新部署修改后的 virt-who 配置。

对于 CLI 用户

  1. 在控制台中,输入 hammer virt-who-config update 命令,指定要修改的配置的名称,以及您要更改的选项的新值。如果要更改配置的名称,则必须使用 --new-name 选项。

    # hammer virt-who-config update \
    --name current_name \
    --new-name new_name \
    --interval 1440
  2. 重新部署修改后的 virt-who 配置。

A.2. 删除现有 virt-who 配置

要删除现有的 virt-who 配置,您必须首先删除 Satellite Web UI 中的配置条目,然后从部署配置的主机的文件系统中删除配置文件。

流程

  1. 在 Satellite Web UI 中,进入到 Infrastructure > Virt-who 配置
  2. 在您要删除的配置的 Actions 列表中,选择 Delete
  3. 在您要从中删除 virt-who 配置的主机上,删除配置文件:

    # rm /etc/virt-who.d/conf_name.conf

A.3. virt-who 故障排除方法

验证 virt-who 状态

要在 Satellite Web UI 中验证 virt-who 的状态,请导航到 Infrastructure > Virt-who 配置 并检查每个 virt-who 实例的 Status 列。状态 OK 表示 virt-who 成功连接到 Satellite 服务器并报告由每个虚拟机监控程序管理的虚拟机。

要使用 CLI 列出所有 virt-who 实例的状态,请在 Satellite 服务器上输入以下命令:

# hammer virt-who-config list

命令的输出包括每个报告到 Satellite 服务器的 virt-who 实例的日期和时间。

调试日志记录

检查 /var/log/rhsm/rhsm.log 文件,其中 virt-who 默认记录其所有活动。

要启用更详细的日志记录,修改 virt-who 配置:

  • 在 Satellite Web UI 中,选中 Enable debugging output 复选框。
  • 在 Hammer CLI 中,添加 --debug true 选项。

重新部署配置以使更改生效。

当底层问题被解决时,修改 virt-who 配置以禁用调试,然后再次重新部署配置。

测试配置选项

进行更改并测试结果,根据需要重复。virt-who 提供了两个选项来帮助测试配置文件、凭证和与虚拟化平台的连接:

  • virt-who --one-shot 命令读取配置文件,检索虚拟机列表并将其发送到 Satellite 服务器,然后立即退出。
  • virt-who --print 命令读取配置文件,并打印虚拟机列表,但不会将其发送到 Satellite 服务器。

预期的输出是虚拟机监控程序及其虚拟机的列表,采用 JSON 格式。以下是从 VMware vSphere 实例中提取的。所有虚拟机监控程序的输出遵循相同的结构。

{
    "guestId": "422f24ed-71f1-8ddf-de53-86da7900df12",
    "state": 5,
    "attributes": {
        "active": 0,
        "virtWhoType": "esx",
        "hypervisorType": "vmware"
    }
},

在使用多个 virt-who 配置文件时识别问题

如果一个服务器上有多个 virt-who 配置文件,请在测试每个文件移动时将一个文件移到另一个目录。如果不再出现这个问题,则原因与最近移动的文件相关联。解决此问题后,将 virt-who 配置文件返回到其原始位置。

或者,您可以使用 --config 选项指定它的位置,在移动后测试单个文件。例如:

# virt-who --debug --one-shot --config /tmp/conf_name.conf

识别重复的虚拟机监控程序

重复虚拟机监控程序可能会导致订阅和权利错误。输入以下命令检查重复的虚拟机监控程序:

# systemctl stop virt-who
# virt-who -op >/tmp/virt-who.json
# systemctl start virt-who
# cat /tmp/virt-who.json | json_reformat | grep name | sort | uniq -c | sort -nr | head -n10
  3    "name": "localhost"
  1    "name": "rhel1.example.com"
  1    "name": "rhel2.example.com"
  1    "name": "rhel3.example.com"
  1    "name": "rhel4.example.com"
  1    "name": "rhvh1.example.com"
  1    "name": "rhvh2.example.com"
  1    "name": "rhvh3.example.com"
  1    "name": "rhvh4.example.com"
  1    "name": "rhvh5.example.com"

在本例中,三个虚拟机监控程序具有相同的 FQDN (localhost),必须更正以使用唯一的 FQDN。

识别重复的虚拟机

输入以下命令检查重复的虚拟机:

# systemctl stop virt-who
# virt-who -op >/tmp/virt-who.json
# systemctl start virt-who
# cat /tmp/virt-who.json | json_reformat | grep "guestId" | sort | uniq -c | sort -nr | head -n10

检查虚拟机监控程序的数量

输入以下命令检查 hypervisor virt-who 当前报告的数量:

# systemctl stop virt-who
# virt-who -op >/tmp/virt-who.json
# systemctl start virt-who
# cat /tmp/virt-who.json | json_reformat | grep name | sort | uniq -c | wc -l

检查虚拟机数量

输入以下命令检查 virt-who 当前报告的虚拟机数量:

# systemctl stop virt-who
# virt-who -op >/tmp/virt-who.json
# systemctl start virt-who
# cat /tmp/virt-who.json | json_reformat | grep "guestId" | sort | uniq -c | wc -l

A.4. virt-who 故障排除场景

virt-who 无法连接到虚拟化平台

如果 virt-who 无法连接到 hypervisor 或虚拟化管理器,请检查 Red Hat Subscription Manager 日志文件 /var/log/rhsm/rhsm.log。如果您发现消息 No route to host,则虚拟机监控程序可能会在错误的端口上侦听。在这种情况下,修改 virt-who 配置,并将正确的端口号附加到 Hypervisor Server 值。

修改后,您必须重新部署 virt-who 配置。

virt-who 无法通过本地网络上的 HTTP 代理连接到虚拟化平台

如果 virt-who 无法通过 HTTP 代理连接到 hypervisor 或虚拟化管理器,请将代理配置为允许本地流量通过,或修改 virt-who 配置使其不使用代理。

修改后,您必须重新部署 virt-who 配置。

virt-who 无法向 Red Hat Satellite 服务器报告主机客户机映射

在以下情况下,virt-who 无法报告主机客户机映射到 Red Hat Satellite 服务器。

  1. 在 Red Hat Satellite 服务器上配置和部署 virt-who。
  2. Red Hat Satellite 服务器的 rhsm.conf 文件被配置为使用代理服务器与 subscription.rhsm.redhat.com 和 cdn.redhat.com 通信。
  3. /etc/sysconfig/virt-who 中的 no_proxy.4-1. 设置存在,但 subscription-manager 忽略,virt-who 会尝试通过代理服务器连接到 Satellite 服务器,但会失败。

在这种情况下,在 /etc/rhsm/rhsm.conf 文件中添加以下参数。

no_proxy = satellite.example.com

法律通告

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.