6.5. 配置 virt-who


重要

使用环境变量和 sysconfig 文件的使用来配置 virt-who 已被弃用。它们在下一个主发行版本中将忽略它们。

每个虚拟化平台支持的 virt-who 配置不同:

  • 要为红帽产品配置 virt-who,请参阅 在红帽管理程序中安装和配置 virt-who
  • 要为 VMware vCenter 配置 virt-who,请参阅配置 virt-who 以连接到 VMware vCenter
  • 要为 Microsoft Hyper-V 配置 virt-who,请参阅配置 virt-who 以连接到 Microsoft-Hyper-V
  • 要为 OpenShift Virtualization 配置 virt-who,请参阅配置 virt-who 以连接到 OpenShift Virtualization

6.5.1. 在红帽 hypervisor 上安装和配置 virt-who

使用这个流程,在 Red Hat Enterprise Linux Virtualization (KVM) (KVM)、Red Hat Virtualization 或 Red Hat OpenStack Platform 的每个虚拟机监控程序上安装和配置 virt-who。

先决条件

  • 将 hypervisor 注册到红帽订阅管理。
  • 如果您使用 Red Hat Virtualization Host (RHVH),请将其更新至最新版本,以便最小 virt-who 版本可用。默认情况下,virt-who 在 RHVH 上可用,但无法从 rhel-7-server-rhvh-4-rpms 存储库中单独更新。

流程

  1. 在 hypervisor 上安装 virt-who:

    # yum install virt-who
  2. 可选:编辑 /etc/virt-who.conf 文件以更改或添加全局设置。由于 virt-who 安装在本地,因此这些设置仅适用于此 hypervisor。

    • 更改 VIRTWHO_INTERVAL 的值,以指定 virt-who 查询 hypervisor 的频率(以分钟为单位)。由于虚拟机被授予了最多 7 天的临时订阅,因此不需要频繁查询;您可以选择适合您环境大小的间隔。一旦一天(1440)适合大多数环境。
    • 如果要使用 HTTP 代理进行 virt-who 通信,请添加指定代理的行:

      http_proxy=https://proxy.example.com:443
    • 如果您不想为此服务器的任何 virt-who 通信使用 HTTP 代理,请添加以下行:

      NO_PROXY=*
      注意

      NO_PROXYcategories 可以使用,但只能在 /etc/sysconfig/virt-who 中使用。

      NO_PROXY 不是 /etc/virt-who.conf 中的有效配置。

  3. 将模板配置文件复制到新的独立配置文件中:

    # cp /etc/virt-who.d/template.conf /etc/virt-who.d/local.conf
  4. 编辑您刚才创建的配置文件,将示例值改为特定于您的配置:

    [local] 1
    type=libvirt 2
    owner=1234567 3
    hypervisor_id=hostname 4
    1
    名称不需要是唯一的,因为此配置文件是唯一由此 virt-who 实例管理的配置文件。
    2
    指定此 virt-who 连接是红帽 hypervisor。
    3
    管理程序所属的组织。您可以通过在 hypervisor 上运行 subscription-manager 组织 来查找机构。
    4
    指定如何识别 hypervisor。使用主机名为订阅管理提供有意义的主机名。或者,如果虚拟机监控程序被重命名,您可以使用 uuid 来避免重复。不要将 hwuuid 用于单个虚拟机监控程序。
  5. 启动并启用 virt-who 服务:

    # systemctl enable --now virt-who

为每个虚拟机监控程序重复这些步骤。

6.5.2. 配置 virt-who 以连接到 VMware vCenter

使用这个流程配置 virt-who 以连接到 VMware vCenter Server。

先决条件

  • 在 vCenter Server 中创建只读 virt-who 用户。virt-who 用户至少需要对 vCenter 数据中心中的所有对象进行只读访问。
  • 在 Red Hat Enterprise Linux 服务器上准备 virt-who 主机。

