6.5. virt-who 구성
환경 변수를 사용하고 sysconfig 파일을 사용하여 virt-who를 구성하는 것은 더 이상 사용되지 않습니다. 다음 주요 릴리스에서 해당 사용은 무시됩니다.
지원되는 virt-who 구성은 각 가상화 플랫폼에 따라 다릅니다.
- Red Hat 제품의 virt-who를 구성하려면 Red Hat 하이퍼바이저에 virt-who 설치 및 구성 을 참조하십시오.
- VMware vCenter에 대한 virt-who를 구성하려면 VMware vCenter에 연결하도록 virt-who 구성 을 참조하십시오.
- Microsoft Hyper-V용 virt-who를 구성하려면 Microsoft-Hyper -V에 연결하도록 virt-who 구성 을 참조하십시오.
- OpenShift Virtualization용 virt-who를 구성하려면 OpenShift Virtualization에 연결하도록 virt-who 구성 을 참조하십시오.
6.5.1. Red Hat 하이퍼바이저에 virt-who 설치 및 구성
다음 절차에 따라 KVM(Red Hat Enterprise Linux Virtualization)(KVM), Red Hat Virtualization 또는 Red Hat OpenStack Platform의 각 하이퍼바이저에 virt-who를 설치하고 구성합니다.
사전 요구 사항
- 하이퍼바이저를 Red Hat 서브스크립션 관리에 등록합니다.
-
RHVH(Red Hat Virtualization Host)를 사용하는 경우 최소 virt-who 버전을 사용할 수 있도록 최신 버전으로 업데이트합니다. virt-who는 기본적으로 RHVH에서 사용할 수 있지만
rhel-7-server-rhvh-4-rpms
리포지토리에서 개별적으로 업데이트할 수 없습니다.
프로세스
하이퍼바이저에 virt-who를 설치합니다.
# yum install virt-who
선택 사항:
/etc/virt-who.conf
파일을 편집하여 글로벌 설정을 변경하거나 추가합니다. virt-who가 로컬로 설치되므로 이러한 설정은 이 하이퍼바이저에만 적용됩니다.-
virt-who가 하이퍼바이저를 쿼리하는 빈도를 지정하도록
VIRT Cryostat_INTERVAL
의 값을 변경합니다. 가상 머신에 최대 7일 동안 임시 서브스크립션이 부여되므로 빈번한 쿼리가 필요하지 않으므로 환경 크기에 맞는 간격을 선택할 수 있습니다. 하루에 한 번 (1440
)은 대부분의 환경에 적합합니다. virt-who 통신에 HTTP 프록시를 사용하려면 프록시를 지정하는 행을 추가합니다.
http_proxy=https://proxy.example.com:443
이 서버의 virt-who 통신에 HTTP 프록시를 사용하지 않으려면 다음 행을 추가합니다.
NO_PROXY=*
참고NO_PROXY=*
는/etc/sysconfig/virt-who
에서만 사용할 수 있습니다.NO_PROXY
는/etc/virt-who.conf
의 유효한 구성이 아닙니다.
-
virt-who가 하이퍼바이저를 쿼리하는 빈도를 지정하도록
템플릿 구성 파일을 새 개별 구성 파일에 복사합니다.
# cp /etc/virt-who.d/template.conf /etc/virt-who.d/local.conf
방금 생성한 구성 파일을 편집하여 예제 값을 구성과 관련된 값으로 변경합니다.
[local] 1 type=libvirt 2 owner=1234567 3 hypervisor_id=hostname 4
- 1
- 이 구성 파일은 virt-who의 이 인스턴스에서 관리하는 유일한 구성 파일이므로 이름은 고유할 필요가 없습니다.
- 2
- 이 virt-who 연결이 Red Hat 하이퍼바이저에 연결되도록 지정합니다.
- 3
- 하이퍼바이저가 속한 조직입니다. 하이퍼바이저에서
subscription-manager orgs
를 실행하여 조직을 찾을 수 있습니다. - 4
- 하이퍼바이저를 식별하는 방법을 지정합니다.
호스트 이름을
사용하여 서브스크립션 관리에 의미 있는 호스트 이름을 제공합니다. 또는 하이퍼바이저의 이름이 변경된 경우uuid
를 사용하여 중복을 방지할 수 있습니다. 개별 하이퍼바이저에는hwuuid
를 사용하지 마십시오.
virt-who 서비스를 시작하고 활성화합니다.
# systemctl enable --now virt-who
각 하이퍼바이저에 대해 이 단계를 반복합니다.
6.5.2. VMware vCenter에 연결하도록 virt-who 구성
VMware vCenter Server에 연결하도록 virt-who를 구성하려면 다음 절차를 사용하십시오.
사전 요구 사항
- vCenter Server에 읽기 전용 virt-who 사용자를 생성합니다. virt-who 사용자는 vCenter Data Center의 모든 오브젝트에 대한 읽기 전용 액세스 권한이 필요합니다.
- Red Hat Enterprise Linux 서버에서 virt-who 호스트를 준비합니다.
프로세스
virt-who 호스트에서 virt-who-password 유틸리티를 사용하여
virt-who 사용자의 암호를
암호화합니다.# virt-who-password
메시지가 표시되면 virt-who 사용자의 암호를 입력한 다음 암호화된 암호 형식을 기록합니다.
템플릿 구성 파일을 새 개별 구성 파일에 복사합니다.
# cp /etc/virt-who.d/template.conf /etc/virt-who.d/vcenter1.conf
문제 해결 시 구성 파일을 쉽게 식별할 수 있도록 VMware vCenter 호스트 이름을 새 파일의 이름으로 사용합니다. 이 예에서 호스트 이름은 vcenter1 입니다.
방금 생성한 구성 파일을 편집하여 구성과 관련된 예제 값을 변경합니다.
[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 호스트 이름을 사용하여 각 하이퍼바이저의 구성 파일을 쉽게 식별할 수 있습니다.
- 2
- 이 virt-who 연결이 VMware vCenter Server에 연결되도록 지정합니다.
- 3
- vCenter 서버의 FQDN입니다.
- 4
- vCenter Server의 virt-who 사용자 이름입니다.
- 5
- virt-who 사용자의 암호화된 암호입니다.
- 6
- 하이퍼바이저가 속한 조직입니다. 하이퍼바이저에서
subscription-manager orgs
를 실행하여 조직을 찾을 수 있습니다. - 7
- 하이퍼바이저를 식별하는 방법을 지정합니다.
호스트 이름을
사용하여 서브스크립션 관리에 의미 있는 호스트 이름을 제공합니다. 또는uuid
또는hwuuid
를 사용하여 하이퍼바이저의 이름이 변경된 경우 중복을 방지할 수 있습니다. - 8
- 일부 하이퍼바이저에서 Red Hat Enterprise Linux 가상 머신을 실행하지 않는 경우 해당 하이퍼바이저를 virt-who에 보고할 필요가 없습니다. 다음 옵션 중 하나를 사용하여 하이퍼바이저를 필터링할 수 있습니다. 와일드카드 및 정규식이 지원됩니다. 이름에 특수 문자가 포함된 경우 따옴표로 묶습니다.
-
filter_hosts
또는exclude_hosts
: 지정된hypervisor_id
에 따라 쉼표로 구분된 하이퍼바이저 목록을 제공합니다. 예를 들어 하이퍼바이저가 호스트 이름으로 식별되는 경우 호스트 이름으로 포함되거나 제외되어야 합니다. -
filter_host_parents
또는exclude_host_parents
: 쉼표로 구분된 클러스터 목록을 제공합니다. 필터링된 클러스터의 하이퍼바이저는 virt-who에 의해 보고됩니다. 제외된 클러스터의 하이퍼바이저는 virt-who에 의해 보고되지 않습니다.
-
virt-who 서비스를 다시 시작하십시오.
# systemctl restart virt-who
각 vCenter Server에 대해 이 단계를 반복합니다.
6.5.3. Microsoft Hyper-V에 연결하도록 virt-who 구성
Microsoft Hyper-V 하이퍼바이저에 연결하도록 virt-who를 구성하려면 다음 절차를 사용하십시오.
사전 요구 사항
- Red Hat Enterprise Linux 9 이상.
- Red Hat Enterprise Linux 서버에서 virt-who 호스트를 준비합니다.
- 하이퍼바이저의 기본 인증 모드를 활성화합니다.
- 하이퍼바이저에서 원격 관리를 활성화합니다.
- 하이퍼바이저에 읽기 전용 virt-who 사용자를 생성합니다.
프로세스
virt-who 호스트에서
virt-who-password
유틸리티를 사용하여 하이퍼바이저의 virt-whoho 사용자의 암호를 암호화합니다.# virt-who-password
메시지가 표시되면 virt-who 사용자의 암호를 입력한 다음 암호화된 암호 형식을 기록합니다.
템플릿 구성 파일을 새 개별 구성 파일에 복사합니다.
# cp /etc/virt-who.d/template.conf /etc/virt-who.d/hyperv1.conf
문제 해결 시 구성 파일을 쉽게 식별할 수 있도록 하이퍼바이저의 호스트 이름을 새 파일의 이름으로 사용합니다. 이 예에서 호스트 이름은 hyperv1 입니다.
방금 생성한 구성 파일을 편집하여 구성과 관련된 예제 값을 변경합니다.
[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
- 이름은 개별 구성 파일에 대해 고유해야 합니다. 하이퍼바이저의 호스트 이름을 사용하여 각 하이퍼바이저의 구성 파일을 쉽게 식별할 수 있습니다.
- 2
- 이 virt-who 연결이 Microsoft Hyper-V 하이퍼바이저에 연결되도록 지정합니다.
- 3
- Hyper-V 하이퍼바이저의 FQDN입니다.
- 4
- 하이퍼바이저의 virt-who 사용자 이름입니다.
- 5
- virt-who 사용자의 암호화된 암호입니다.
- 6
- 하이퍼바이저가 속한 조직입니다. 하이퍼바이저에서
subscription-manager orgs
를 실행하여 조직을 찾을 수 있습니다. - 7
- 하이퍼바이저를 식별하는 방법을 지정합니다.
호스트 이름을
사용하여 서브스크립션 관리에 의미 있는 호스트 이름을 제공합니다. 또는 하이퍼바이저의 이름이 변경된 경우uuid
를 사용하여 중복을 방지할 수 있습니다. 개별 하이퍼바이저에는hwuuid
를 사용하지 마십시오.
virt-who 서비스를 다시 시작하십시오.
# systemctl restart virt-who
각 하이퍼바이저에 대해 이 단계를 반복합니다.
6.5.4. OpenShift Virtualization에 연결하도록 virt-who 구성
지원되는 플랫폼
virt-who에서 OpenShift Virtualization 지원 상태:
- virt-who-0.28.x-1.el7 (RHEL 7.9)
- virt-who-0.29.x-1.el8 (RHEL 8.3)
프로세스
구독하려는 클러스터에서 virt-who라는 프로젝트 및 서비스 계정을 생성합니다.
$ oc new-project virt-who $ oc create serviceaccount virt-who
클러스터 역할을 생성하여 노드 및 가상 머신 인스턴스를 나열합니다.
$ oc create clusterrole lsnodes --verb=list --resource=nodes $ oc create clusterrole lsvmis --verb=list --resource=vmis
클러스터 역할 바인딩을 생성합니다.
$ 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
virt-who 시스템 계정에 실행 중인 모든 VM을 나열할 수 있는 권한이 있는지 확인합니다.
$ oc get vmis -A --as=system:serviceaccount:virt-who:virt-who
OpenShift Virtualization 자체에서 실행되는 VM일 수 있는 호스트에 virt-who를 설치합니다.
[virtwho-host]$ yum install virt-who
서브스크립션 호스트에서 소유자 번호를 찾습니다.
$ subscription-manager orgs
템플릿 구성 파일을 새 개별 구성 파일에 복사합니다. 문제 해결 시 구성 파일을 쉽게 식별할 수 있도록 클러스터 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>
virt-who 서비스 계정의 토큰을 가져옵니다.
# oc serviceaccounts get-token virt-who
/usr/bin/oc
을 사용할 수 없는 경우/usr/bin/oc
을 설치하고 토큰을 사용하여 로그인하고 유효한 kubeconfig 파일을 생성합니다. url을 포함하여 클러스터 API를 지정해야 합니다. 예를 들면 다음과 같습니다.[virtwho-host]# oc login https://api.testcluster-1.example.org:6443 --token=<token>
kubeconfig 파일에서 OpenShift Virtualization 인증서 인증 (CA) 인증서를 사용하려면 클러스터에서 추출하여 virt-who를 컨트롤러 데몬으로 실행하는 시스템의 파일에 저장합니다.
oc get secret -n openshift-kube-apiserver-operator loadbalancer-serving-signer -o jsonpath='{.data.tls\.crt}' | base64 -d > $cluster-ca.pem
추출된 CA 인증서를 포함하도록 kubeconfig 파일을 변경합니다. 예를 들면 다음과 같습니다.
[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
서비스를 시작하기 전에 구성을 수동으로 테스트할 수 있습니다.
[virtwho-host]# virt-who --print
jq
프로그램이 설치되어 있으면 출력을 더 쉽게 읽을 수 있습니다. # virt-who --print | jq
virt-who 서비스를 활성화합니다.
[virtwho-host]# systemctl enable virt-who
virt-who 서비스를 다시 시작하여 새 구성을 사용합니다.
[virtwho-host]# systemctl restart virt-who
virt-who 로그는 /var/log/rhsm/rhsm.log
에서 사용할 수 있습니다. 이 파일에서 구성 또는 연결 오류를 볼 수 있습니다.