Skip to main content
NetApp virtualization solutions
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

NAS 스토리지를 사용하여 Proxmox VE 비즈니스 연속성 구성

기여자 sureshthoppay

NAS용 ONTAP SnapMirror 액티브 싱크와 Proxmox VE 스트레치 클러스터를 결합하여 사이트 장애로부터 Proxmox 가상 환경(VE) VM을 보호하십시오. NetApp Console에서 ONTAP Mediator 또는 ONTAP Cloud Mediator 중 하나로 미디에이터를 구성하고, NFS 스토리지 VM(SVM)을 보호하며, 선택적으로 가상 IP(VIP) LIF 및 BGP(Border Gateway Protocol)를 사용하여 라우팅된 네트워크에서 NFS 주소를 이식 가능하게 만들고, QDevice로 스트레치 클러스터를 구축한 다음, Storage Manager for Proxmox를 사용하여 공유 스토리지를 프로비저닝하고 고가용성(HA) 및 VM 백업을 구성합니다. 그 결과 데이터 손실이 전혀 발생하지 않으며, 정상 작동하는 사이트에서 VM이 자동으로 복구됩니다.

이 워크플로에 대하여

시작하기 전에 "솔루션 아키텍처, 오류 동작 및 corosync 설계 고려 사항"을(를) 검토하십시오. <primary_svm> 등과 같이 꺾쇠괄호 안의 값을 사용 환경에 맞는 값으로 바꾸십시오.

시작하기 전에
  • AFF A-Series 또는 C-Series 2노드 클러스터 2개는 ONTAP 9.19.1 이상을 실행해야 하며, 하나는 사이트 A에, 다른 하나는 사이트 B에 있어야 합니다.

  • ONTAP One에 포함된 SnapMirror 및 SnapMirror 동기식 라이선스는 두 클러스터 모두에 설치해야 합니다.

  • 클러스터는 기본 IPspace에서 피어링되어야 하며, 클러스터 간 왕복 시간(RTT)은 10ms 미만이어야 합니다.

  • 중재자 옵션 중 하나를 선택해야 합니다. 비교를 보려면 "중재자 옵션"을(를) 참조하십시오.

    • ONTAP Mediator를 사용하려면 사이트 C 또는 다른 제3 장애 도메인에 Linux 호스트가 설치되어 있어야 하며, 두 클러스터의 클러스터 및 노드 관리 LIF에서 해당 호스트에 접근할 수 있어야 합니다.

    • ONTAP Cloud Mediator의 경우, 두 클러스터 모두 직접 또는 프록시를 통해 NetApp Console에 대한 아웃바운드 HTTPS 액세스가 가능해야 하며 핑 지연 시간은 200ms 미만이어야 합니다. 또한 NetApp Console 조직과 서비스 계정을 생성할 수 있는 권한이 필요합니다.

  • 사이트 A의 SVM은 Proxmox VE 노드에 NFS를 제공해야 합니다. 해당 SVM에는 NAS용 FlexVol 볼륨만 포함되어야 하며 LUN은 없어야 하고, 내보내기 정책은 모든 Proxmox VE 노드를 허용해야 합니다.

  • Proxmox VE 9.0 이상 버전의 노드를 짝수 개 설치해야 하며, 사이트 A와 사이트 B에 균등하게 분배되어야 하고, 모든 노드 간의 corosync 지연 시간은 5ms 미만이어야 합니다.

  • 사이트 C 또는 다른 제3의 위치에 있는 Linux 호스트는 corosync QDevice 데몬을 위해 사용할 수 있어야 하며, 모든 Proxmox VE 노드에서 TCP 포트 5403을 통해 접근할 수 있어야 합니다. 어느 미디에이터 옵션을 사용하든 이 호스트가 필요합니다.

  • NFS VLAN은 사이트 A와 사이트 B 간에 확장되어야 합니다. 라우팅된 레이어 3 네트워크의 경우 각 사이트에 BGP 지원 라우터가 있어야 하며, NetApp에 NAS용 SnapMirror 액티브 동기화에서 BGP를 사용하는 VIP LIF가 지원되는지 확인해야 합니다.

  • ONTAP 및 Proxmox VE 버전은 "NetApp 상호 운용성 매트릭스 툴(IMT)"에 함께 나열되어야 합니다.

  • 공유 스토리지를 프로비저닝하고 VM을 백업하려면 Proxmox VE 노드와 두 ONTAP 클러스터 모두에 대한 네트워크 액세스가 가능하도록 Storage Manager for Proxmox를 설치해야 합니다.