流程

  1. 在 virt-who 主机上,使用 virt-who-password 程序加密 virt-who 用户的密码:

    # virt-who-password

    出现提示时,输入 virt-who 用户的密码,然后记下密码的加密形式。

  2. 将模板配置文件复制到新的独立配置文件中:

    # cp /etc/virt-who.d/template.conf /etc/virt-who.d/vcenter1.conf

    为了在故障排除时轻松识别配置文件,请使用 VMware vCenter 主机名作为新文件的名称。在本例中,主机名是 vcenter1

  3. 编辑您刚才创建的配置文件,使用特定于您的配置的值更改示例值:

    [vcenter1] 1
    type=esx 2
    server=vcenter1.example.com 3
    username=virt_who_user 4
    encrypted_password=bd257f93d@482B76e6390cc54aec1a4d 5
    owner=1234567 6
    hypervisor_id=hostname 7
    filter_hosts=esx1.example.com, esx2.example.com 8
    1
    每个单独配置文件的名称必须是唯一的。使用 vCenter Server 主机名可以轻松地识别每个 hypervisor 的配置文件。
    2
    指定此 virt-who 连接是 VMware vCenter Server。
    3
    vCenter 服务器的 FQDN。
    4
    vCenter 服务器上 virt-who 用户的名称。
    5
    virt-who 用户的加密密码。
    6
    管理程序所属的组织。您可以通过在虚拟机监控程序上运行 subscription-manager 组织 来查找机构。
    7
    指定如何识别 hypervisor。使用主机名为订阅管理提供有意义的主机名。或者,您可以使用 uuidhwuuid 来避免在虚拟机监控程序重命名时出现重复。
    8
    如果某些虚拟机监控程序从不运行 Red Hat Enterprise Linux 虚拟机,则这些虚拟机监控程序不需要由 virt-who 报告。您可以使用以下选项之一过滤 hypervisor。支持通配符和正则表达式。如果名称包含特殊字符,请将其用引号括起。
    • filter_hostsexclude_hosts :根据指定的 hypervisor_id 提供以逗号分隔的虚拟机监控程序列表。例如,如果虚拟机监控程序由其主机名标识,它们必须由主机名包含或排除。
    • filter_host_parentsexclude_host_parents :提供以逗号分隔的集群列表。过滤的集群中虚拟机监控程序由 virt-who 报告。排除集群中的 hypervisor 不会被 virt-who 报告。
  4. 重启 virt-who 服务:

    # systemctl restart virt-who

为每个 vCenter 服务器重复这些步骤。

6.5.3. 配置 virt-who 以连接到 Microsoft Hyper-V

使用这个流程配置 virt-who 以连接到 Microsoft Hyper-V hypervisor。

先决条件

  • Red Hat Enterprise Linux 9 或更高版本。
  • 在 Red Hat Enterprise Linux 服务器上准备 virt-who 主机。
  • 为 hypervisor 启用基本身份验证模式。
  • 在 hypervisor 上启用远程管理。
  • 在 hypervisor 中创建只读 virt-who 用户。

流程

  1. 在 virt-who 主机上,使用 virt-who-password 程序加密 hypervisor 的 virt-who 用户的密码:

    # virt-who-password

    出现提示时,输入 virt-who 用户的密码,然后记下密码的加密形式。

  2. 将模板配置文件复制到新的独立配置文件中:

    # cp /etc/virt-who.d/template.conf /etc/virt-who.d/hyperv1.conf

    为了在故障排除时轻松识别配置文件,请使用 hypervisor 的主机名作为新文件的名称。在本例中,主机名是 hyperv1

  3. 编辑您刚才创建的配置文件,使用特定于您的配置的值更改示例值:

    [hyperv1] 1
    type=hyperv 2
    server=hyperv1.example.com 3
    username=virt_who_user 4
    encrypted_password=bd257f93d@482B76e6390cc54aec1a4d 5
    owner=1234567 6
    hypervisor_id=hostname 7
    1
    每个单独配置文件的名称必须是唯一的。使用 hypervisor 的主机名,可以轻松地识别每个 hypervisor 的配置文件。
    2
    指定此 virt-who 连接是 Microsoft Hyper-V hypervisor。
    3
    Hyper-V hypervisor 的 FQDN。
    4
    hypervisor 上 virt-who 用户的名称。
    5
    virt-who 用户的加密密码。
    6
    此 hypervisor 所属的组织。您可以通过在 hypervisor 上运行 subscription-manager 组织 来查找机构。
    7
    指定如何识别 hypervisor。使用主机名为订阅管理提供有意义的主机名。或者,如果虚拟机监控程序被重命名,您可以使用 uuid 来避免重复。不要将 hwuuid 用于单个虚拟机监控程序。
  4. 重启 virt-who 服务:

    # systemctl restart virt-who

