配置虚拟机订阅
使用 virt-who 管理基于主机的订阅
摘要
对红帽文档提供反馈
我们感谢您对我们文档的反馈。让我们了解如何改进它。
使用 Red Hat Jira 中的 Create Issue 表单提供您的反馈。JIRA 问题是在 Red Hat Satellite Jira 项目中创建的,您可以在其中跟踪其进度。
先决条件
- 确保您已注册了 红帽帐户。
流程
- 单击以下链接: 创建问题。如果 Jira 显示登录错误,则登录并在您重定向到表单后继续。
- 完成 Summary 和 Description 字段。在 Description 字段中,包含文档 URL、章节号以及问题的详细描述。不要修改表单中的任何其他字段。
- 点 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,如本指南的以下部分所述。
在您的系统和激活码中设置系统目的。如需更多信息,请参阅以下资源:
- 管理内容中的管理 激活码
- 编辑管理主机中的主机系统目的
- 在连接的环境中,配置 Satellite 清单上传插件,将清单上传到 Red Hat Hybrid Cloud Console,以便可以使用 Subscriptions 服务进行订阅使用报告。您可以在 Satellite Web UI 中配置插件,方法是导航到 Configure > RH Cloud > Inventory Upload。有关订阅服务的更多信息,请参阅 Subscription Central 中的订阅服务入门。
1.2. 基于主机的订阅
虚拟机需要基于主机的订阅,而不是物理订阅。许多基于主机的订阅为无限虚拟机提供授权。
要允许虚拟机报告主机客户机到其 hypervisor 的映射,您必须安装和配置 virt-who。virt-who 查询虚拟化平台,并将 hypervisor 和虚拟机信息报告到 Red Hat Satellite。此信息用于报告您可以在 Red Hat Hybrid Cloud Console 上的订阅服务中获取的订阅使用情况。
要查看订阅是否需要 virt-who,在 Satellite Web UI 中导航到 Content > Subscriptions。如果 Requires Virt-Who 列中有一个 tick,您必须将 virt-who 配置为使用该订阅。
1.3. 配置概述
要允许虚拟机通过 hypervisor 报告 host-guest 映射和订阅信息,请完成以下步骤:
先决条件
- 将一个订阅清单(包括基于主机的订阅)导入到 Satellite 服务器中。如需更多信息,请参阅管理内容中的将红帽订阅清单导入到 Satellite 服务器中。
- 如果您使用 Microsoft Hyper-V,请在虚拟机监控程序上启用远程管理。
- 如果您使用 Nutanix AHV,请参阅 如何为 Nutanix AHV 配置 virt-who 以使用 红帽知识库 中的 RHSM。
在每个 hypervisor 或虚拟化管理器中创建一个具有只读访问权限的用户,以及非过期密码。virt-who 使用这个帐户来检索要报告到 Satellite 服务器的虚拟机列表。
- 对于红帽产品和 Microsoft Hyper-V,在每个运行 Red Hat Enterprise Linux 虚拟机的 hypervisor 上创建一个 virt-who 用户。
- 对于 VMware vSphere,在 vCenter 服务器上创建一个 virt-who 用户。virt-who 用户至少需要对 vCenter 数据中心中的所有对象的只读访问权限。
流程概述
- 第 1.4 节 “每个虚拟化平台的 virt-who 配置”.使用本节中的表来计划如何为虚拟化平台配置和部署 virt-who。
- 第 2 章 创建 virt-who 配置.为每个 hypervisor 或虚拟化管理器创建一个 virt-who 配置。
- 第 3 章 部署 virt-who 配置.使用 Satellite 生成的脚本部署 virt-who 配置。
- 将虚拟机注册到 Satellite 服务器。如需更多信息, 请参阅管理主机中的注册主机 。
1.4. 每个虚拟化平台的 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
[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
type
和 server
值取决于虚拟化平台。下表提供了更多详细信息。
用户名
指的是 hypervisor 或虚拟化管理器中的只读用户,您必须在配置 virt-who 之前创建。rhsm-username
指的是自动生成的用户,该用户只有 virt-who 报告到 Satellite 服务器的权限。
每个虚拟化平台所需的配置
使用此表来规划您的 virt-who 配置:
支持的虚拟化平台 | 在配置文件中指定的类型 | 配置文件中指定的服务器 | 部署配置文件的服务器 |
---|---|---|---|
Red Hat Virtualization RHEL 虚拟化(KVM) Red Hat OpenStack Platform | libvirt | hypervisor (每个虚拟机监控程序一个文件) | 每个 hypervisor |
VMware vSphere | esx | vCenter Server | Satellite 服务器、胶囊服务器或专用 RHEL 服务器 |
Microsoft Hyper-V | hyperv | Hyper-V hypervisor (每个虚拟机监控程序一个文件) | Satellite 服务器、胶囊服务器或专用 RHEL 服务器 |
virt-who 配置文件示例
此时会显示几个常见 hypervisor 类型的 virt-who 配置文件示例。
OpenStack virt-who 配置示例
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
[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
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
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 章 创建 virt-who 配置
使用这个流程创建 virt-who 配置。红帽产品和 Microsoft Hyper-V 需要为每个运行 Red Hat Enterprise Linux 虚拟机的虚拟机监控程序进行一个配置。VMware vSphere 需要为每个 vCenter Server 进行一个配置。
此流程中的大多数值都添加到 /etc/virt-who.d/conf_name.conf
文件中,并只适用于指定的 hypervisor 或虚拟化管理器。间隔、启用调试输出、HTTP 代理和 Ignore Proxy 是存储在 /etc/sysconfig/virt-who
文件中的全局值。全局配置值适用于同一服务器上的所有 virt-who 配置,并且每次部署新的 virt-who 配置时都会覆盖。
每个 virt-who 配置都会创建一个 virt_who_reporter_[id]
用户,并为它分配 Virt-who Reporter
角色,它为 Satellite 服务器提供最小权限。用户无法手动配置此用户,或用于登录 Satellite 服务器。
先决条件
- 如果您要为 Red Hat hypervisor (Red Hat Enterprise Linux 或 Red Hat Virtualization Host)创建 virt-who 配置,请将 hypervisor 注册到 Red Hat Satellite。
在 hypervisor 或虚拟化管理器中创建只读 virt-who 用户:
- 对于红帽产品和 Microsoft Hyper-V,在每个运行 Red Hat Enterprise Linux 虚拟机的 hypervisor 上创建一个 virt-who 用户。
- 对于 VMware vSphere,在 vCenter 服务器上创建一个 virt-who 用户。virt-who 用户至少需要对 vCenter 数据中心中的所有对象的只读访问权限。
流程
- 在 Satellite Web UI 中,进入到 Infrastructure > Virt-who configuration。
- 单击 Create Config。在 New Virt-who Config 窗口中,您可以点击帮助图标了解有关每个字段的更多信息。
- 输入配置的名称。
从 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 服务器的 FQDN 或 IP 地址。对于所有其他产品,请使用 hypervisor 的 FQDN 或 IP 地址。
- 在 Hypervisor Username 字段中,输入您在虚拟机监控程序或虚拟化管理器中创建的 virt-who 用户的名称。
- 在 Hypervisor Password 字段中,输入 virt-who 用户的密码。当您部署配置时,此密码会被加密。使用 libvirt 类型时不需要此字段。
- 从 Interval 列表中选择 virt-who 请求新的或更新的虚拟机信息的频率。由于虚拟机被授予最多七天的临时订阅,因此不需要频繁的查询;您可以选择适合环境大小的间隔。每 24 小时 都适合大多数环境。
- 输入 Satellite 服务器 FQDN。
- 从 Hypervisor ID 列表中,选择是否通过其主机名或 UUID 在 Satellite 服务器中识别虚拟机监控程序。
选择 Filtering 选项:
- 默认为 unlimited。此配置涵盖的所有虚拟机监控程序都由 virt-who 查询。如果您不必限制查询哪些虚拟机监控程序,则使用此选项。
- 您可以用 白名单 或 黑名单 管理程序。例如,如果某些虚拟机监控程序只运行 Microsoft Windows Server 虚拟机,则 virt-who 不需要报告这些管理程序。
- 如果您选择了 Whitelist 或 Blacklist :在 Filter hosts 或 Exclude hosts 字段中,根据所选的 Hypervisor ID 输入以逗号分隔的虚拟机监控程序列表。例如,如果虚拟机监控程序通过其主机名标识,则必须通过其主机名包含或排除它们。如果管理程序的名称包含特殊字符,请将其用引号括起来。支持通配符和正则表达式。请注意,在使用正则表达式时,必须转义反斜杠。
如果您选择了 esx 类型和 Whitelist 或 Blacklist :在 Filter host parents 或 Exclude host parents 字段中,请输入以逗号分隔的集群 ID 列表。如需更多信息,请参阅红帽知识库中的 对 VMware 集群使用"Filter Host Parents"和"Exclude Host Parents"属性。
允许的集群中的虚拟机监控程序由
virt-who
报告。排除集群中的虚拟机监控程序不会由virt-who
报告。如果集群名称包含特殊字符,请将其用引号括起。支持通配符和正则表达式。请注意,在使用正则表达式时,必须转义反斜杠。- 可选:如果您需要 调试输出来进行故障排除,请选择 Enable debug output 复选框。
可选:输入一个 HTTP 代理,用于部署 virt-who 的服务器和 hypervisor 或虚拟化管理器之间的通信。例如: http://proxy.example.com:3128。
要使用代理,请将此字段留空 ; 这与在 Ignore Proxy 字段中输入
*
的结果相同。- 可选: 在 Ignore Proxy 字段中,输入以逗号分隔的主机名、IP 地址或域列表来绕过现有的代理设置。
- 点 Submit。
对于 CLI 用户
在 Satellite 服务器上,输入
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 \ --filtering-mode none \ --hypervisor-id hostname \ --hypervisor-type libvirt \ --hypervisor-server rhel.example.com \ --hypervisor-username virt-who \ --proxy 'http://proxy.example.com:3128' \ --satellite-url satellite.example.com
# 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 Copied!
- 1
- 选择 virt-who 查询虚拟化平台的频率。您可以选择适合环境大小的间隔。对于对订阅服务的准确报告,一天(
720
)适合大多数环境。 - 2
- 选择是否过滤 hypervisor。如果您不必限制查询哪些虚拟机监控程序,则使用
none
。或者,您也可以将
虚拟机监控程序列入黑名单
。例如,如果某些虚拟机监控程序只运行 Microsoft Windows Server 虚拟机,则 virt-who 不需要报告这些管理程序。 - 3
- 选择如何识别此配置适用的虚拟机监控程序(或虚拟机监控程序)。使用
hostname
在 Satellite Web UI 中提供有意义的主机名。或者,您可以使用uuid
来避免在虚拟机监控程序被重命名时重复。hwuuid
仅在此配置应用到虚拟化管理器而不是单独的 hypervisor 时才使用,且不得在 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 服务器的 FQDN 或 IP 地址。对于所有其他产品,请使用 hypervisor 的 FQDN 或 IP 地址。
- 6
- 指定您在 hypervisor 或虚拟化管理器中创建的只读 virt-who 用户。在使用
libvirt
类型时,您不需要指定密码。对于其他类型,您必须使用-hypervisor-password 选项指定 virt-
who 用户的密码。 - 7
- 可选:输入用于部署 virt-who 的服务器和 hypervisor 或虚拟化管理器之间的通信的 HTTP 代理。
第 3 章 部署 virt-who 配置
创建 virt-who 配置后,Satellite 提供了一个脚本来自动化部署过程。该脚本安装 virt-who 并创建单个和全局 virt-who 配置文件。
对于红帽产品,您必须将每个配置文件部署到文件中指定的 hypervisor 上。对于其它产品,您必须将配置文件部署到 Satellite 服务器上,或者专门运行 virt-who 的独立 Red Hat Enterprise Linux 服务器。
- 要在虚拟机监控程序或 Capsule 服务器中部署文件,请参阅 第 3.1 节 “在 hypervisor 上部署 virt-who 配置”。
- 要在 Satellite 服务器上部署文件,请参阅 第 3.2 节 “在 Satellite 服务器上部署 virt-who 配置”。
- 要在单独的 Red Hat Enterprise Linux 服务器中部署文件,请参阅 第 3.3 节 “在单独的 Red Hat Enterprise Linux 服务器中部署 virt-who 配置”。
3.1. 在 hypervisor 上部署 virt-who 配置
使用这个流程在文件中指定的红帽 hypervisor 上部署 virt-who 配置。全局值只适用于这个 hypervisor。
您还可以使用此流程在 Capsule 服务器上部署 vCenter 或 Hyper-V virt-who 配置。全局配置值适用于同一 Capsule 服务器上所有 virt-who 配置,并且每次部署新的 virt-who 配置时都会覆盖。
先决条件
- 将 hypervisor 注册到 Red Hat Satellite。
-
如果您使用 Red Hat Virtualization Host (RHVH),请将其更新至最新版本,以便最小 virt-who 版本可用。默认情况下,virt-who 在 RHVH 上可用,但不能从
rhel-7-server-rhvh-4-rpms
存储库中单独更新。 - 在 hypervisor 上创建一个只读 virt-who 用户。
- 为您的虚拟化平台创建 virt-who 配置。
流程
- 在 Satellite Web UI 中,进入到 Infrastructure > Virt-who configuration。
- 点 virt-who 配置的名称。
- 单击 Deploy 选项卡。
- 在 Configuration script 下,单击 Download the script。
将脚本复制到 hypervisor 中:
scp deploy_virt_who_config_1.sh root@hypervisor.example.com:
# scp deploy_virt_who_config_1.sh root@hypervisor.example.com:
Copy to Clipboard Copied! 使部署脚本可执行并运行它:
chmod +x deploy_virt_who_config_1.sh sh deploy_virt_who_config_1.sh
# chmod +x deploy_virt_who_config_1.sh # sh deploy_virt_who_config_1.sh
Copy to Clipboard Copied! 部署完成后,删除脚本:
rm deploy_virt_who_config_1
# rm deploy_virt_who_config_1
Copy to Clipboard Copied!
3.2. 在 Satellite 服务器上部署 virt-who 配置
使用这个流程在 Satellite 服务器上部署 vCenter 或 Hyper-V virt-who 配置。
全局配置值适用于 Satellite 服务器上的所有 virt-who 配置,并在每次部署新的 virt-who 配置时被覆盖。
先决条件
- 在管理程序或虚拟化管理器上创建只读 virt-who 用户。
- 如果要部署 Hyper-V virt-who 配置,请在 Hyper-V hypervisor 上启用远程管理。
- 为您的虚拟化平台创建 virt-who 配置。
流程
- 在 Satellite Web UI 中,进入到 Infrastructure > Virt-who configuration。
- 点 virt-who 配置的名称。
- 在 Hammer 命令 下,单击 Copy to clipboard。
- 在 Satellite 服务器上,将 Hammer 命令粘贴到您的终端中。
3.3. 在单独的 Red Hat Enterprise Linux 服务器中部署 virt-who 配置
使用这个流程在专用的 Red Hat Enterprise Linux 7 服务器上部署 vCenter 或 Hyper-V virt-who 配置。服务器可以是物理或虚拟服务器。
全局配置值适用于这个服务器上所有 virt-who 配置,并在每次部署新的 virt-who 配置时被覆盖。
先决条件
- 在管理程序或虚拟化管理器上创建只读 virt-who 用户。
- 如果要部署 Hyper-V virt-who 配置,请在 Hyper-V hypervisor 上启用远程管理。
- 为您的虚拟化平台创建 virt-who 配置。
流程
在 Red Hat Enterprise Linux 服务器上,安装 Satellite 服务器的 CA 证书:
rpm -ivh http://satellite.example.com/pub/katello-ca-consumer-latest.noarch.rpm
# rpm -ivh http://satellite.example.com/pub/katello-ca-consumer-latest.noarch.rpm
Copy to Clipboard Copied! 将 Red Hat Enterprise Linux 服务器注册到 Satellite 服务器:
subscription-manager register \ --org=organization_label \ --auto-attach
# subscription-manager register \ --org=organization_label \ --auto-attach
Copy to Clipboard Copied! 打开用于 virt-who 和 Satellite 服务器间通信的网络端口:
firewall-cmd --add-port="443/tcp" firewall-cmd --add-port="443/tcp" --permanent
# firewall-cmd --add-port="443/tcp" # firewall-cmd --add-port="443/tcp" --permanent
Copy to Clipboard Copied! 打开用于 virt-who 和每个 hypervisor 或虚拟化管理器之间的通信的网络端口:
- VMware vCenter:TCP 端口 443
- Microsoft Hyper-V: TCP 端口 5985
- 在 Satellite Web UI 中,进入到 Infrastructure > Virt-who configuration。
- 点 virt-who 配置文件的名称。
- 单击 Deploy 选项卡。
- 在 Configuration script 下,单击 Download the script。
将脚本复制到 Red Hat Enterprise Linux 服务器中:
scp deploy_virt_who_config_1.sh root@rhel.example.com:
# scp deploy_virt_who_config_1.sh root@rhel.example.com:
Copy to Clipboard Copied! 使部署脚本可执行并运行它:
chmod +x deploy_virt_who_config_1.sh sh deploy_virt_who_config_1.sh
# chmod +x deploy_virt_who_config_1.sh # sh deploy_virt_who_config_1.sh
Copy to Clipboard Copied! 部署完成后,删除脚本:
rm deploy_virt_who_config_1
# rm deploy_virt_who_config_1
Copy to Clipboard Copied!
附录 A. 对 virt-who 进行故障排除
A.1. 修改 virt-who 配置
您可以使用 Satellite Web UI 或 Hammer CLI 修改现有的 virt-who 配置。例如,如果您需要更改 virt-who 运行的频率,则必须再次更新并部署 virt-who 配置。
流程
- 在 Satellite Web UI 中,进入到 Infrastructure > Virt-who configuration。
- 找到您要修改的 virt-who 配置,然后点击 Actions 列中的 Edit。
- 编辑您要更改的字段。
- 点 Submit。
- 重新部署修改后的 virt-who 配置。
对于 CLI 用户
在 Satellite 服务器上,输入
hammer virt-who-config update
命令,指定您要修改的配置的名称,以及您要更改的选项的新值。如果要更改配置的名称,则必须使用 option--new-name
。hammer virt-who-config update \ --name current_name \ --new-name new_name \ --interval 1440
# hammer virt-who-config update \ --name current_name \ --new-name new_name \ --interval 1440
Copy to Clipboard Copied! - 重新部署修改后的 virt-who 配置。
A.2. 删除现有 virt-who 配置
要删除现有的 virt-who 配置,您必须首先在 Satellite Web UI 中删除配置条目,然后从部署了配置的主机的文件系统中删除配置文件。
流程
- 在 Satellite Web UI 中,进入到 Infrastructure > Virt-who configuration。
- 从您要删除的配置的 Actions 列表中,选择 Delete。
在您要从中删除 virt-who 配置的主机上,删除配置文件:
rm /etc/virt-who.d/conf_name.conf
# rm /etc/virt-who.d/conf_name.conf
Copy to Clipboard Copied!
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
# hammer virt-who-config list
命令的输出包括每个 virt-who 实例报告到 Satellite 服务器的日期和时间。
调试日志记录
检查 /var/log/rhsm/rhsm.log
文件,其中 virt-who 默认记录其所有活动。
要启用更详细的日志记录,请修改 virt-who 配置:
- 在 Satellite Web UI 中,选中 Enable debugging output 复选框。
-
在 Hammer CLI 中,添加 the-
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" } },
{
"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
# virt-who --debug --one-shot --config /tmp/conf_name.conf
识别重复的虚拟机监控程序
重复的 hypervisor 可能会导致订阅和权利错误。输入以下命令检查重复的 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
# 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
# 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 数量
输入以下命令检查当前报告的 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
# 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
# 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
,则 hypervisor 可能会侦听错误的端口。在这种情况下,修改 virt-who 配置,并将正确的端口号附加到 Hypervisor Server 值。
在修改后,您必须重新部署 virt-who 配置。
virt-who 无法通过本地网络上的 HTTP 代理连接到虚拟化平台
如果 virt-who 无法通过 HTTP 代理连接到 hypervisor 或虚拟化管理器,请将代理配置为允许本地流量通过,或者修改 virt-who 配置以使用代理。
在修改后,您必须重新部署 virt-who 配置。
virt-who 无法向 Red Hat Satellite 服务器报告 host-guest 映射
在以下情况下,virt-who 无法报告 host-guest 映射到 Red Hat Satellite 服务器。
- virt-who 是在 Red Hat Satellite 服务器上配置和部署的。
-
Red Hat Satellite 服务器的
rhsm.conf
文件被配置为使用代理服务器与 subscription.rhsm.redhat.com 和 cdn.redhat.com 通信。 -
/etc/sysconfig/virt-who
中的no_proxy
vendor 设置存在,但 subscription-manager 忽略,virt-who 会尝试通过代理服务器重新连接到 Satellite 服务器,但失败。
在本例中,在 /etc/rhsm/rhsm.conf
文件中添加以下参数。
no_proxy = satellite.example.com
no_proxy = satellite.example.com