SafeKit 검색

SafeKit을 사용한 KVM 고가용성: 장애 조치를 위한 kvm.safe 모듈 설치

KVM 고가용성 빠른 설치 가이드

이 가이드는 SafeKit을 사용하여 KVM용 mirror 클러스터를 설정하는 방법을 설명하며, 공유 스토리지가 필요 없이 자동 장애 조치 및 동기식 복제를 보장합니다.

도움이 필요하시면 SafeKit AI 🤖를 이용해 보세요.

1. 개요

  • 아키텍처 : 2노드 시스템(기본/보조)을 사용합니다.
  • 데이터 보호: 데이터 손실 제로 (RPO = 0)를 위한 실시간 동기 복제를 구현합니다.

2. 설치

  • 소프트웨어: 두 서버 모두에 SafeKit 엔진을 설치합니다.
  • 모듈: 사전 구성된 kvm.safe 애플리케이션 모듈을 다운로드합니다.

3. 구성

  • 웹 콘솔: KVM 파일이 포함된 특정 폴더를 구성합니다.
  • 모니터링: KVM 애플리케이션 모니터링 및 보호를 시작합니다.

SafeKit 고가용성 제한 사항

제한/요구사항이유 및 영향권장 대체안
복제 크기: 수 TB장애 후 재동기화 시간(3단계):
• 1Gb/s 네트워크 ≈ 3시간/TB
• 10Gb/s 네트워크 ≈ 1시간/TB(디스크 쓰기 성능에 따라 다름)
• 외부 공유 스토리지 사용(비용이 더 많이 들고 더 복잡함).
파일 수: 1,000,000개 미만• 장애 발생 후 재동기화 시간 성능(3단계).
• 두 노드 간에 각 파일을 비교하는 데 필요한 시간입니다.
• 복제할 여러 파일을 가상 하드 디스크/가상 머신에 넣습니다.
• 이 경우 가상 하드 디스크/가상 머신을 나타내는 파일만 복제되고 재동기화됩니다.
장애 조치 용량: ≤ 32개 VM• 각 VM은 독립적인 mirror 모듈에서 실행됩니다.
• 동일한 클러스터에서 최대 32개의 mirror 모듈을 실행할 수 있습니다.
• 외부 공유 스토리지 및 다른 VM 클러스터링 솔루션 사용(비용이 더 많이 들고 더 복잡함).
네트워크 아키텍처: 원격 사이트 간 LAN/VLAN 네트워크• 동일한 서브넷에 있는 2개의 노드에서 가상 IP 주소의 자동 장애 조치.
• 재동기화를 위한 충분한 대역폭(3단계).
• 동기 복제를 위한 낮은 지연 시간: 일반적으로 RTT가 5ms 미만입니다. 더 높은 값은 애플리케이션의 쓰기 속도에 대해 검증해야 합니다.
• 두 노드가 서로 다른 서브넷에 있는 경우(클라우드에서 일반적), 로드 밸런서, 클라우드 공급자 CLI, BGP 또는 DNS 리디렉션과 같은 다른 라우팅 옵션을 사용합니다.
• 지연 시간이 긴 네트워크의 경우 비동기 복제 기능이 있는 백업 솔루션을 사용하세요.

SafeKit/KVM 솔루션 개요

솔루션은 여기에서 설명합니다: 💡 공유 스토리지 없이 간단하게 Linux KVM 고가용성 구현하기

Linux에 SafeKit/KVM 솔루션 설치 (kvm.safe)

사전 요구 사항

  • 2개의 Linux 노드에 KVM 설치되어 있습니다.
  • 하나 이상의 가상 머신에 설치된 중요 애플리케이션.
  • KVM 호스트당 최대 32개의 가상 머신.
  • 복제된 총 데이터는 몇 테라바이트로 제한됩니다. 이보다 많아지면 재동기화 시간이 상당히 길어집니다.
  • 노드 간 최소 1Gb/s의 상호 연결(더 빠른 재동기화를 위해 10Gb/s 권장).
  • IP 장애 조치에는 동일한 LAN 또는 확장 LAN (L2)의 두 노드가 모두 필요합니다. 라우팅된 L3 네트워크는 지원되지 않습니다(🛠️ 클라우드 로드 밸런서 제외).