1단계: 미디에이터 구성

SnapMirror 활성 동기화 관계를 초기화하기 전에 클러스터 피어 관계에 중재자를 추가하십시오. ONTAP은 계획된 장애 조치 및 자동 장애 조치를 수행하기 위해 중재자가 필요합니다. 어느 클러스터에서든 중재자를 추가할 수 있으며, ONTAP이 다른 클러스터에 자동으로 추가합니다. 둘 다 사용하지 말고 하나의 중재자 옵션만 사용하십시오.

다음 옵션 중 하나를 선택하십시오.

ONTAP Mediator

사이트 C의 Linux 호스트에 미디에이터를 설치하는 경우 이 옵션을 사용하십시오. 설치에 대해서는 "ONTAP Mediator 설치 또는 업그레이드"를 참조하십시오.

단계
  1. 어느 클러스터에서든 미디에이터를 추가합니다:

    snapmirror mediator add -peer-cluster <peer_cluster> -type on-prem -mediator-address <mediator_ip> -username <mediator_user>

    요청이 나타나면 중재자 암호를 입력하십시오.

  2. 중재자가 연결되어 있고 쿼럼 상태가 `true`인지 확인하십시오:

    snapmirror mediator show
ONTAP Cloud Mediator

이 옵션을 사용하여 미디에이터를 NetApp Console에서 서비스로 호스팅하면 제3의 사이트에 미디에이터 호스트가 필요하지 않습니다.

시작하기 전에
  • 양쪽 사이트의 방화벽은 두 클러스터에서 NetApp Console API 엔드포인트로의 HTTPS 트래픽을 허용해야 합니다. 현재 엔드포인트 호스트 이름은 "ONTAP Cloud Mediator 구성을 준비하십시오"을(를) 참조하십시오.

  • 클러스터에서 프록시 서버를 사용하는 경우 프록시 IP 주소, 포트 및 자격 증명을 준비하십시오. 각 클러스터마다 다른 프록시 서버를 사용하십시오. 프록시의 루트 CA 인증서는 ONTAP에 설치되어야 합니다.

  • ONTAP에는 잘 알려진 루트 CA 인증서가 포함되어 있으므로 일반적으로 NetApp Console 인증서를 설치할 필요가 없습니다. 확인하려면 다음을 실행하십시오. security certificate show -common-name Sectigo*|USERTrust*|AAA*

단계
  1. NetApp Console에서 조직 ID를 복사하십시오.

  2. NetApp Console에서 멤버 서비스 계정을 생성합니다:

    1. ONTAP Cloud Mediator를 사용하는 조직으로 설정하십시오.

    2. 카테고리를 *애플리케이션*으로 설정하십시오.

    3. 역할을 *ONTAP Mediator 설정 역할*로 설정하십시오.

    4. 계정을 생성할 때 클라이언트 ID와 클라이언트 시크릿을 저장하십시오.

  3. 어느 클러스터에서든 미디에이터를 추가합니다:

    snapmirror mediator add -peer-cluster <peer_cluster> -type cloud -org-id <console_org_id> -service-account-client-id <client_id> -use-http-proxy-local <true|false> -use-http-proxy-remote <true|false>

    요청이 나타나면 클라이언트 암호를 입력하십시오.

    System Manager를 사용할 수도 있습니다. 보호 > 개요 > 중재자 > *추가*를 선택하고 중재자 유형으로 *클라우드*를 선택한 다음 조직 ID, 클라이언트 ID 및 클라이언트 암호를 입력합니다.

  4. 중재자 유형이 `cloud`이고, 연결 상태가 `connected`이며, 쿼럼 상태가 `true`인지 확인하십시오:

    snapmirror mediator show

