在 Red Hat Satellite 中配置虚拟机订阅


Red Hat Satellite 6.13

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

Red Hat Satellite Documentation Team

摘要

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

向红帽文档提供反馈

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

使用 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

请注意,订阅模型已弃用,并将在以后的发行版本中删除。建议您使用 简单内容访问 作为替换。

1.1. 基于主机的订阅

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

要允许虚拟机从管理程序继承订阅,您必须安装和配置 virt-who。virt-who 查询虚拟化平台,并向 Red Hat Satellite 报告管理程序和虚拟机信息。

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

  • 如果 virt-who 报告虚拟机,并且基于主机的订阅已附加到 hypervisor 中,则虚拟机会从 hypervisor 中继承订阅。
  • 如果 virt-who 报告虚拟机,并且管理程序已注册到 Satellite,但没有附加基于主机的订阅,则基于主机的订阅将附加到虚拟机管理程序并继承。
  • 如果 virt-who 没有报告虚拟机或其 hypervisor,则 Satellite 会将虚拟机赋予一个临时订阅,最多有效的七天。在 virt-who 报告更新信息后,Satellite 可以确定虚拟机运行所在的管理程序,并将永久订阅附加到虚拟机。

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

如果没有启用 auto-attach,虚拟机无法使用基于主机的订阅。

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

虚拟机订阅过程

当 virt-who 虚拟机还没有报告时,这个图显示了订阅工作流:

虚拟机订阅过程

1 Satellite 置备虚拟机。

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

3 Satellite 服务器为虚拟机授予临时订阅,最多 7 天有效,同时决定虚拟机所属的虚拟机监控程序。

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

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

6 virt-who 会向 Satellite 服务器报告虚拟机及其 hypervisor 列表。

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

其他资源

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

1.2. 配置概述

要允许虚拟机从虚拟机监控程序继承订阅,请完成以下步骤:

前提条件

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

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

流程概述

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

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

virt-who 使用指定详情的文件进行配置,如虚拟化类型和管理程序或虚拟化管理器进行查询。对于每个虚拟化平台,支持的配置会有所不同。

典型的 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
Copy to Clipboard Toggle word wrap

typeserver 值取决于虚拟化平台。下表提供更多详细信息。

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

每个虚拟化平台所需的配置

使用这个表来规划 virt-who 配置:

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

Red Hat Virtualization

RHEL 虚拟化(KVM)

Red Hat OpenStack Platform

libvirt

管理程序(每个虚拟机监控程序一个文件)

每个 hypervisor

VMware vSphere

esx

vCenter Server

Satellite Server, Capsule Server, 或一个专用的 RHEL 服务器

Microsoft Hyper-V

hyperv

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

Satellite Server, Capsule Server, 或一个专用的 RHEL 服务器

virt-who 配置文件示例

显示多种常见管理程序类型的 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
Copy to Clipboard Toggle word wrap

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
Copy to Clipboard Toggle word wrap

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
Copy to Clipboard Toggle word wrap
重要

不支持 rhevmxen 管理程序类型。

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

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

使用这个流程创建启用自动附加且没有附加订阅的激活码。当您使用此激活密钥注册虚拟机时,如果 hypervisor 附加了基于主机的订阅,虚拟机会从其 hypervisor 中继承订阅。

注意

