재해 복구 구성

이 솔루션 플레이북과 함께 제공된 스크립트를 사용하여 기본 Kubernetes 클러스터에 YAML 스냅샷을 생성하고 다른(보조) Kubernetes 클러스터에서 복원할 수 있습니다. YAML 스냅샷을 구성하려면 스크립트를 다운로드하고 사용하기 전에 구성을 계획하고 요구 사항을 이해하는 것이 중요합니다.

참고:

이 솔루션은 제어 계획 및 작업자 노드를 비롯한 Kubernetes 클러스터가 모두 존재한다고 가정합니다.

구성 계획

기본 시스템을 기반으로 보조 시스템에서 리소스 및 구성을 계획합니다. 이 스크립트를 사용하려면 두 Kubernetes 클러스터가 이미 있어야 합니다. Kubernetes 명령행 툴인 kubectl를 사용하여 클러스터에 대해 명령을 실행하려면 두 클러스터에 모두 액세스할 수 있어야 합니다.

참고:

이 솔루션은 제어 계획 및 작업자 노드를 비롯한 Kubernetes 클러스터가 모두 존재한다고 가정합니다. 이 플레이북에 제공된 권장 사항 및 스크립트는 리소스, 제어 플레인 또는 작업자 노드 구성을 확인하지 않습니다.

다음 다이어그램은 구성된 경우 완전히 다른 Kubernetes 클러스터에서 아티팩트 스냅샷을 복원할 수 있음을 보여줍니다.

다음은 kube-api-dr.png에 대한 설명입니다.
그림 kube-api-dr.png에 대한 설명