2단계: SnapMirror 활성 동기화를 사용하여 NFS SVM을 보호합니다.

사이트 B 클러스터에 비활성 대상 SVM을 생성하고 사이트 A SVM을 해당 SVM으로 복제합니다. ONTAP은 데이터를 동기적으로 복제하고 NFS LIF 주소 및 내보내기 정책을 포함한 SVM 구성을 복제합니다. 또한 System Manager에서 SVM에 대해 *Protect*를 선택하고 AutomatedFailOver 정책을 선택하여 이 단계를 완료할 수도 있습니다.

단계
  1. 사이트 B 클러스터에서 대상 SVM을 생성합니다:

    vserver create -vserver <secondary_svm> -sub-type dp-destination
  2. 사이트 B 클러스터에서 기본 SVM과 SVM 피어 관계를 생성합니다:

    vserver peer create -vserver <secondary_svm> -peer-vserver <primary_svm> -peer-cluster <site_a_cluster> -applications snapmirror
  3. 사이트 A 클러스터에서 SVM 피어 요청을 수락합니다:

    vserver peer accept -vserver <primary_svm> -peer-vserver <secondary_svm>
  4. 사이트 B 클러스터에서 SnapMirror 활성 동기화 관계를 생성합니다:

    snapmirror create -source-path <primary_svm>: -destination-path <secondary_svm>: -policy AutomatedFailOver
  5. 관계를 초기화합니다:

    snapmirror initialize -destination-path <secondary_svm>:
  6. 관계가 동기화되었는지 확인하십시오:

    snapmirror show -destination-path <secondary_svm>:
    `Mirror State`은(는)  `Snapmirrored`이고,  `Relationship Status`은(는)  `InSync`입니다.
  7. 필요에 따라 스크래치 또는 테스트 볼륨 등 보호가 필요 없는 볼륨을 제외할 수 있습니다:

    volume modify -vserver <primary_svm> -volume <volume_name> -smas-protection unprotected

3단계: 레이어 3 네트워크용 BGP를 사용하여 VIP LIF 구성

주의 발행 시점에 NetApp은 NAS용 SnapMirror 액티브 동기화를 위한 적격 구성으로 BGP를 사용하는 VIP LIF를 문서화하지 않았습니다. 이 단계를 완료하기 전에 NetApp에 현재 지원 여부를 확인하십시오. 그렇지 않으면 사이트 간에 NFS VLAN을 확장하고 이 단계를 건너뛰십시오.

사이트 A와 사이트 B 사이에 NFS VLAN이 확장되어 있는 경우 이 단계를 건너뛰십시오. 사이트가 라우팅된 네트워크로 연결된 경우 두 클러스터의 모든 노드에 BGP LIF를 생성한 다음 기본 SVM의 VIP LIF에 NFS 주소를 호스팅하십시오. VIP 주소는 Proxmox VE 노드의 서브넷에 속해서는 안 됩니다.

시작하기 전에
  • 각 라우터는 해당 사이트의 BGP LIF에서 BGP 세션을 수락하고, /32 호스트 경로를 수락하며, ONTAP에 경로 업데이트를 보내지 않도록 구성되어야 합니다.

  • 각 ONTAP 노드와 각 라우터는 고유한 개인 ASN을 가져야 하며, 각 BGP LIF와 라우터 쌍은 /31 서브넷을 가져야 합니다.

