OpenShift 온-프레미스 및 Azure Red Hat OpenShift에 SQL Server 빅 데이터 클러스터 배포

적용 대상: SQL Server 2019(15.x)

중요

Microsoft SQL Server 2019 빅 데이터 클러스터 추가 기능이 사용 중지됩니다. SQL Server 2019 빅 데이터 클러스터에 대한 지원은 2025년 2월 28일에 종료됩니다. Software Assurance를 사용하는 SQL Server 2019의 모든 기존 사용자는 플랫폼에서 완전히 지원되며, 소프트웨어는 지원 종료 시점까지 SQL Server 누적 업데이트를 통해 계속 유지 관리됩니다. 자세한 내용은 공지 블로그 게시물Microsoft SQL Server 플랫폼의 빅 데이터 옵션을 참조하세요.

이 문서에서는 OpenShift 환경, 온-프레미스 또는 ARO(Azure Red Hat OpenShift)에 SQL Server 빅 데이터 클러스터를 배포하는 방법을 설명합니다.

ARO를 사용하고 그런 다음 이 플랫폼에 배포된 BDC를 사용하여 샘플 환경을 부트스트랩하는 빠른 방법이 필요한 경우 여기에서 제공되는 Python 스크립트를 사용하면 됩니다.

빅 데이터 클러스터를 온-프레미스 OpenShift 또는 ARO(Azure Red Hat OpenShift)에 배포할 수 있습니다. SQL Server 빅 데이터 클러스터 릴리스 정보에서 테스트된 구성에 대한 OpenShifts CRI-O 버전의 유효성을 검사합니다. 배포 워크플로는 여타 Kubernetes 기반 플랫폼(kubeadmAKS)과 비슷하나, 몇 가지 차이점이 있습니다. 차이점은 주로 애플리케이션을 루트가 아닌 사용자로 실행하는 것과 BDC가 배포된 네임스페이스에 사용되는 보안 컨텍스트와 관련되어 있습니다.

온-프레미스로 OpenShift 클러스터를 배포하는 방법은 Red Hat OpenShift 설명서를 참조하세요. ARO 배포는 Azure Red Hat OpenShift를 참조하세요.

이 문서에서는 OpenShift 플랫폼과 관련된 배포 단계를 간략하게 설명하고, 대상 환경에 액세스하기 위한 옵션과 빅 데이터 클러스터를 배포하는 데 사용하는 네임스페이스를 설명합니다.

필수 구성 요소

Important

아래의 필수 구성 요소는 클러스터 수준 개체를 만들기 위한 충분한 권한이 있는 OpenShift 클러스터 관리자(cluster-admin 클러스터 역할)가 수행해야 합니다. OpenShift의 클러스터 역할에 대한 자세한 내용은 RBAC를 사용하여 사용 권한 정의 및 적용을 참조하세요.

  1. OpenShift의 pidsLimit 설정이 SQL Server 워크로드를 수용할 수 있도록 업데이트되었는지 확인합니다. OpenShift의 기본값은 프로덕션과 유사한 워크로드에 비해 너무 낮습니다. 적어도 4096로 시작하지만 최적의 값은 SQL Server의 max worker threads 설정과 OpenShift 호스트 노드의 CPU 프로세서 수에 따라 달라집니다.

    • OpenShift 클러스터의 pidsLimit를 업데이트하는 방법을 확인하려면 이 지침을 참조하세요. 4.3.5 전의 OpenShift 버전에는 업데이트된 값의 효력이 발생되지 않는 결함이 있었습니다. OpenShift 작업을 최신 버전으로 업그레이드해야 합니다.
    • 환경 및 계획된 SQL Server 워크로드에 따라 최적의 값을 계산하는 데 도움이 되도록 아래의 예측 및 예제를 사용할 수 있습니다.
    프로세서 수 기본 최대 작업자 스레드 프로세서당 기본 작업자 최소 pidsLimit 값
    64 512 16 512 + (64 *16) = 1536
    128 512 32 512 + (128*32) = 4608

    참고 항목

    다른 프로세스(예: 백업, CLR, 전체 텍스트, SQLAgent)도 약간의 오버헤드가 발생하므로 예상 값에 버퍼를 추가합니다.

  2. 사용자 지정 SCC(보안 컨텍스트 제약) bdc-scc.yaml 다운로드:

    curl https://raw.githubusercontent.com/microsoft/sql-server-samples/master/samples/features/sql-big-data-cluster/deployment/openshift/bdc-scc.yaml -o bdc-scc.yaml
    
  3. 클러스터에 SCC를 적용합니다.

    oc apply -f bdc-scc.yaml
    

    참고 항목

    BDC용 사용자 지정 SCC는 추가 권한이 있는 OpenShift의 기본 제공 nonroot SCC를 기반으로 합니다. OpenShift의 보안 컨텍스트 제약 조건에 대한 자세한 내용은 보안 컨텍스트 제약 조건 관리를 참조하세요. nonroot SCC 위에 있는 빅 데이터 클러스터에 필요한 추가 권한에 대한 자세한 내용을 알아보려면 여기에서 백서를 다운로드하세요.

  4. 네임스페이스/프로젝트를 만듭니다.

    oc new-project <namespaceName>
    
  5. BDC가 배포된 네임스페이스내에서 서비스 계정에 사용자 지정 SCC를 바인딩합니다.

    oc create clusterrole bdc-role --verb=use --resource=scc --resource-name=bdc-scc -n <namespaceName>
    oc create rolebinding bdc-rbac --clusterrole=bdc-role --group=system:serviceaccounts:<namespaceName>
    
  6. BDC를 배포하는 사용자에게 적절한 권한을 할당합니다. 다음 중 하나를 수행합니다.

    • BDC를 배포하는 사용자에게 클러스터 관리자 역할이 있는 경우 빅 데이터 클러스터 배포를 계속 진행합니다.

    • BDC를 배포하는 사용자가 네임스페이스 관리자인 경우 만든 네임스페이스에 대한 사용자 클러스터 관리자 로컬 역할을 할당합니다. 이는 빅 데이터 클러스터를 배포 및 관리하는 사용자가 네임스페이스 수준 관리자 권한을 갖도록 하기 위한 선호되는 옵션입니다.

    oc create rolebinding bdc-user-rbac --clusterrole=cluster-admin --user=<userName> -n <namespaceName>
    

    그다음 빅 데이터 클러스터를 배포하는 사용자는 OpenShift 콘솔에 로그인해야 합니다.

    oc login -u <deployingUser> -p <password>
    