为每个虚拟机监控程序重复这些步骤。

6.5.4. 配置 virt-who 以连接到 OpenShift Virtualization

支持的平台

OpenShift Virtualization 支持的 virt-who 状态:

  • virt-who-0.28.x-1.el7 (RHEL 7.9)
  • virt-who-0.29.x-1.el8 (RHEL 8.3)

流程

  1. 在您要订阅的集群中,创建一个名为 virt-who 的项目和服务帐户:

    $ oc new-project virt-who
    $ oc create serviceaccount virt-who
  2. 创建集群角色,以列出节点和虚拟机实例。

    $ oc create clusterrole lsnodes --verb=list --resource=nodes
    $ oc create clusterrole lsvmis --verb=list --resource=vmis
  3. 创建集群角色绑定。

    $ oc adm policy add-cluster-role-to-user lsnodes system:serviceaccount:virt-who:virt-who
    $ oc adm policy add-cluster-role-to-user lsvmis system:serviceaccount:virt-who:virt-who
  4. 验证 virt-who 系统帐户是否有所有运行的虚拟机的权限:

    $ oc get vmis -A --as=system:serviceaccount:virt-who:virt-who
  5. 在主机上安装 virt-who,该主机可以是在 OpenShift Virtualization 本身上运行的虚拟机:

    [virtwho-host]$ yum install virt-who
  6. 在订阅的主机上查找所有者号:

    $ subscription-manager orgs
  7. 将模板配置文件复制到新的单个配置文件中。为了在故障排除时轻松识别配置文件,请使用集群 API 的主机名。在本例中,主机名是 openshift-cluster-1

    [virtwho-host]# cp /etc/virt-who.d/template.conf /etc/virt-who.d/openshift-cluster-1.conf
    [cnv]
    type=kubevirt
    kubeconfig=/root/.kube/config
    hypervisor_id=hostname
    owner=<owner_number>
  8. 获取 virt-who 服务帐户的令牌:

    # oc serviceaccounts get-token virt-who
  9. 如果 /usr/bin/oc 不可用,请安装 /usr/bin/oc,并使用令牌登录并创建有效的 kubeconfig 文件。您必须通过包含 url 来指定集群 api。例如:

    [virtwho-host]# oc login https://api.testcluster-1.example.org:6443 --token=<token>
    1. 要在 kubeconfig 文件中使用 OpenShift Virtualization certificate-authority (CA)证书,将其从集群中提取,并将其保存到运行 virt-who 作为控制器守护进程的系统上的文件:

      oc get secret -n openshift-kube-apiserver-operator loadbalancer-serving-signer -o jsonpath='{.data.tls\.crt}' | base64 -d > $cluster-ca.pem
    2. 更改 kubeconfig 文件,使其包含提取的 CA 证书。例如:

      [virtwho-host]$ cat /root/.kube/config
      apiVersion: v1
      clusters:
      - cluster:
          server: https://api.testcluster.example.org:6443
          certificate-authority: /root/testcluster-ca.pem
        name: api-testcluster-example-org:6443
      contexts:
      - context:
          cluster: api-test-cluster-example-org:6443
          namespace: default
  10. 在启动该服务前,您可以手动测试配置:

    [virtwho-host]# virt-who --print
注意

如果安装了 jq 程序,您可以使用它更轻松地读取输出:{ virt-who --print | jq

  1. 启用 virt-who 服务:

    [virtwho-host]# systemctl enable virt-who
  2. 重启 virt-who 服务以使用新配置。

    [virtwho-host]# systemctl restart virt-who

virt-who 日志位于 /var/log/rhsm/rhsm.log 中。在这个文件中,您可以查看配置或连接错误。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.