단계
  1. 각 클러스터에서 고급 권한 수준으로 변경하십시오:

    set -privilege advanced
  2. 두 클러스터의 각 노드에서 해당 노드에 고유한 ONTAP ASN, 3초의 유지 시간, 라우터 ID로 노드 관리 IP 주소를 사용하여 BGP 구성을 생성합니다:

    network bgp config create -node <node_name> -asn <node_asn> -holdtime 3 -routerid <node_mgmt_ip>
  3. 선택적으로, 두 클러스터의 각 노드에서 라우터에 연결되는 두 개의 포트 각각에 VLAN 포트를 생성합니다:

    network port vlan create -node <node_name> -vlan-name <port_name>-<vlan_id>

    물리적 포트, 인터페이스 그룹 또는 인터페이스 그룹의 VLAN을 BGP LIF 홈 포트로 사용할 수도 있습니다. 해당 포트는 IPspace의 브로드캐스트 도메인에 속해야 합니다.

  4. 두 클러스터의 각 노드에서 시스템 SVM에 BGP LIF를 두 개 생성합니다. 각 포트에 하나씩 생성하고, 해당 포트의 라우터에 대해 /31 서브넷을 지정합니다:

    network interface create -vserver <system_svm> -lif <bgp_lif_name> -service-policy default-route-announce -home-node <node_name> -home-port <vlan_or_port> -address <bgp_lif_ip> -netmask-length 31

    기본 IPspace의 경우 `<system_svm>`이(가) 클러스터 이름입니다. 사용자 지정 IPspace의 경우 IPspace 이름입니다. BGP LIF는 각 노드마다 한 번씩 생성하며, 해당 LIF는 IPspace 내 모든 데이터 SVM의 VIP LIF를 제공합니다.

  5. 각 BGP LIF에 대해 해당 라우터와 BGP 피어 그룹을 생성하고 해당 라우터로부터 기본 경로를 학습합니다:

    network bgp peer-group create -peer-group <peer_group_name> -ipspace <ipspace> -bgp-lif <bgp_lif_name> -peer-address <router_ip> -peer-asn <router_asn> -use-peer-as-next-hop true
  6. 각 피어 그룹이 정상적으로 작동하는지 확인하십시오:

    network bgp peer-group show -ipspace <ipspace>
  7. 각 클러스터에서 다중 경로 라우팅을 활성화하십시오:

    network options multipath-routing modify -is-enabled true
  8. 사이트 A 클러스터에서 기본 SVM에 NFS VIP LIF를 생성합니다:

    network interface create -vserver <primary_svm> -lif <vip_lif_name> -role data -data-protocol nfs -home-node <node_name> -address <vip_address> -is-vip true -failover-policy broadcast-domain-wide
  9. 사이트 A 클러스터에서 모든 노드의 기본 SVM에 대한 BGP 상태가 `up`인지 확인하십시오:

    network bgp vserver-status show
  10. 두 라우터 모두에서 VIP 주소에 대한 /32 경로가 클러스터 A로부터 학습되었는지 확인하십시오.

4단계: QDevice를 사용하여 Proxmox VE 스트레치 클러스터 생성

사이트 A의 노드들이 가장 낮은 노드 ID를 받도록 사이트 A 노드에서 클러스터를 생성하고, 사이트 C에 QDevice를 추가합니다. 사이트 간 링크에 장애가 발생하면 QDevice가 사이트 A에 투표권을 부여하는데, 이는 ONTAP이 활성 상태로 유지하는 SVM과 일치합니다.

단계
  1. 첫 번째 사이트 A 노드에서 서로 다른 네트워크에 있는 두 개의 corosync 링크를 사용하여 클러스터를 생성합니다:

    pvecm create <cluster_name> --link0 <node_link0_ip> --link1 <node_link1_ip>
  2. 나머지 각 사이트 A 노드에서, 그런 다음 각 사이트 B 노드에서 클러스터에 참여합니다:

    pvecm add <first_node_ip> --link0 <node_link0_ip> --link1 <node_link1_ip>
  3. 사이트 A의 노드들이 가장 낮은 노드 ID를 가지고 있는지 확인하십시오:

    pvecm nodes
  4. 사이트 C 또는 다른 제3의 위치에 있는 QDevice 호스트에 QDevice 데몬을 설치합니다:

    apt install corosync-qnetd
  5. 모든 Proxmox VE 노드에 QDevice 클라이언트를 설치하십시오:

    apt install corosync-qdevice
  6. Proxmox VE 노드 중 하나에서 QDevice를 클러스터에 추가합니다:

    pvecm qdevice setup <qdevice_ip>
  7. QDevice 투표를 통해 클러스터가 정족수를 충족했는지 확인하십시오:

    pvecm status

    4개 노드로 구성된 클러스터의 경우, `Expected votes`은(는) `5`이고, `Quorum`은(는) `3`이며, `Flags`에는 `Quorate Qdevice`이(가) 포함됩니다.