빅 데이터 클러스터를 배포합니다.

  1. 최신 azdata를 설치합니다.

  2. 대상 환경(온-프레미스 OpenShift 또는 ARO) 및 배포 시나리오에 따라 OpenShift에 대한 기본 제공 구성 파일 중 하나를 복제합니다. 배포 구성 파일 섹션의 OpenShift에 특정된 설정을 확인하려면 아래 기본 제공 구성 파일에서 OpenShift와 관련된 설정 섹션을 참조하세요. 사용 가능한 구성 파일에 대한 자세한 내용은 배포 지침을 참조하세요.

    사용 가능한 모든 기본 제공 구성 파일을 나열합니다.

    azdata bdc config list
    

    기본 제공 구성 파일 중 하나를 복제하려면 아래 명령을 실행합니다(필요에 따라 대상 플랫폼/시나리오를 기반으로 프로필을 바꿀 수 있음).

    azdata bdc config init --source openshift-dev-test --target custom-openshift
    

    ARO에 배치하려면 이 환경에 적합한 serviceTypestorageClass에 대한 기본값을 포함하는 aro- 프로파일 중 하나로 시작하세요. 예시:

    azdata bdc config init --source aro-dev-test --target custom-openshift
    
  3. 구성 파일 control.json 및 bdc.json을 사용자 지정합니다. 다음은 다양한 사용 사례에 대한 사용자 지정을 안내하는 몇 가지 추가 리소스입니다.

    참고 항목

    BDC용 Microsoft Entra ID(이전의 Azure Active Directory)와의 통합은 지원되지 않으므로 ARO에 배포할 때 이 인증 방법을 사용할 수 없습니다.

  4. 환경 변수를 설정합니다.

  5. 빅 데이터 클러스터를 배포합니다.

    azdata bdc create --config custom-openshift --accept-eula yes
    
  6. 배포에 성공하게 되면 로그인하고 외부 클러스터 엔드포인트를 나열할 수 있습니다.

       azdata login -n mssql-cluster
       azdata bdc endpoint list
    

배포 구성 파일의 OpenShift 특정 설정

SQL Server 2019 CU5에서는 Pod 및 노드 메트릭의 수집을 제어하는 두 가지 기능 스위치를 도입했습니다. 이러한 매개 변수는 OpenShift에 대한 기본 제공 프로필에서 기본적으로 false로 설정됩니다. 모니터링 컨테이너에 권한 있는 보안 컨텍스트가 필요하기 때문입니다. 이로 인해 BDC가 배포된 네임스페이스의 보안 제약 조건이 일부 완화됩니다.

    "security": {
      "allowNodeMetricsCollection": false,
      "allowPodMetricsCollection": false
}

ARO에서 기본 스토리지 클래스의 이름은 managed-premium입니다(기본 스토리지 클래스를 default라고 하는 AKS와는 반대). control.jsonaro-dev-test에 해당하는 aro-dev-test-ha에서 찾을 수 있습니다.

    },
    "storage": {
      "data": {
        "className": "managed-premium",
        "accessMode": "ReadWriteOnce",
        "size": "15Gi"
      },
      "logs": {
        "className": "managed-premium",
        "accessMode": "ReadWriteOnce",
        "size": "10Gi"
      }

bdc-scc.yaml 파일

이 배포에 대한 SCC 파일은 다음과 같습니다.

allowHostDirVolumePlugin: false
allowHostIPC: false
allowHostNetwork: false
allowHostPID: false
allowHostPorts: false
allowPrivilegeEscalation: true
allowPrivilegedContainer: false
allowedCapabilities:
  - SETUID
  - SETGID
  - CHOWN
  - SYS_PTRACE
apiVersion: security.openshift.io/v1
defaultAddCapabilities: null
fsGroup:
  type: RunAsAny
kind: SecurityContextConstraints
metadata:
  annotations:
    kubernetes.io/description: SQL Server BDC custom scc is based on 'nonroot' scc plus additional capabilities required by BDC.
  generation: 2
  name: bdc-scc
readOnlyRootFilesystem: false
requiredDropCapabilities:
  - KILL
  - MKNOD
runAsUser:
  type: MustRunAsNonRoot
seLinuxContext:
  type: MustRunAs
supplementalGroups:
  type: RunAsAny
volumes:
  - configMap
  - downwardAPI
  - emptyDir
  - persistentVolumeClaim
  - projected
  - secret

다음 단계

자습서: SQL Server 빅 데이터 클러스터에 샘플 데이터 로드