vCenter를 ELM(Enhanced Linked Mode)로 사용하는 환경에서 같이 이해가 필요한 것이 vmdir replication 입니다.
ELM은 단일 vCenter UI에서 복수 개의 vCenter를 관리할 수 있도록 해주는 기능으로 ELM을 사용하는 모든 vCenter가 replication을 통해 vmdir의 동일 복제본을 가지고 있어야 합니다.
vmdir replication은 기본적으로 vCenter 간 정보 교환을 위해서 활용되며, ELM을 구성할 때 SSO domain 내에 추가하는 vCenter는 자동으로 partner로 설정이 됩니다.
오늘은 이 vmdir replication에 대해서 알아보도록 하겠습니다.
사실 Active Directory의 Replication 에 대해서 공부해보셨다면, vmdir이 Active Directory와 거의 동일하구나 하는 느낌을 받으실 수 있을 겁니다.
vmdir과 Active Directory 모두 Multi-master replication을 concept으로 가져가며 Active Directory의 경우에는 DCE/RPC 기반으로 Active Directory Database 내용을 복제하지만, vmdir은 LDAP 동기화 프토토콜을 사용한다는 점이 차이점입니다.
vmdir replication 소개
vmdir replication은 USN(Unique Sequence Number)를 기반으로 동작합니다. USN 이외에 UTD vector, Invoation ID, lastLocalUsnProcessed 값들이 추가로 있지만 USN 만 기억하시면 되겠습니다.
USN은 부호 있는 64bit 정수 값으로 vmdir에 발생하는 add/delete/modify 등의 동작마다 값이 증가합니다.
vmdir은 partner node와 복제를 위해서 machine account의 credential을 생성하는데요.
machine account은 vmdir 초기 설치 시에 생성되며, 이에 대한 credential 정보는 lwregshell registry에 보관됩니다.
vmdir의 복제를 위해서 vmdird 프로세스 내에 별도 쓰레드를 이용하며, 기본 복제 interval인 30초마다 partner로부터 변경 사항을 가져오고, replication parnter 목록을 기반으로 순차적으로 replication agreement를 점검합니다.
vmdir은 총 9가지의 상태 정보를 가지는데 그 중에서 중요한 5가지는 다음과 같습니다.
- Red Only : partner로부터 복제본을 사용하는 경우, 주로 snapshot을 vCenter을 돌린 경우에 발생할 수 있습니다.
- Normal : vmdir이 replication과 add/delete/modify 등의 동작에 문제가 없는 경우입니다.
- Failure : 해결되지 않는 replication 이슈가 있는 경우입니다.
- Restore : vmdir이 partner와 data를 복구 시도하는 경우입니다.
- Standalone : partner와의 복제 환경이 없는 초기 설치 시 Standalone으로 포현됩니다.
vmdir replication 상태 점검
본 테스트는 vc-sitea.contoso.com과 vc-siteb.contoso.com 두 대의 vCenter가 ELM 구성된 환경에서 수행되었습니다.
1. 아래 2가지 명령어 중 하나를 선택하시어 vmdir의 state를 확인할 수 있습니다.
/usr/lib/vmware-vmdir/bin/vdcadmintool 도구의 경우에는 Interactive Mode로 동작하기 때문에 실행 후 메뉴가 보이면 원하는 메뉴에 해당하는 숫자를 입력하여 결과를 확인하는 방식입니다.
아래 결과를 보시면 vmdir state를 조회하기 위해서 6번 메뉴를 선택하였고, 이에 대한 결과로 Normal state를 Return 받았습니다.
또는, dir-cli 명령어로도 동일한 결과값을 조회하실 수 있습니다.
root@vc-sitea [ ~ ]# /usr/lib/vmware-vmdir/bin/vdcadmintool ================== Please select: 0. exit 1. Test LDAP connectivity 2. Force start replication cycle 3. Reset account password 4. Set log level and mask 5. Set vmdir state 6. Get vmdir state 7. Get vmdir log level and mask ================== 6 VmDir State is - Normal root@vc-sitea [ ~ ]# /usr/lib/vmware-vmafd/bin/dir-cli state get Enter password for administrator@vsphere.local: Directory Server State: Normal (3) |
2. 두 번째로, machine account의 credential 정보가 registry와 partner node(vCenter)의 DB 간에 올바르게 되어 있는지를 점검합니다.
partner node 정보를 확인합니다. root@vc-sitea [ ~ ]# /usr/lib/vmware-vmdir/bin/vdcrepadmin -f showservers -h localhost -u administrator -w P@ssw0rd cn=vc-sitea.contoso.com,cn=Servers,cn=Default-First-Site,cn=Sites,cn=Configuration,dc=vsphere,dc=local cn=vc-siteb.contoso.com,cn=Servers,cn=Default-First-Site,cn=Sites,cn=Configuration,dc=vsphere,dc=local |
Registry에 보관된 Password 정보를 확인합니다. root@vc-sitea [ ~ ]# /opt/likewise/bin/lwregshell list_values '[HKEY_THIS_MACHINE\Services\vmdir]' + "Arguments" REG_SZ "/usr/lib/vmware-vmdir/sbin/vmdird -s -l 0 -f /usr/lib/vmware-vmdir/share/config/vmdirschema.ldif" + "Autostart" REG_DWORD 0x00000001 (1) + "dcAccount" REG_SZ "vc-sitea.contoso.com" + "dcAccountDN" REG_SZ "cn=vc-sitea.contoso.com,ou=Domain Controllers,dc=vsphere,dc=local" + "dcAccountPassword" REG_SZ "X<:H^ 3.t5_1gT}{[wWE" + "DirtyShutdown" REG_DWORD 0x00000000 (0) + "LduGuid" REG_SZ "fdafff15-628a-4e88-8416-0ae3ef71c601" + "MachineGuid" REG_SZ "1d997bde-e5b4-4d02-98f0-24644e5eaa7b" + "SiteGuid" REG_SZ "a9c5e4b9-69e0-46fd-b2dc-f4a72d516210" + "Version" REG_SZ "6.5.0.0" "Dependencies" REG_SZ "vmafd" "Description" REG_SZ "VMware Directory Service" "Environment" REG_SZ "" "Path" REG_SZ "/usr/lib/vmware-vmdir/sbin/vmdird" "Type" REG_DWORD 0x00000001 (1) |
위 단계에서 획득한 dcAccountDN과 dcAccountPassword 값을 사용하여, partner node에 대해서 조회를 합니다. 정상적으로 조회가 되면 문제가 없는 것이고 만약 ldapsearch 명령어가 실패한다면 registry와 DB 간에 password 불일치가 있다고 볼 수 있습니다. root@vc-sitea [ ~ ]# /opt/likewise/bin/ldapsearch -LLL -h vc-siteb.contoso.com -b "dc=vsphere,dc=local" -s base -D "cn=vc-sitea.contoso.com,ou=Domain Controllers,dc=vsphere,dc=local" -w 'X<:H^ 3.t5_1gT}{[wWE' dn: dc=vsphere,dc=local dc: vsphere objectClass: top objectClass: dcObject objectClass: domainDNS nTSecurityDescriptor:: AQAEkBQAAAA0AAAAAAAAAFQAAAABBgAAAAAABxUAAABdlagqjTGwnAF vS+P1uYQ/9AEAAAEGAAAAAAAHFQAAAF2VqCqNMbCcAW9L4/W5hD8gAgAAAgDAAAUAAAAAAxgAMAAA AAECAAAAAAAHIAAAAJoCAAAAAygAEAAAAAEGAAAAAAAHFQAAAF2VqCqNMbCcAW9L4/W5hD8DAgAAA AMoADMABiABBgAAAAAABxUAAABdlagqjTGwnAFvS+P1uYQ/AAIAAAADKAAzAAYgAQYAAAAAAAcVAA AAXZWoKo0xsJwBb0vj9bmEPyACAAAAAygAMwAGIAEGAAAAAAAHFQAAAF2VqCqNMbCcAW9L4/W5hD/ 0AQAA |
3. vdcrepadmin 명령어를 이용하여, vCenter간 vmdir replication 상태가 정상인지 검증합니다.
아래 내용은 ELM을 사용하는 모든 vCenter에서 수행하여 확인해야 합니다.
우선 replication의 대상이 되는 partner node 정보를 조회합니다. root@vc-sitea [ ~ ]# /usr/lib/vmware-vmdir/bin/vdcrepadmin -f showpartners -h localhost -u administrator -w P@ssw0rd ldap://vc-siteb.contoso.com root@vc-siteb [ ~ ]# /usr/lib/vmware-vmdir/bin/vdcrepadmin -f showpartners -h localhost -u administrator -w P@ssw0rd ldap://vc-sitea.contoso.com |
Partner node와의 replication status를 확인합니다. 아래 결과의 해석은 "My last change number"가 My max USN이고, 이 값이 "Partner has seen my change number"의 값과 동일하다면 현재는 변경 사항으로 적용할 내용이 없다는 의미입니다. root@vc-sitea [ ~ ]# /usr/lib/vmware-vmdir/bin/vdcrepadmin -f showpartnerstatus -h localhost -u administrator -w P@ssw0rd Partner: vc-siteb.contoso.com Host available: Yes Status available: Yes My last change number: 9053 Partner has seen my change number: 9053 Partner is 0 changes behind. root@vc-siteb [ ~ ]# /usr/lib/vmware-vmdir/bin/vdcrepadmin -f showpartnerstatus -h localhost -u administrator -w P@ssw0rd Partner: vc-sitea.contoso.com Host available: Yes Status available: Yes My last change number: 8721 Partner has seen my change number: 8721 Partner is 0 changes behind. |
4. 3번에서 다뤘던 vdcrepadmin 도구 외에 dir-cli 도구로도 node간의 replication 상태를 점검할 수 있습니다.
replication 테스트 목적의 계정을 수동으로 생성합니다. root@vc-sitea [ ~ ]# /usr/lib/vmware-vmafd/bin/dir-cli user create --account 'TestAccount' --user-password 'Admin!23' --first-name 'FirstName' --last-name 'LastName' Enter password for administrator@vsphere.local: User account [TestAccount] created successfully |
replication 쓰레드가 30초 마다 wake up되어 동작하기 때문에 30초 이상 대기합니다. 테스트 계정이 partner node로 복제되었는지 확인하기 위해 조회를 시도합니다. 정상적으로 replication이 되지 않은 경우에는 ERROR_NO_SUCH_USER와 같은 에러가 발생합니다. root@vc-sitea [ ~ ]# /usr/lib/vmware-vmafd/bin/dir-cli user find-by-name --account 'TestAccount' Enter password for administrator@vsphere.local: Account: TestAccount UPN: TestAccount@VSPHERE.LOCAL |
테스트 한 계정은 제거합니다. root@vc-sitea [ ~ ]# /usr/lib/vmware-vmafd/bin/dir-cli user delete --account 'TestAccount' Enter password for administrator@vsphere.local: User account [TestAccount] deleted successfully |
[References]
Determining replication agreements and status with the Platform Services Controller(PSC) 6.x (2127057)
https://kb.vmware.com/s/article/2127057
'Compute' 카테고리의 다른 글
Replication with vCenter(embedded PSC) using vdcrepadmin (0) | 2023.01.16 |
---|---|
vCenter failover happened due to time sync (0) | 2023.01.06 |
How ballooning driver works (2) (0) | 2022.12.25 |
How ballooning driver works (1) (2) | 2022.12.23 |
Overview of SNMP (0) | 2022.12.22 |