只有在 Satellite 上禁用了简单内容访问(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。如果没有,请单击编辑图标,选中复选框,然后单击 Save

    不要将任何订阅添加到此激活码。

对于 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"
    Copy to Clipboard Toggle word wrap
  2. 在激活码中启用 auto-attach :

    # hammer activation-key update --name "VM_Activation_Key" \
    --organization "My_Organization" --auto-attach true
    Copy to Clipboard Toggle word wrap

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

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

注意

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

要注册新的 hypervisor,请确保您的主机激活码包含基于主机的订阅,请参阅管理主机中的将主机注册到 Satellite在配置 virt-who 以查询它前,您必须注册 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
    Copy to Clipboard Toggle word wrap
  2. 将基于主机的订阅附加到 hypervisor 中:

    # hammer host subscription attach \
    --host host_name \
    --subscription-id subscription_id
    Copy to Clipboard Toggle word wrap

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

第 4 章 创建 virt-who 配置

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

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

每个 virt-who 配置都会创建一个 virt_who_reporter_[id] 用户,并为其分配 Virt-who 报告器角色,它为 Satellite 服务器提供 virt-who 报告的最小权限。此用户无法手动配置,也不能用于登录卫星服务器。

前提条件

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

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

流程

  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 管理程序类型仅作为技术预览提供。
  5. Hypervisor Server 字段中,输入此配置适用的服务器的 FQDN 或 IP 地址。对于 VMware vSphere,请使用 vCenter Server 的 FQDN 或 IP 地址。对于所有其他产品,请使用 hypervisor 的 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 识别卫星服务器中的虚拟机监控程序。
  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 debug output 复选框。
  15. 可选:输入 HTTP 代理,用于部署 virt-who 的服务器之间以及虚拟机监控程序或虚拟化管理器之间的通信。例如 :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
    Copy to Clipboard Toggle word wrap
1
选择在几分钟内查询虚拟化平台的频率。由于虚拟机被授予最多 7 天的临时订阅,因此不需要频繁查询;您可以选择适合环境大小的间隔。每天(1440)适合大多数环境。
2
选择是否过滤 hypervisor。如果您没有限制查询哪些虚拟机监控程序,请使用 none。或者,您可以 列入白名单 或将 hypervisor 列入黑名单。例如,如果某些虚拟机监控程序仅运行 Microsoft Windows Server 虚拟机,则 virt-who 不需要报告这些管理程序。
3
选择如何识别此配置适用的管理程序(或 hypervisor)。在 Satellite Web UI 中使用 hostname 提供有意义的主机名。或者,如果虚拟机监控程序被重命名,您可以使用 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 管理程序类型仅作为技术预览提供。
5
指定此配置适用的服务器的 FQDN 或 IP 地址。对于 VMware vSphere,请使用 vCenter Server 的 FQDN 或 IP 地址。对于所有其他产品,请使用 hypervisor 的 FQDN 或 IP 地址。
6
指定您在 hypervisor 或虚拟化管理器中创建的只读 virt-who 用户。在使用 libvirt 类型时,您不需要指定密码。对于其他类型,您必须使用 --hypervisor-password 选项指定 virt-who 用户的密码。
7
可选:输入 HTTP 代理,用于部署 virt-who 的服务器之间以及虚拟机监控程序或虚拟化管理器之间的通信。

第 5 章 部署 virt-who 配置

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

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

5.1. 在 Hypervisor 上部署 virt-who 配置

使用这个流程在您在文件中指定的红帽 hypervisor 上部署 virt-who 配置。全局值仅适用于此虚拟机监控程序。

您还可以使用此流程在 Capsule Server 上部署 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:
    Copy to Clipboard Toggle word wrap
  6. 使部署脚本可执行并运行它:

    # chmod +x deploy_virt_who_config_1.sh
    # sh deploy_virt_who_config_1.sh
    Copy to Clipboard Toggle word wrap
  7. 部署完成后,删除脚本:

    # rm deploy_virt_who_config_1
    Copy to Clipboard Toggle word wrap

5.2. 在管理门户中部署 virt-who 配置

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

全局配置值适用于卫星服务器上的所有 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 命令粘贴到终端中。

使用这个流程在专用的 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
    Copy to Clipboard Toggle word wrap
  2. 将 Red Hat Enterprise Linux 服务器注册到 Satellite 服务器:

    # subscription-manager register \
    --org=organization_label \
    --auto-attach
    Copy to Clipboard Toggle word wrap
  3. 打开网络端口,用于 virt-who 和 Satellite 服务器间的通信:

    # firewall-cmd --add-port="443/tcp"
    # firewall-cmd --add-port="443/tcp" --permanent
    Copy to Clipboard Toggle word wrap
  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:
    Copy to Clipboard Toggle word wrap
  10. 使部署脚本可执行并运行它:

    # chmod +x deploy_virt_who_config_1.sh
    # sh deploy_virt_who_config_1.sh
    Copy to Clipboard Toggle word wrap
  11. 部署完成后,删除脚本:

    # rm deploy_virt_who_config_1
    Copy to Clipboard Toggle word wrap

使用自动附加激活码注册虚拟机,以便他们从虚拟机监控程序继承订阅。

注意

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

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

前提条件

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

流程

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

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

    # subscription-manager register --org=organization_label \
    --activationkey=activation_key_name
    Copy to Clipboard Toggle word wrap

虚拟机收到临时订阅,而卫星服务器会等待 virt-who 提供运行虚拟机所运行管理程序的信息。在 virt-who 提供此信息后,卫星服务器会将永久订阅附加到虚拟机。

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

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

附录 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
    Copy to Clipboard Toggle word wrap
  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
    Copy to Clipboard Toggle word wrap

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

验证 virt-who 状态

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

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

# hammer virt-who-config list
Copy to Clipboard Toggle word wrap

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

调试日志记录

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

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

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

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

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

测试配置选项

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

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

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

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

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

如果您在一个服务器上有多个 virt-who 配置文件,请在每个文件移动后一次将一个文件移到不同的目录中。如果问题不再发生,则原因与最近移动的文件相关联。解决问题后,将 virt-who 配置文件返回到其原始位置。

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

# virt-who --debug --one-shot --config /tmp/conf_name.conf
Copy to Clipboard Toggle word wrap

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

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

# 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"
Copy to Clipboard Toggle word wrap

在本例中,三个虚拟机监控程序具有相同的 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
Copy to Clipboard Toggle word wrap

检查 hypervisor 的数量

输入以下命令检查当前报告的 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
Copy to Clipboard Toggle word wrap

检查虚拟机数量

输入以下命令检查 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
Copy to Clipboard Toggle word wrap

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

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

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

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

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

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

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

virt-who 无法报告 host-guest 映射回 Red Hat Satellite 服务器

在以下情况下,virt-who 无法报告 host-guest 映射到 Red Hat Satellite 服务器。

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

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

no_proxy = satellite.example.com
Copy to Clipboard Toggle word wrap

法律通告

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 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部