5단계: 보호된 NFS 공유 스토리지 프로비저닝

기본 SVM에 NFS 스토리지를 프로비저닝하고 두 SVM이 공유하는 NFS LIF 또는 VIP 주소를 사용하여 두 사이트의 모든 Proxmox VE 노드에 마운트합니다. Storage Manager for Proxmox (SMP)는 하나의 워크플로에서 ONTAP 볼륨, 엑스포트 정책 및 Proxmox VE 스토리지 정의를 생성합니다. SMP를 사용하지 않는 경우, ONTAP에서 볼륨을 생성하고 Proxmox VE CLI를 사용하여 NFS 스토리지로 추가합니다.

스토리지 프로비저닝을 위해 다음 방법 중 하나를 선택하십시오.

Proxmox용 스토리지 관리자

SMP를 사용하여 스토리지를 프로비저닝하십시오. SMP가 설치되어 있어야 하며, Proxmox VE 클러스터와 두 개의 ONTAP 클러스터가 플랜으로 추가되어 있어야 합니다. 자세한 내용은 "Proxmox용 Storage Manager 구성 및 사용"을(를) 참조하십시오.

  1. SMP에서 프로비저닝 > *볼륨 추가*를 선택한 다음 *NFS*를 선택합니다.

  2. *ONTAP 세부 정보*에서 기본 SVM을 선택하고 볼륨 이름과 크기를 입력한 다음, NFS LIF 또는 VIP LIF를 선호 LIF로 선택합니다.

  3. 양쪽 사이트의 Proxmox VE 노드를 허용하는 내보내기 정책을 선택하거나 새 정책을 생성하십시오.

  4. *Proxmox 세부 정보*에서 클러스터와 양쪽 사이트의 모든 노드를 선택하고, NFS v3 또는 NFS v4.1을 선택한 다음 콘텐츠 유형을 선택합니다.

  5. *데이터 저장소 마운트*가 선택되어 있는지 확인한 다음 *프로비저닝*을 선택하십시오.

  6. 사이트 A 클러스터에서 볼륨이 SnapMirror 활성 동기화 보호에 포함되어 있는지 확인합니다:

    volume show -vserver <primary_svm> -volume <volume_name> -fields smas-protection
CLI

Proxmox VE CLI를 사용하여 기본 SVM에 이미 존재하는 볼륨을 NFS 스토리지로 추가합니다.

  1. Proxmox VE 노드 중 하나에 NFS 스토리지를 추가합니다:

    pvesm add nfs <storage_id> --server <nfs_lif_or_vip_address> --export <export_path> --content images,rootdir --options vers=<nfs_version>,nconnect=4
    `<nfs_version>`에는  `3` 또는  `4.1`를 사용하십시오.  `soft` 마운트 옵션을 추가하지 마십시오.
  2. 모든 노드에서 스토리지가 활성화되어 있는지 확인하십시오:

    pvesm status --storage <storage_id>

NFS 마운트 옵션을 설정합니다

더 나은 성능과 내결함성을 위해 nConnect를 사용하여 NFS LIF 또는 VIP 주소에 대한 여러 TCP 연결을 엽니다. 보호된 SVM에 클라이언트가 양쪽 사이트에서 모두 도달할 수 있는 여러 데이터 LIF가 있는 경우, 대신 NFSv4.1 세션 트렁킹을 사용할 수 있습니다. nConnect 또는 세션 트렁킹 중 하나만 사용하고, 둘 다 사용하지는 마십시오. 자세한 내용은 "Proxmox VE용 NFS 스토리지를 구성합니다."를 참조하십시오.

단계
  1. SMP를 사용하거나 nConnect 없이 스토리지를 프로비저닝한 경우, 하나의 Proxmox VE 노드에서 마운트 옵션을 설정하십시오:

    pvesm set <storage_id> --options vers=<nfs_version>,nconnect=4

    대신 세션 트렁킹을 사용하려면 다음과 같이 설정하십시오:

    pvesm set <storage_id> --options vers=4.1,trunkdiscovery,max_connect=16

    Proxmox VE는 스토리지를 다음에 마운트할 때 새로운 마운트 옵션을 적용합니다. 해당 노드에서 VM을 마이그레이션한 후, 유지보수 윈도우 동안 각 노드의 스토리지를 다시 마운트하십시오.

  2. `/etc/pve/storage.cfg`에서 옵션을 확인하십시오.

  3. 각 Proxmox VE 노드에서 NFS 서버 주소에 대한 연결이 여러 개 있는지 확인하십시오:

    ss -an | grep :2049