구성을 계획할 때 Restore에 대한 다음 요구 사항을 완료하십시오.

  1. 보조에서 기본의 필수 작업자 노드 및 리소스를 사용할 수 있는지 확인하십시오.
    여기에는 Pod의 공유 스토리지 마운트, 로드 밸런서 및 데이터베이스가 포함됩니다. 또한 복원 중인 네임스페이스에서 사용하는 모든 외부 시스템이 포함됩니다.
  2. 스크립트를 실행하기 전에 관련된 네임스페이스에서 사용되는 필요한 영구 볼륨을 수동으로 만듭니다.

    이는 기본 작업입니다. 스크립트는 기본 볼륨에 사용된 영구 볼륨 클레임을 만듭니다. 그러나 영구 볼륨은 서로 다른 네임스페이스의 서로 다른 클레임에서 공유될 수 있으므로 자동화 스크립트는 extract-apply 스크립트를 실행하기 전에 보조 클러스터에 영구 볼륨을 수동으로 만들어야 합니다.

    또는 pvmaak8DR-apply.env 파일의 nons_artifacts_types 변수에 추가할 수 있습니다(즉, export nons_artifacts_types="crd clusterrole clusterrolebinding pv 사용). 이렇게 하면 스크립트가 보조 볼륨에 영구 볼륨을 만들도록 합니다. 이 두 번째 경우에는 다른 영구 볼륨 클레임과 충돌이 발생할 수 있는지 확인하는 것이 좋습니다.

  3. 보조 클러스터가 복제 중인 네임스페이스에서 사용되는 컨테이너 이미지에 적절한 액세스 권한을 가지고 있는지 확인합니다.
    • 복제할 네임스페이스에 있는 컨테이너 레지스트리에 액세스하는 데 사용되는 암호는 이 플레이북과 함께 제공된 스크립트에 의해 복사됩니다. 레지스트리에 대한 인증서가 다른 네임스페이스에 저장된 경우 보조 항목에 수동으로 생성해야 합니다. 또는 암호가 YAML 스냅샷에도 포함되도록 maak8sapply: my_ns(여기서 my_ns은 복원 중인 네임스페이스임스페이스임)를 사용하여 인증서에 레이블을 지정할 수 있습니다. 예를 들면 다음과 같습니다.
      kubectl label secret regcredfra -n other_namespace 
      maak8sapply=namespace_being_backedup
    • 기본 워커 노드에서 수동으로 로드된 이미지를 사용하는 경우 보조 워커 노드에서도 수동으로 로드해야 합니다.

      참고:

      제공된 스크립트는 복제 중인 네임스페이스에 사용된 이미지를 보고합니다.
  4. 각 클러스터의 Kube API 끝점에 대해 kubectl 작업을 실행할 수 있는 배스천 노드를 통해 기본 및 보조 클러스터에 대한 액세스를 제공합니다.
    ssh 또는 scp를 둘 다(기본 및 대기)에 사용하고 DR 동기화를 조정할 수 있는 세번째 노드를 사용할 수 있습니다. 그러나 불필요한 홉 및 세션 오버헤드를 방지하기 위해 Oracle은 기본 배스천을 DR 조정자로 사용할 것을 권장합니다. 다른 옵션을 사용하려면 제공된 스크립트를 사용자정의해야 합니다.
  5. my_ns namespace를 복원할 때 백업에 이름 지정되지 않은 리소스가 보조에 적용되도록 하려면 maak8sapply: my_ns 레이블을 사용합니다.

    클러스터 루트에 상주하는 아티팩트(즉, 정확한 네임스페이스의 일부가 아님)의 경우 스크립트는 네임스페이스 이름이 포함된 namespace:group: 필드 참조를 찾습니다. 백업에 이름이 지정되지 않은 다른 리소스가 필요한 경우 추가할 리소스에 레이블을 지정할 수 있습니다.

    예를 들어, domains.weblogic.oracle 사용자정의 리소스 정의는 네임스페이스의 일부가 아니지만 다음을 사용하여 apply 작업 레이블 지정에 포함할 수 있습니다. kubectl label crd domains.weblogic.oracle maak8sapply=opns

구성

YAML 스냅샷 재해 복구를 구성합니다.

  1. "다운로드 코드"에서 YAML 스냅샷 재해 복구 스크립트를 모두 다운로드합니다.

    참고:

    기본 스크립트는 다른 보조 스크립트를 사용하기 때문에 모든 스크립트는 동일한 경로에 있어야 합니다.
  2. maak8DR-apply.env 스크립트를 편집하고 보조 시스템에 액세스하는 데 필요한 주소 및 SSH 키를 업데이트합니다.
    예를 들면 다음과 같습니다.
    export user_sec=opc
    export ssh_key_sec=/home/opc/Key.ppk
    #Secondary bastion node
    export sechost=10.10.0.23
  3. 필요에 따라 exclude_listnons_artifacts_types의 값을 사용자정의합니다.
    • exclude_list: 모든 사용자 정의 네임스페이스를 백업하려고 할 때도 백업에서 제외해야 하는 네임스페이스의 공백으로 구분된 목록입니다. 이는 보조에 적용되지 않는 제어 평면 관련 네임스페이스를 복사하지 않도록 하기 위한 것입니다.
    • nons_artifacts_types: 루트 트리에 속하지만(즉, 정확한 네임스페이스의 일부가 아님) 스냅샷에도 포함되어야 하는 목록 또는 아티팩트입니다. 프레임워크는 백업 중인 네임스페이스에 대한 참조를 찾습니다.
    일반적으로 파일에 제공된 기본값을 사용할 수 있습니다.
    #List of namespaces that will be excluded from the backup
    export exclude_list="kube-system kube-flannel kube-node-lease kube-public"
    #Root artifacts that will be included
    export nons_artifacts_types="crd clusterrole clusterrolebinding"
    
  4. 복제할 선택한 네임스페이스를 인수로 제공하는 maak8DR-apply.sh 스크립트를 실행합니다.
    • 인수를 제공하지 않으면 스크립트는 exclude_list 변수에 제공된 네임스페이스를 제외한 모든 네임스페이스를 복제합니다.

    • 정확한 이름 공간 목록을 사용하는 경우 다른 이름 공간과의 종속성을 기준으로 정렬해야 합니다.

      즉, soans 네임스페이스가 opns 네임스페이스의 서비스에 종속되거나 서비스를 사용하는 경우 opns가 먼저 목록에 나타나야 합니다. 예를 들어, ./maak8DR-apply.sh soans opns 대신 다음을 실행합니다.

      ./maak8DR-apply.sh opns soans

확인

maak8DR-apply.sh 스크립트를 실행한 후 기본 클러스터에 있는 모든 아티팩트가 보조 클러스터로 복제되었는지 확인합니다. 보조 클러스터를 살펴보고 보조 사이트의 포드가 오류 없이 실행 중인지 확인합니다.

maak8DR-apply.sh 스크립트를 실행하면 프레임워크에서 working_dir 디렉토리를 /tmp/backup.date로 생성합니다. maak8-get-all-artifacts.shmaak8-push-all-artifacts.sh 스크립트를 개별적으로 실행하면 작업 디렉토리가 각 경우에 명령줄의 인수로 제공됩니다.

  1. 필요한 포드가 기본의 상태와 일치할 때까지 보조 포드의 상태를 확인합니다.
    기본적으로 포드 및 배포는 보조 영역에서 시작됩니다. 복원이 완료되면 보조 클러스터의 상태가 표시됩니다. 일부 포드는 RUNNING 상태에 도달하는 데 추가 시간이 걸릴 수 있습니다.
  2. 추출 및 적용 작업에서 발생 가능한 오류는 기본 파일의 $working_dir/date/backup-operations.log 파일을 확인하십시오.
  3. 추출 및 적용 작업에서 발생 가능한 오류는 보조 파일의 $working_dir/restore.log$working_dir/date/restore-operations.log 파일을 확인하십시오.
    restore-operations.log 파일에는 자세한 복원 작업이 포함되어 있습니다.