在 Red Hat Satellite 中配置虚拟机订阅
使用 virt 有管理基于主机的订阅
Red Hat Satellite Documentation Team
satellite-doc-list@redhat.com
摘要
向红帽文档提供反馈
我们感谢您对文档提供反馈信息。请让我们了解如何改进文档。
您可以通过在 Bugzilla 中记录一个 ticket 来提交反馈:
- 导航到 Bugzilla 网站。
-
在 Component 字段中,使用
Documentation
。 - 在 Description 字段中,输入您要改进的建议。包括文档相关部分的链接。
- 点 Submit Bug。
第 1 章 简介
您可以在以下虚拟化平台中将基于主机的订阅用于 Red Hat Enterprise Linux 虚拟机:
- Red Hat Virtualization
- Red Hat Enterprise Linux Virtualization (KVM)
- Red Hat OpenStack Platform
- VMware vSphere
- Microsoft Hyper-V
请注意,订阅模式已弃用,并将在以后的发行版本中删除。建议您使用 Simple Content Access 作为替换。
1.1. 基于主机的订阅
虚拟机可以使用基于主机的订阅,而不是消耗来自物理订阅的授权。基于主机的订阅附加到虚拟机监控程序上,并授权它为其虚拟机提供订阅。许多基于主机的订阅可为无限虚拟机提供权利。
要允许虚拟机从虚拟机监控程序继承订阅,您必须安装并配置 virt-who。virt-who 查询虚拟化平台,并向红帽卫星报告管理程序和虚拟机信息。
当使用未附加订阅且自动附加为 true
的激活码注册虚拟机时,且有充足的基于主机的订阅可用,则会出现以下行为之一:
- 如果虚拟机由 virt-who 报告,且基于主机的订阅已附加到虚拟机监控程序上,虚拟机将继承了管理程序中的订阅。
- 如果虚拟机由 virt-who 报告,并且虚拟机监控程序注册到 Satellite,但没有附加基于主机的订阅,则基于主机的订阅将附加到虚拟机监控程序中,并继承虚拟机。
- 如果虚拟机或其虚拟机监控程序未由 virt-who 报告,卫星向虚拟机授予临时订阅,最多为 7 天。在 virt-who 报告更新信息后,Satellite 可以决定虚拟机所在的虚拟机监控程序,并向虚拟机附加持久订阅。
如果启用了自动附加,但 virt-who 没有运行,或者没有可用的基于主机的订阅,卫星会将物理订阅附加到虚拟机,这可能比预期更多的权利。
如果没有启用自动附加,虚拟机无法使用基于主机的订阅。
要查看订阅是否需要 virt-who,在 Satellite Web UI 中,进入 Content > Subscriptions。如果 Requires Virt-Who 列中有一个 tick,您必须配置 virt-who 来使用该订阅。
虚拟机订阅过程
当虚拟机尚未被 virt-who 报告时,此图显示了订阅工作流:
Satellite 置备虚拟机。
虚拟机从 Satellite 服务器请求订阅。
Satellite 服务器为虚拟机授予临时订阅,最多 7 天有效,同时决定虚拟机所属的虚拟机监控程序。
virt-who 连接到虚拟机监控程序或虚拟化管理器,并请求有关其虚拟机的信息。
管理程序或虚拟化管理器将其虚拟机列表返回到 virt-who,包括每个 UUID。
virt-who 会向 Satellite 服务器报告虚拟机及其 hypervisor 列表。
如果有足够的权利,Satellite 服务器会将永久订阅附加到虚拟机。
其他资源
有关红帽订阅模式的更多信息,请参阅 红帽订阅管理工作流简介。
1.2. 配置概述
要允许虚拟机从虚拟机监控程序继承订阅,请完成以下步骤:
先决条件
- 将包含基于主机的订阅的订阅清单导入到卫星服务器中。有关更多信息,请参阅管理 内容中的将 Red Hat 订阅清单 导入到卫星服务器中 。
- 请确保您对基于主机的订阅具有足够权利,以涵盖您计划使用的所有管理程序。
- 如果您使用 Microsoft Hyper-V,请在虚拟机监控程序上启用远程管理。
在每个虚拟机监控程序或虚拟化管理器上创建具有只读权限的用户,以及非expiring 密码。virt-who 使用该帐户来检索要报告到卫星服务器的虚拟机列表。
- 对于红帽产品和 Microsoft Hyper-V,请在运行 Red Hat Enterprise Linux 虚拟机的每个 hypervisor 上创建 virt-who 用户。
- 对于 VMware vSphere,在 vCenter 服务器上创建 virt-who 用户。virt-who 用户要求至少对 vCenter Data Center 中的所有对象进行只读访问。
流程概述
- 第 1.3 节 “用于每个虚拟化平台的 virt-who 配置”.使用本节中的表格规划如何配置和部署对虚拟化平台的 virt-who。
- 第 2 章 为虚拟机创建激活码.创建启用了自动附加且没有附加订阅的激活码。
- 第 3 章 将基于主机的订阅附加到虚拟机监控程序.将基于主机的订阅附加到您计划使用的所有管理程序中。
- 第 4 章 创建 virt-who 配置.为每个管理程序或虚拟化管理器创建 virt-who 配置。
- 第 5 章 部署 virt-who 配置.使用 Satellite 生成的脚本部署 virt-who 配置。
- 第 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
类型
和服务器
值取决于虚拟化平台。下表提供了更多详细信息。
用户名
指的是虚拟机监控程序或虚拟化管理器上的只读用户,您必须在配置 virt-who 之前创建该管理程序或虚拟化管理器。rhsm-username
指的是自动生成的用户,只有 virt-who 报告到卫星服务器的权限。
每个虚拟化平台的所需配置
使用此表规划您的 virt-who 配置:
支持的虚拟化平台 | 在配置文件中指定的类型 | 在配置文件中指定的服务器 | 部署配置文件的服务器 |
---|---|---|---|
Red Hat Virtualization RHEL 虚拟化(KVM) Red Hat OpenStack Platform | libvirt | 管理程序(每个虚拟机监控程序一个文件) | 每个虚拟机监控程序 |
VMware vSphere | esx | vCenter Server | Satellite Server、Capsule Server 或一个专用的 RHEL 服务器 |
Microsoft Hyper-V | hyperv | Hyper-V 管理程序(每个虚拟机监控程序一个文件) | 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
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
不支持 rhevm
和 xen
管理程序类型。
kubevirt
hypervisor 类型仅作为技术预览提供。
第 2 章 为虚拟机创建激活码
使用这个步骤创建一个启用了自动附加的激活码,且没有附加订阅。当您使用此激活码注册虚拟机时,如果该虚拟机监控程序附加了基于主机的订阅,则虚拟机会从其管理程序中继承订阅。
有关激活码的更多信息,请参阅管理内容 中的 激活码 。
流程
- 在 Satellite Web UI 中,导航到 Content > Activation keys,再点击 Create Activation Key。
- 在 Name 字段中输入激活码的名称。
- 确保选中了 Unlimited Hosts 复选框。或者,如果要设置限制,请清除 Unlimited hosts 复选框,然后在 Limit 字段中输入您可以使用该激活密钥注册的最大虚拟机数量。
- 在 Description 字段中输入激活密钥的描述。
- 从 Environment 列表中,选择要使用的环境。
- 从 Content View 列表中,选择要使用的内容视图。
- 点击 Save。
- 当新激活码出现在 Activation Keys 窗口中时,单击密钥的名称。
- 点 订阅选项卡。
- 确保 Auto-Attach 设置为 Yes。如果没有,请单击编辑图标,选中复选框,然后单击保存。
不要在此激活码中添加任何订阅。
对于 CLI 用户
创建激活码:
# 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"
在激活码中启用自动附加:
# hammer activation-key update --name "VM_Activation_Key" \ --organization "My_Organization" --auto-attach true
第 3 章 将基于主机的订阅附加到虚拟机监控程序
使用此流程将基于主机的订阅(如用于虚拟数据中心的 Red Hat Enterprise Linux
)附加到已注册到 Red Hat Satellite 的 hypervisor。
要注册新的虚拟机监控程序,请确保您的主机激活密钥包含基于主机的订阅,然后在 管理主机 中看到将主机 注册到卫星。在配置 virt-who to query 之前,您必须注册一个虚拟机监控程序。
先决条件
- 将包含基于主机的订阅的订阅清单导入到卫星服务器中。
- 请确保您对基于主机的订阅具有足够权利,以涵盖您计划使用的所有管理程序。
流程
- 在 Satellite Web UI 中,导航到 Hosts > Content Hosts。
- 在 Content Hosts 列表中,选中您要将订阅附加到的每个管理程序名称旁边的复选框。
- 在 Select Action 列表中,选择 Manage Subscriptions。
- 在 Content Host Bulk Subscriptions 窗口中,选择基于主机的订阅,然后单击 Add Selected。
对于 CLI 用户
在 Satellite 服务器中,列出可用的订阅以查找基于主机的订阅 ID:
# hammer subscription list \ --organization-id organization_id
将基于主机的订阅附加到虚拟机监控程序:
# hammer host subscription attach \ --host host_name \ --subscription-id subscription_id
对每个计划使用的虚拟机监控程序重复这些步骤。
第 4 章 创建 virt-who 配置
使用此流程来创建 virt-who 配置。Red Hat 产品和 Microsoft Hyper-V 需要每个运行 Red Hat Enterprise Linux 虚拟机的管理程序都有一个配置。VMware vSphere 需要每个 vCenter 服务器都有一个配置。
此流程中的大多数值都添加到 /etc/virt-who.d/conf_name.conf
文件中,并只适用于指定的管理程序或虚拟化管理器。间隔、启用调试输出、HTTP 代理和 Ignore Proxy 是保存在 /etc/sysconfig/virt-who
文件中的全局值。全局配置值适用于同一服务器上的所有 virt-who 配置,并且每次部署新的 virt-who 配置时都会覆盖该服务器上。
每个 virt-who 配置都会创建一个 virt_who_reporter_[id]
用户,并为它分配 Virt-who Reporter
角色,它为 Satellite Server 报告最少的权限。无法手动配置此用户或用于登录卫星服务器。
先决条件
- 如果您要为 Red Hat hypervisor(Red Hat Enterprise Linux 或 Red Hat Virtualization Host)创建 virt-who 配置,请将管理程序注册到 Red Hat Satellite。
在管理程序或虚拟化管理器中创建只读 virt-who 用户:
- 对于红帽产品和 Microsoft Hyper-V,请在运行 Red Hat Enterprise Linux 虚拟机的每个 hypervisor 上创建 virt-who 用户。
- 对于 VMware vSphere,在 vCenter 服务器上创建 virt-who 用户。virt-who 用户要求至少对 vCenter Data Center 中的所有对象进行只读访问。
流程
- 在 Satellite Web UI 中,进入 Infrastructure > Virt-who 配置。
- 点 Create Config。在 New Virt-who Config 窗口中,您可以点击帮助图标来获取每个字段的更多信息。
- 在配置中输入 Name。
从 Hypervisor Type 列表中,选择您的虚拟化平台:
- Red Hat Enterprise Linux Virtualization(KVM)、Red Hat Virtualization 或 Red Hat OpenStack Platform: libvirt
- VMware vSphere: esx
- Microsoft Hyper-V: hyperv
- 请注意,不支持 rhevm 和 xen 管理程序类型,kubevirt 管理程序类型仅作为技术预览提供。
- 在 Hypervisor Server 字段中,输入此配置适用的服务器的 FQDN 或 IP 地址。对于 VMware vSphere,请使用 vCenter Server 的 FQDN 或 IP 地址。对于所有其他产品,请使用虚拟机监控程序的 FQDN 或 IP 地址。
- 在 Hypervisor Username 字段中,输入您在管理程序或虚拟化管理器中创建的 virt-who 用户的名称。
- 在 Hypervisor Password 字段中,输入 virt-who 用户的密码。在部署 配置时,这个密码会被加密。使用 libvirt 类型时不需要此字段。
- 在 Interval 列表中,选择 virt-who 请求新的或更新虚拟机信息的频率。因为虚拟机被授予最多七天的临时订阅,所以不需要频繁查询;您可以选择适合环境大小的时间间隔。每 24 小时 一次适合大多数环境。
- 输入 Satellite 服务器 FQDN。
- 从 Hypervisor ID 列表中,选择是否根据其主机名或 UUID 识别卫星服务器中的虚拟机监控程序。
选择 Filtering 选项:
- 默认为 unrestricted。此配置涵盖的所有管理程序均可通过 virt-who 查询。如果不必限制要查询的虚拟机监控程序,则使用此选项。
- 您可以列出 白名单 或 黑名单 管理程序。例如,如果某些虚拟机监控程序仅运行 Microsoft Windows Server 虚拟机,则这些虚拟机监控程序不需要由 virt-who 报告。
- 如果您选择了 Whitelist 或 Blacklist: 在 Filter hosts 或 Exclude hosts 字段中,根据所选的 Hypervisor ID 输入以逗号分隔的管理程序列表。例如,如果虚拟机监控程序使用主机名标识,它们必须包含在其主机名中或排除它们。如果虚拟机监控程序的名称包含特殊字符,请将其用引号括起。支持通配符和正则表达式。请注意,在使用正则表达式时,必须转义反斜杠。
- 如果您选择了 esx type 和 Whitelist 或 Blacklist: 在 Filter host parents 或 Exclude host parents 字段中,输入以逗号分隔的集群列表。白名单集群中的虚拟机监控程序由 virt-who 报告。黑名单中的虚拟机监控程序不会由 virt-who 报告。如果集群名称包含特殊字符,请将其用引号括起。支持通配符和正则表达式。请注意,在使用正则表达式时,必须转义反斜杠。
- 可选: 如果您需要 调试输出来进行故障排除,请选择 Enable debug output 复选框。
可选:输入用于部署 virt-who 和 hypervisor 或虚拟化管理器的服务器间进行通信的 HTTP 代理。例如: http://proxy.example.com:3128。
要使用没有代理,请将这个字段留空;这与在 Ignore Proxy 字段中输入
*
的结果相同。- 可选:在 Ignore Proxy 字段中,输入以逗号分隔的主机名、IP 地址或域列表来绕过现有的代理设置。
- 点 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
- 以分钟为单位选择有关虚拟化平台的频率。因为虚拟机被授予最多七天的临时订阅,所以不需要频繁查询;您可以选择适合环境大小的时间间隔。每天(
1440
)适合大多数环境。 - 2
- 选择是否过滤虚拟机监控程序。如果不必限制要查询的虚拟机监控程序,请使用
none
。或者,您可以将虚拟机监控程序列入白名单
或黑名单
。例如,如果某些虚拟机监控程序仅运行 Microsoft Windows Server 虚拟机,则这些虚拟机监控程序不需要由 virt-who 报告。 - 3
- 选择如何识别该配置适用的虚拟机监控程序(或虚拟机监控程序)。使用
hostname
在卫星 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:
esx
-
Microsoft Hyper-V:
hyperv
-
请注意,不支持
rhevm
和xen
管理程序类型,kubevirt
管理程序类型仅作为技术预览提供。
-
Red Hat Enterprise Linux Virtualization(KVM)、Red Hat Virtualization 或 Red Hat OpenStack Platform:
- 5
- 指定此配置适用的服务器的 FQDN 或 IP 地址。对于 VMware vSphere,请使用 vCenter Server 的 FQDN 或 IP 地址。对于所有其他产品,请使用虚拟机监控程序的 FQDN 或 IP 地址。
- 6
- 指定您在管理程序或虚拟化管理器中创建的只读 virt 用户。在使用
libvirt
类型时,您不需要指定密码。对于其他类型的,您必须使用--hypervisor-password
选项指定 virt-who 用户密码。 - 7
- 可选:输入用于部署 virt-who 和 hypervisor 或虚拟化管理器的服务器间进行通信的 HTTP 代理。
第 5 章 部署 virt-who 配置
创建 virt-who 配置后,Satellite 提供了一个脚本来自动化部署过程。该脚本安装 virt-who 并创建单独和全局 virt-who 配置文件。
对于红帽产品,您必须将每个配置文件部署到文件中指定的虚拟机监控程序上。对于其他产品,您必须将配置文件部署到卫星服务器、胶囊服务器或单独的 Red Hat Enterprise Linux 服务器,该服务器专用于运行 virt-who。
- 要将文件部署到虚拟机监控程序或胶囊服务器,请参阅 第 5.1 节 “在 Hypervisor 上部署 virt-who 配置”。
- 要在裸机上部署文件,请参阅 第 5.2 节 “在服务器上部署 virt-who 配置”。
- 要在单独的 Red Hat Enterprise Linux 服务器中部署文件,请参考 第 5.3 节 “在 Red Hat Enterprise Linux 服务器 9 月部署 virt-who 配置”。
5.1. 在 Hypervisor 上部署 virt-who 配置
使用这个步骤在文件中指定的红帽 hypervisor 上部署 virt-who 配置。全局值仅适用于此管理程序。
您还可以使用这个步骤在 Capsule 服务器上部署 vCenter 或 Hyper-V virt-who 配置。全局配置值适用于同一胶囊服务器上的所有 virt-who 配置,每次部署新的 virt-who 配置时都会被覆盖。
先决条件
- 将虚拟机监控程序注册到红帽卫星。
-
如果您使用 Red Hat Virtualization Host(RHVH),请将其更新至最新版本,以便最小 virt-who 版本可用。默认情况下,RHVH 上提供了 virt-who,但无法通过
rhel-7-server-rhvh-4-rpms
存储库单独更新。 - 在管理程序中创建只读 virt-who 用户。
- 为您的虚拟化平台创建 virt-who 配置。
流程
- 在 Satellite Web UI 中,进入 Infrastructure > Virt-who 配置。
- 点 virt-who 配置的名称。
- 单击 Deploy 选项卡。
- 在 Configuration script 下,单击 Download the script。
将脚本复制到虚拟机监控程序:
# scp deploy_virt_who_config_1.sh root@hypervisor.example.com:
使部署脚本成为可执行文件并运行它:
# chmod +x deploy_virt_who_config_1.sh # sh deploy_virt_who_config_1.sh
部署完成后,删除脚本:
# rm deploy_virt_who_config_1
5.2. 在服务器上部署 virt-who 配置
使用这个步骤在 Satellite 服务器中部署 vCenter 或 Hyper-V virt-who 配置。
全局配置值适用于卫星服务器上的所有 virt-who 配置,每次部署新的 virt-who 配置时都会覆盖。
先决条件
- 在管理程序或虚拟化管理器中创建只读 virt-who 用户。
- 如果您要部署 Hyper-V virt-who 配置,请在 Hyper-V 管理程序上启用远程管理。
- 为您的虚拟化平台创建 virt-who 配置。
流程
- 在 Satellite Web UI 中,进入 Infrastructure > Virt-who 配置。
- 点 virt-who 配置的名称。
- 在 Hammer 命令 下,单击 Copy to clipboard。
- 在卫星服务器上,将 Hammer 命令粘贴到您的终端中。
5.3. 在 Red Hat Enterprise Linux 服务器 9 月部署 virt-who 配置
使用这个流程在专用 Red Hat Enterprise Linux 7 服务器中部署 vCenter 或 Hyper-V virt-who 配置。服务器可以是物理或虚拟的。
全局配置值适用于此服务器上的所有 virt-who 配置,每次部署新的 virt-who 配置时都会覆盖。
先决条件
- 在管理程序或虚拟化管理器中创建只读 virt-who 用户。
- 如果您要部署 Hyper-V virt-who 配置,请在 Hyper-V 管理程序上启用远程管理。
- 为您的虚拟化平台创建 virt-who 配置。
流程
在 Red Hat Enterprise Linux 服务器中安装 Satellite 服务器的 CA 证书:
# rpm -ivh http://satellite.example.com/pub/katello-ca-consumer-latest.noarch.rpm
将 Red Hat Enterprise Linux 服务器注册到 Satellite 服务器:
# subscription-manager register \ --org=organization_label \ --auto-attach
打开用于 virt-who 和 Satellite Server 间通信的网络端口:
# firewall-cmd --add-port="443/tcp" # firewall-cmd --add-port="443/tcp" --permanent
打开用于 virt-who 和每个管理程序或虚拟化管理器之间的通信的网络端口:
- VMware vCenter:TCP 端口 443
- Microsoft Hyper-V:TCP 端口 5985
- 在 Satellite Web UI 中,进入 Infrastructure > Virt-who 配置。
- 点 virt-who 配置文件的名称。
- 单击 Deploy 选项卡。
- 在 Configuration script 下,单击 Download the script。
将脚本复制到 Red Hat Enterprise Linux 服务器:
# scp deploy_virt_who_config_1.sh root@rhel.example.com:
使部署脚本成为可执行文件并运行它:
# chmod +x deploy_virt_who_config_1.sh # sh deploy_virt_who_config_1.sh
部署完成后,删除脚本:
# rm deploy_virt_who_config_1
第 6 章 注册虚拟机以使用基于主机的订阅
使用自动附加激活密钥注册虚拟机,以便它们从其虚拟机监控程序继承订阅。
有关激活码的更多信息,请参阅管理内容 中的 激活码 。
先决条件
- 创建启用了自动附加且没有附加订阅的激活码。
- 将基于主机的订阅附加到虚拟机的虚拟机监控程序。
- 创建并部署查询虚拟机的虚拟机监控程序的 virt-who 配置。
流程
配置虚拟机以使用 Satellite 服务器注册:
# yum install http://satellite.example.com/pub/katello-ca-consumer-latest.noarch.rpm
使用自动附加激活码注册虚拟机:
# subscription-manager register --org=organization_label \ --activationkey=activation_key_name
在卫星服务器等待 virt-who 提供虚拟机运行所在的管理程序信息时,虚拟机会收到临时订阅。在 virt-who 提供此信息后,卫星服务器会将永久订阅附加到虚拟机。
如果虚拟机迁移到报告到 virt-who 并且附加了基于主机的订阅的另一管理程序,则虚拟机会从该管理程序中继承订阅。如果虚拟机监控程序没有附加基于主机的订阅,卫星服务器会自动将基于主机的订阅附加到虚拟机监控程序,并且虚拟机将继承该订阅。
如果虚拟机迁移到未向 virt-who 报告的另一管理程序,或者没有可附加到管理程序的订阅不足,则虚拟机无法继承订阅。要避免这种情况,请确保所有管理程序都可将虚拟机迁移到了基于主机的订阅,并报告至 virt-who,或者将虚拟机迁移到特定的虚拟机监控程序。
附录 A. virt-who 故障排除
A.1. 修改 virt-who 配置
您可以使用 Satellite Web UI 或 Hammer CLI 修改现有 virt-who 配置。例如,如果您需要更改 virt-who 运行的频率,必须再次更新并部署 virt-who 的配置。
流程
- 在 Satellite Web UI 中,进入 Infrastructure > Virt-who 配置。
- 找到您要修改的 virt-who 配置,然后点 Actions 列中的 Edit。
- 编辑您要更改的字段。
- 点 Submit。
- 重新部署修改后的 virt-who 配置。
对于 CLI 用户
在卫星服务器上,输入
hammer virt-who-config update
命令,指定您要修改的配置的名称,以及您要更改的选项的新值。如果要更改配置的名称,则必须使用--new-name
选项。# hammer virt-who-config update \ --name current_name \ --new-name new_name \ --interval 1440
- 重新部署修改后的 virt-who 配置。
A.2. 删除现有 virt-who 配置
要删除现有的 virt-who 配置,您必须首先在 Satellite Web UI 中删除配置条目,然后从部署该配置的主机的文件系统中删除配置文件。
流程
- 在 Satellite Web UI 中,进入 Infrastructure > Virt-who 配置。
- 在您要删除的配置的 Actions 列表中,选择 Delete。
在您要从中删除 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 成功连接到卫星服务器并报告每个虚拟机监控程序管理的虚拟机。
要使用 CLI 列出所有 virt-who 实例的状态,请在卫星服务器上输入以下命令:
# hammer virt-who-config list
命令的输出包括向卫星服务器报告每个 virt-who 实例的日期和时间。
调试日志记录
检查 /var/log/rhsm/rhsm.log
文件,其中 virt-who 会记录其所有活动。
要启用更详细的日志记录,请修改 virt-who 配置:
- 在卫星 Web UI 中,选择 Enable 调试输出 复选框。
-
在 Hammer CLI 中,添加
--debug true
选项。
重新部署配置以使更改生效。
当底层问题解决时,修改 virt-who 配置以禁用调试,然后再次重新部署配置。
测试配置选项
进行更改并测试结果,根据需要重复。virt-who 提供两个选项,可以帮助测试配置文件、凭证和与虚拟化平台的连接:
-
virt-who --one-shot
命令读取配置文件,检索虚拟机列表并将其发送到卫星服务器,然后立即退出。 -
virt-who --print
命令读取配置文件并打印虚拟机列表,但不将其发送到卫星服务器。
预期的输出是虚拟机监控程序及其虚拟机列表,采用 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
检查虚拟机监控程序的数量
输入以下命令检查当前虚拟机监控程序 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 Troubleshooting 场景
virt-who 无法连接到虚拟化平台
如果 virt-who 无法连接到管理程序或虚拟化管理器,请检查 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 代理连接到管理程序或虚拟化管理器,请将代理配置为允许本地流量通过,或修改 virt-who 的配置不使用代理。
修改 virt-who 配置后,您必须重新部署该配置。
virt-who 无法报告到 Red Hat Satellite 服务器的主机客户机映射
在下列情况下,virt-who 无法报告到 Red Hat Satellite 服务器的主机客户机映射。
- 在 Red Hat Satellite 服务器上配置和部署 virt-who。
-
Red Hat Satellite 服务器的
rhsm.conf
文件被配置为使用代理服务器与 subscription.rhsm.redhat.com 和 cdn.redhat.com 通信。 -
存在
/etc/sysconfig/virt-who
中的no_proxy=*
设置,但 subscription-manager 会被忽略,virt-who 会尝试通过代理服务器连接到 Satellite 服务器,但失败。
在这种情况下,请在 /etc/rhsm/rhsm.conf
文件中添加以下参数。
no_proxy = satellite.example.com