Linux에서 패키지 설치

  • SafeKit 무료 버전을 2개의 Linux 노드에 설치하세요. 참고: 무료 평가판에는 모든 SafeKit 기능이 포함되어 있습니다. 평가 기간이 끝나면 패키지를 제거하지 않고 영구 라이선스 키를 활성화할 수 있습니다.
  • safekit_xx.bin 패키지를 다운로드한 후 실행하여 rpm과 safekitinstall 스크립트를 추출하고 safekitinstall 스크립트를 실행합니다
  • 방화벽 자동 구성을 예로 설정합니다
  • 웹 콘솔과 기본 사용자 admin의 암호를 설정합니다. 모든 노드에 동일한 암호를 설정합니다.

SafeKit (Linux) 다운로드 >

Linux에 모듈 설치

  • kvm.safe 모듈을 다운로드하세요.
    이 모듈은 무료입니다. userconfig.xml 파일과 재시작 스크립트가 포함되어 있습니다.
  • kvm.safe를 **/opt/safekit/Application_Modules/generic/**에 넣으세요.

kvm.safe 다운로드 (Linux) >

SafeKit/KVM 솔루션 단계별 구성

⚠️ KVM 구성은 VM1 이라는 가상 머신으로 표시되며, 장애 발생 시 다시 시작해야 하는 애플리케이션을 포함합니다.

⚠️ 복제 및 재시작하려는 모든 VM에 대해 이 구성을 반복해야 합니다.

1. 필수 구성 요소

VM1은 가상 머신 이미지는 /var/lib/libvirt/images/vm1.qcow2 파일에 있습니다. SafeKit을 구성하기 전에 다음 구성을 수행하여 가상 머신을 SafeKit에서 복제할 vm1 전용 디렉터리에 배치해야 합니다.

노드 1에서:

  • vm1 중지:

    virsh shutdown vm1
    
  • vm1/ 디렉터리 만들기:

    mkdir -p /var/lib/libvirt/images/vm1/
    
  • vm1 이미지를 새 위치로 복사합니다

    cp -a /var/lib/libvirt/images/vm1.qcow2 /var/lib/libvirt/images/vm1/
    

새 위치에서 테스트가 성공적으로 완료되면 원래 vm1 이미지를 삭제할 수 있습니다.

  • vm1 구성 파일 편집:

    EDITOR=vi virsh edit vm1
    

다음 줄을 변경하세요

    <source file='/var/lib/libvirt/images/vm1.qcow2'>

작성자:

    <source file='/var/lib/libvirt/images/vm1/vm1.qcow2'>
  • 충돌 시 데이터 무결성을 위해 동일한 파일에서 캐시 옵션을 ‘없음’으로 설정하세요

    <disk type='file' device='disk'> <driver name='qemu' type='qcow2' **cache='none'** />
    
  • vm1 구성 파일 닫기

  • vm1 자동 시작 비활성화:

    virsh autostart vm1 --disable
    
  • vm1에 대한 vm1.xml 구성 파일 만들기:

    virsh dumpxml vm1 > vm1.xml
    

노드 2에서:

  • 노드 1에서 vm1.xml 구성 파일을 복사합니다. 참고: 노드 1에서 vm1 구성을 변경할 때마다 노드 2에 새 구성을 다시 적용해야 합니다.

  • vm1 생성하되 시작하지 마십시오

    virsh define vm1.xml
    
  • vm1 자동 시작 비활성화:

    virsh autostart vm1 --disable
    
  • 이미지 위치에 대한 디렉터리를 만듭니다

    mkdir -p /var/lib/libvirt/images/vm1/
    

2. SafeKit 콘솔을 시작합니다

  • http://localhost:9010에 연결하여 클러스터 노드 중 하나에서 브라우저로 웹 콘솔을 실행합니다.
  • 사용자 이름에 admin 입력하고 설치 시 정의한 암호를 입력합니다.

클러스터 외부의 워크스테이션에 있는 브라우저에서 콘솔을 실행할 수도 있습니다.

⚠️ SafeKit 구성은 단일 브라우저에서 두 노드 모두에 대해 수행됩니다.

ℹ️ 웹 콘솔을 보호하려면 사용 설명서의 🛠️ 11. SafeKit 웹 서비스 보안을 참조하십시오.

SafeKit 웹 콘솔을 시작하여 KVM 클러스터를 구성합니다

3. 노드 주소 구성

  • 노드 IP 주소를 입력하고 Tab key 눌러 연결을 확인한 후 노드 이름을 입력합니다. node1 또는 node2 빨간색으로 표시되면 브라우저와 두 노드 간의 연결을 확인하고 두 노드의 방화벽에서 🛠️ 문제 해결을 확인하십시오.
  • 그런 다음, 구성을 저장하려면 Save and apply을 클릭합니다.
  • 두 노드 모두에서 Success ✅ 메시지를 확인하세요.
  • 한 노드에서 구성 Failure ❌ 가 발생하면 해당 노드의 ▼ 아코디언을 열고 메시지를 검토하십시오. SafeKit AI 🤖 를 사용하여 도움을 받을 수 있습니다.

ℹ️ 원하는 경우 새 LAN and nodes (첫 번째 ➕)를 추가하여 두 번째 하트비트와 전용 복제 네트워크를 만들 수 있습니다.

ℹ️ Advanced configuration 클릭하면 cluster.xml 파일이 표시됩니다. 이 파일은 콘솔에서 자동으로 채워지고 노드에 배포됩니다.

KVM 클러스터의 노드를 입력하세요

4. 모듈 선택

  • New module에서 kvm.safe 모듈을 클릭합니다.

ℹ️ 상단의 파란색 배너에서 🛜 node1 콘솔 연결 노드를 나타냅니다. 이 노드는 필요할 때 요청을 node2로 전달합니다.

ℹ️ 설치 중에 모듈을 해당 디렉터리에 배치한 경우 콘솔은 연결 노드(node1)의 Application_Modules/generic/ 디렉터리에서 xxx.safe를 검색합니다.

KVM 모듈을 선택하세요

5. 모듈 구성

  • 부팅 시 모듈이 지연 없이 Automatic 시작되도록 선택하세요.
  • 일반적으로 복제가 이루어지는 단일 Heartbeat 네트워크가 있습니다. 그러나 필요한 경우 개인 네트워크를 정의할 수 있습니다(3단계에서 LAN을 추가하여).
  • 복제된 디렉터리의 루트 경로(/var/lib/libvirt/images)를 VM_PATH에 입력합니다.
  • 가상 머신(vm1)의 이름인 VM_NAME 입력합니다.

VM1은 파일은 /var/lib/libvirt/images/vm1/에 있다고 가정합니다(전제 조건 참조). 이 디렉터리는 SafeKit에 의해 실시간으로 복제됩니다.

ℹ️ 가상 IP 주소를 구성할 필요가 없습니다. VM1은 보조 KVM에서 물리적 IP 주소로 재부팅되며 이 IP 주소는 다시 라우팅됩니다.

KVM 매개변수를 입력하세요

6. VM 오작동 감지를 위한 맞춤형 검사기

사용자 지정 검사기는 VM이 실행 중인지 확인합니다(‘virsh domstate’ 명령 사용). VM이 실행 중이 아니면 사용자 지정 검사기가 동일한 KVM 노드 또는 다른 노드에서 VM을 자동으로 다시 시작합니다.

  • Checkers / Custom (이미지 참조)을 클릭합니다.
  • Resource name SafeKit의 리소스 이름(custom.VM_NAME_check으로 가상 머신을 식별합니다.
  • Action restart 시 VM은 동일한 KVM 노드에서 다시 시작됩니다. 24시간 이내에 3번의 재시작이 실패하면 SafeKit kvm 모듈이 기본 노드에서 중지되고 VM이 보조 노드로 장애 조치됩니다.
  • Action에서 stopstart 설정하면 VM이 실행되지 않는 즉시 다른 KVM 노드로 직접 장애 조치가 이루어집니다.

ℹ️ 유지보수를 위해 가상 머신을 중지하려는 경우, 사용자 지정 검사기가 자동으로 다시 시작합니다. 이를 방지하려면 검사기를 일시적으로 중단할 수 있습니다 🖼️. 또는 콘솔에서 구성 줄을 삭제하여 제거할 수 있습니다.

KVM 사용자 지정 검사기 매개변수를 입력하세요

7. 스크립트 편집(선택 사항)

  • 스크립트를 편집하지 마십시오.

8. 통신 암호화(선택 사항)

  • 노드 간 통신 암호화를 유지하세요.

KVM 모듈의 통신 암호화

9. 저장 및 적용

  • 두 노드 모두에서 구성을 Save and apply.

KVM 모듈 구성을 저장하고 적용합니다

10. 구성 성공 여부 확인

  • 두 노드 모두에서 Success ✅ 메시지를 확인하고 Monitor modules 클릭하세요.
  • 한 노드에서 구성 Failure ❌ 가 발생하면 해당 노드의 ▼ 아코디언을 열고 메시지를 검토하십시오. SafeKit AI 🤖 를 사용하여 도움을 받을 수 있습니다.

KVM 모듈 구성 성공 여부 확인

11. 최신 데이터로 노드를 시작합니다

  • 노드 1에 vm1/에 대한 최신 복제 디렉터리가 있는 경우 해당 디렉터리를 선택하고 ⋯ As primary Force start ▶ 선택합니다.

노드 2가 시작되면 모든 데이터가 노드 1에서 노드 2로 복사됩니다.

⚠️ 잘못된 선택을 하면 두 노드 모두에서 오래된 데이터를 동기화할 위험이 있습니다.

⚠️ 또한 SafeKit은 복제 메커니즘을 설치한 다음 start_prim 스크립트에서 VM1 시작하도록 VM1 노드 1에서 중지되었다고 가정합니다.

⚠️ 후속 시작 시에는 Start 사용하십시오. SafeKit은 최신 서버를 유지합니다. As primary 시작하는 것은 처음이거나 예외적인 작업 중에 특별히 시작하는 것입니다.

최신 데이터가 있는 KVM 노드를 기본으로 시작합니다

12. ALONE (녹색)로 전환될 때까지 기다리십시오

  • 노드 1은 ALONE (녹색) 상태에 도달해야 합니다. 이는 start_prim 스크립트가 노드 1에서 실행되었음을 의미합니다.

⚠️ ALONE (녹색)에 도달하지 못했거나 VM1 시작되지 않은 경우 노드 1의 모듈 로그 🖼️ 를 통해 원인을 분석하십시오.

  • node1의 🔍 로그 아이콘을 클릭하여 모듈 로그를 열고, 검사기가 오류를 감지하여 모듈을 중지시키는 등의 오류 메시지를 찾습니다.
  • 로그에서 start_prim 클릭하면 스크립트의 출력 메시지가 오른쪽에 표시되고 VM1 잘못 시작되는 등의 오류를 감지할 수 있습니다.
  • 로그 메시지 관련 지원은 SafeKit AI 🤖 이용하세요.

⚠️ 클러스터가 WAIT (red) not uptodate, STOP (red) not uptodate 상태인 경우 WAIT 노드를 중지하고 주 노드로 강제 시작합니다 🖼️.

첫 번째 KVM 노드는 기본으로 시작하여 ALONE 상태가 됩니다

13. 노드 2 시작

  • ⋯ 컨텍스트 메뉴가 있는 Start 노드 2를 선택합니다.
  • SECOND (녹색) 상태가 될 때까지 기다리세요.

ℹ️

  • 노드 2는 복제된 디렉터리를 재동기화하는 동안(노드 1에서 노드 2로 복사) SECOND (주황색) 상태를 유지합니다.
  • 복제된 디렉터리에서 다시 동기화할 파일의 크기와 네트워크 대역폭에 따라 시간이 다소 걸릴 수 있습니다.
  • 복사 진행 상황을 확인하려면 노드 2의 모듈 로그 🖼️ 및 복제 리소스 🖼️ 를 참조하십시오. 로그 메시지 지원이 필요한 경우 SafeKit AI 🤖 사용하십시오.

KVM 노드 2를 시작합니다

14. 클러스터가 작동 중인지 확인합니다

  • 클러스터가 녹색/녹색이고 VM1이 PRIM 노드에서 실행 중이며 SECOND 노드에서는 실행 중이 아닌지 확인합니다.

이 상태에서는 파일 내부의 변경 사항만 실시간으로 복제됩니다.

KVM 노드 2는 SECOND (녹색)입니다

15. 테스트

  • PRIM 노드의 상황별 메뉴를 아래로 스크롤하여 Stop 클릭하여 노드를 중지합니다.
  • SECOND 노드에 장애 조치가 발생하여 ALONE 작동하는지(녹색) 확인합니다.
  • KVM 도구를 사용하여 VM1 노드 2에서 실행 중인지 확인하세요.

⚠️ node2에서 ALONE (녹색)에 도달하지 못했거나 VM1 시작되지 않은 경우 노드 2의 모듈 로그 🖼️ 통해 원인을 분석하십시오.

  • node2의 🔍 로그 아이콘을 클릭하여 모듈 로그를 열고, 검사기가 오류를 감지하여 모듈을 중지시키는 등의 오류 메시지를 찾으십시오.
  • 로그에서 start_prim 클릭하면 스크립트의 출력 메시지가 오른쪽에 표시되고 VM1 잘못 시작되는 등의 오류를 감지할 수 있습니다.
  • 로그 메시지 관련 지원은 SafeKit AI 🤖 이용하세요.

⚠️

  • 모든 것이 정상이라면 node1에서 시작을 실행하여 node2에서 복제된 디렉터리를 다시 동기화합니다.
  • 문제가 발생하면 node2를 중지하고 node1이 기본 노드로 시작되도록 강제하면 🖼️ 중지 시점에 로컬에서 정상적인 데이터로 다시 시작됩니다.

ℹ️ 클러스터에서 발생하는 상황을 이해하는 데 도움이 될 수 있는 🕒 타임라인 🖼️ 이 있습니다.

PRIM 서버에서 KVM 모듈을 중지합니다

16. 필요한 경우 분할 브레인 검사기를 구성합니다

  • 클러스터에서 네트워크 격리가 발생할 경우의 다양한 시나리오를 확인하여 분할 브레인 검사기를 구성해야 하는지 알아보세요.
  • 모듈 구성으로 이동하여 Checkers / Splitbrain 클릭(이미지 참조)하여 분할 브레인 매개변수를 편집합니다.
  • 새 구성을 Save and apply 두 노드 모두에 재배포합니다(저장 및 적용하려면 두 노드 모두에서 모듈을 중지해야 합니다).

매개변수 :

  • Resource name 리소스 이름 splitbrain.witness로 감시자를 식별합니다. 이 값을 변경하여 감시자를 식별할 수 있습니다.
  • Witness address는 노드가 PRIM에서 ALONE으로 또는 SECOND에서 ALONE으로 전환될 때 ping에 대한 인수입니다. 이 값을 증인의 IP(일반적으로 라우터인 견고한 요소)로 변경하십시오.
  • 참고: 공백으로 구분된 여러 IP를 설정할 수 있습니다. 네트워크 격리 시 IP 주소는 한 노드에서는 접근 가능하지만 다른 노드에서는 접근할 수 없어야 한다는 점에 유의하십시오.

KVM 분할 브레인 매개변수를 입력하세요

17. 스냅샷 복제

스냅샷 XML 파일이 포함된 디렉터리는 다음과 같습니다

/var/lib/libvirt/qemu/snapshot/%VM_NAME%

여기서 VM_NAME은 가상 머신의 이름(vm1)입니다.

참고: 스냅샷이 생성되지 않은 경우, 디렉토리를 생성하기 위해 스냅샷을 생성하십시오(그렇지 않으면 SafeKit 구성에 실패합니다).

재현 방법:

  • 모듈 구성에서 Advanced Configuration (이미지 참조)을 클릭하여 userconfig.xml 편집합니다.

  • 아래 줄을 userconfig.xml의 <rfs> 섹션에 삽입하세요

    <replicated dir="/var/lib/libvirt/qemu/snapshot/%VM_NAME%" mode="read_only"> </replicated>
    
  • 새 구성을 Save and apply 수정된 userconfig.xml 파일을 두 노드 모두에 다시 배포합니다(저장 및 적용하려면 두 노드 모두에서 모듈을 중지해야 함).

  • virt-manager 또는 명령줄을 통해 PRIM 노드에서 스냅샷을 생성합니다

    virsh snapshot-create-as vm1 snapshot-name
    

참고: 명령줄로 스냅샷을 생성할 때 virt-manager에서 스냅샷 보기를 새로 고쳐야 합니다.

PRIM 노드에서 생성된 스냅샷은 장애 조치 후 노드 2에서 작동하지만 노드 2에는 나열되지 않습니다.

  • 노드 2에 스냅샷을 가져오려면 다음 명령을 실행해야 합니다

    virsh snapshot-create --redefine vm1 /var/lib/libvirt/qemu/snapshot/vm1/snapshot-name
    
  • vm1의 모든 스냅샷을 나열하는 명령줄은 다음과 같습니다

    virsh snapshot-list vm1
    

KVM 매개변수를 입력하세요

18. 지원

  • 지원을 받으려면 각 노드에 대해 SafeKit Snapshots 2개(.zip 파일 2개)를 찍으십시오.

ℹ️ 지원에 대한 자세한 정보는 여기에서 확인하세요.

지원을 위해 KVM 스냅샷을 찍으세요

VM 수준의 고가용성 솔루션 시연

SafeKit 동영상: Hyper-V를 사용한 가상 머신 수준 클러스터링 (5:15)

이 비디오에서는 SAN의 복잡성 없이 SafeKit이 Hyper-V에 고가용성을 구현하는 방법을 알아보세요. 두 노드 간에 가상 머신 복제를 구성하여 중요한 가상화된 워크로드에 대한 원활한 장애 조치를 보장하는 방법을 알아보세요. 이 데모에서는 Windows의 Hyper-V를 사용하지만, 이 솔루션은 Linux의 KVM 에서도 동일하게 작동합니다.

챕터

  1. 🎬 아키텍처 개요: Hyper-V 노드 2개 및 가상 머신 2개 (0:49)
  2. 🎬 클러스터 및 hyperv.safe 모듈 구성 (1:59)
  3. 🎬 실시간 테스트: VM 복제, 마이그레이션 및 충돌 시 자동 장애 조치 (2:26)

단계별 구현

🔍 SafeKit 살펴보기

SafeKit의 기능, 아키텍처, 동영상, 설명서 및 무료 평가판에 대한 정보를 찾아보세요.

자원설명링크
주요 기능SafeKit가 간단하고 비용 효율적인 고가용성 솔루션인 이유를 알아보세요.주요 기능 살펴보기
사용 사례SafeKit이 중요 애플리케이션과 인프라의 가용성을 유지하는 방법을 알아보세요.사용 사례 살펴보기
배포 모델SafeKit는 SAN이나 공유 스토리지 없이도 고가용성을 제공합니다.배포 모델 살펴보기
고가용성 전략가상 머신과 애플리케이션의 고가용성을 비교합니다.두 가지 전략을 비교해 보세요
기술 사양SafeKit 클러스터의 기술 요구 사항 및 제한 사항을 확인하십시오.기술 사양을 읽어보세요
동영상SafeKit 구성 및 자동 장애 조치 시연을 시청하세요.기술 동영상 시청하기
아키텍처SafeKit mirror 클러스터 실시간으로 파일을 복제하고 장애 조치를 처리하는 방법을 알아보세요.Mirror 아키텍처 살펴보기
아키텍처SafeKit farm 클러스터 네트워크 트래픽의 균형을 맞추고 장애 조치를 처리하는 방법을 알아보세요.Farm 아키텍처 둘러보기
제품 비교SafeKit와 기존의 고가용성 클러스터 비교해 보세요.솔루션 비교
기술 자료기술 설명서를 찾아보고, SafeKit을 다운로드하고, 무료 평가판을 이용해 보세요.설명서 및 무료 평가판에 액세스하세요
애플리케이션 모듈사전 구성된 SafeKit 모듈을 사용하여 애플리케이션의 고가용성을 설정하세요.애플리케이션 모듈 살펴보기
SafeKit AI Chat SafeKit AI