6단계: HA 및 VM 백업 구성

기본 SVM이 데이터를 제공하는 사이트 A를 선호하는 노드 선호도 규칙을 사용하여 VM을 HA에 추가합니다. 그런 다음 SMP 백업 정책을 사용하여 실수로 인한 삭제나 랜섬웨어 등 논리적 오류로부터 VM을 보호합니다. SnapMirror 활성 동기화는 이러한 오류를 동기적으로 복제하므로 특정 시점 백업을 대체하지 않습니다.

단계
  1. 각 보호된 VM을 HA에 추가합니다:

    ha-manager add vm:<vm_id> --state started
  2. 사이트 A의 노드를 우선시하고 사이트 B의 노드로 장애 조치를 허용하는 노드 선호도 규칙을 생성합니다:

    ha-manager rules add node-affinity <rule_name> --resources vm:<vm_id>,vm:<vm_id> --nodes "<site_a_node1>:2,<site_a_node2>:2,<site_b_node1>:1,<site_b_node2>:1"
  3. 선택적으로 각 게스트 운영 체제의 디스크 시간 초과를 예상 스토리지 장애 조치 시간보다 길어지도록 늘립니다.

  4. SMP에서 보호 > 백업 > *리소스 그룹*을 선택하고 각 테넌트 또는 애플리케이션의 VM 또는 스토리지에 대한 리소스 그룹을 생성합니다.

  5. 보호 > 백업 > 정책 > *추가*를 선택하고 리소스 그룹에 대한 백업 빈도 및 보존 기간을 지정하는 정책을 생성합니다.

    QEMU 게스트 에이전트를 실행하는 VM의 경우 *Advanced Options*에서 *VM Consistency*를 선택하십시오.

  6. 온디맨드 백업을 실행한 다음, 해당 백업에서 테스트 VM을 복원하여 정책을 검증합니다.

7단계: 계획된 장애 조치 테스트

공유 스토리지에 운영 VM을 배치하기 전에 설계를 검증하십시오. 계획된 장애 조치는 데이터 손실 없이 활성 SVM을 사이트 B로 이동시키므로, 유지보수 윈도우 동안 이를 테스트하고 이후에 페일백할 수 있습니다.

단계
  1. 테스트용 가상 머신을 사이트 B 노드로 라이브 마이그레이션합니다.

  2. 장애 조치 전에 HA가 VM을 사이트 A 노드로 다시 이동시키지 못하도록 방지하십시오:

    ha-manager set vm:<vm_id> --failback 0
  3. 사이트 B 클러스터에서 계획된 장애 조치를 시작합니다:

    snapmirror failover start -destination-path <secondary_svm>:
  4. 장애 조치가 완료될 때까지 모니터링하십시오:

    snapmirror failover show
  5. VM I/O가 계속되고 모든 Proxmox VE 노드에서 스토리지가 활성 상태로 유지되는지 확인하십시오.

  6. VIP LIF를 사용하는 경우 두 라우터 모두 클러스터 B에서 /32 경로를 학습했는지 확인하십시오.

  7. SMP에서 ONTAP 플랜에 대한 검색을 실행한 다음 온디맨드 백업을 실행하여 SMP가 사이트 B의 SVM으로부터 VM을 보호하는지 확인합니다.

  8. 테스트가 완료되면 사이트 A로 페일백하고, 테스트 VM에 대해 failback`을(를) 다시 `1(으)로 설정합니다.

결과

Proxmox VE VM은 활성 SVM이 사이트 간에 이동하는 동안에도 동일한 NFS 공유 스토리지에서 계속 실행되며, 클러스터는 예기치 않은 사이트 장애 발생 시 자동으로 복구됩니다.