Menyebarkan SQL Server Kluster Big Data di OpenShift lokal dan Azure Red Hat OpenShift

Berlaku untuk: SQL Server 2019 (15.x)

Penting

Add-on Kluster Big Data Microsoft SQL Server 2019 akan dihentikan. Dukungan untuk Kluster Big Data SQL Server 2019 akan berakhir pada 28 Februari 2025. Untuk informasi selengkapnya, lihat Opsi big data di platform Microsoft SQL Server.

Artikel ini menjelaskan cara menyebarkan SQL Server Big Data Cluster di lingkungan OpenShift, lokal, atau di Azure Red Hat OpenShift (ARO).

Tip

Untuk cara cepat untuk bootstrap lingkungan sampel menggunakan ARO dan kemudian BDC yang disebarkan pada platform ini, Anda dapat menggunakan skrip Python yang tersedia di sini.

Anda dapat menyebarkan kluster big data ke OpenShift lokal atau di Azure Red Hat OpenShift (ARO). Validasi versi CRI-O OpenShifts terhadap konfigurasi yang diuji pada catatan rilis SQL Server Kluster Big Data. Meskipun alur kerja penyebaran mirip dengan penyebaran di platform berbasis Kubernetes lainnya (kubeadm dan AKS), ada beberapa perbedaan. Perbedaannya terutama dalam kaitannya dengan menjalankan aplikasi sebagai pengguna non-root dan konteks keamanan yang digunakan untuk namespace BDC disebarkan.

Untuk menyebarkan kluster OpenShift lokal, lihat dokumentasi Red Hat OpenShift. Untuk penyebaran ARO, lihat Azure Red Hat OpenShift.

Artikel ini menguraikan langkah-langkah penyebaran yang khusus untuk platform OpenShift, menunjukkan opsi yang Anda miliki untuk mengakses lingkungan target dan namespace yang Anda gunakan untuk menyebarkan kluster big data.

Prasyarat

Penting

Prasyarat di bawah ini harus dilakukan oleh admin kluster OpenShift (peran kluster-admin kluster) yang memiliki izin yang memadai untuk membuat objek tingkat kluster ini. Untuk informasi selengkapnya tentang peran kluster di OpenShift lihat Menggunakan RBAC untuk menentukan dan menerapkan izin.

  1. pidsLimit Pastikan pengaturan pada OpenShift diperbarui untuk mengakomodasi beban kerja SQL Server. Nilai default di OpenShift terlalu rendah untuk produksi seperti beban kerja. Mulailah dengan setidaknya 4096, tetapi nilai optimal tergantung max worker threads pengaturan dalam SQL Server dan jumlah prosesor CPU pada node host OpenShift.

    • Untuk mengetahui cara memperbarui pidsLimit kluster OpenShift Anda, gunakan instruksi ini. Perhatikan bahwa versi OpenShift sebelum 4.3.5 memiliki cacat yang menyebabkan nilai yang diperbarui tidak berlaku. Pastikan Anda memutakhirkan OpenShift ke versi terbaru.
    • Untuk membantu Anda menghitung nilai optimal tergantung pada lingkungan dan beban kerja SQL Server yang direncanakan, Anda dapat menggunakan estimasi dan contoh di bawah ini:
    Jumlah prosesor Utas pekerja maks default Pekerja default per prosesor Nilai pidsLimit minimum
    64 512 16 512 + (64 *16) = 1536
    128 512 32 512 + (128*32) = 4608

    Catatan

    Proses lain (misalnya cadangan, CLR, Fulltext, SQLAgent) juga menambahkan beberapa overhead, jadi tambahkan buffer ke perkiraan nilai.

  2. Unduh batasan konteks keamanan kustom (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. Terapkan SCC ke kluster.

    oc apply -f bdc-scc.yaml
    

    Catatan

    SCC kustom untuk BDC didasarkan pada SCC bawaan nonroot di OpenShift, dengan izin tambahan. Untuk mempelajari selengkapnya tentang batasan konteks keamanan di OpenShift lihat Mengelola Batasan Konteks Keamanan. Untuk informasi terperinci tentang izin tambahan apa yang diperlukan untuk kluster big data di atas nonroot SCC, unduh laporan resmi di sini.

  4. Buat namespace/proyek:

    oc new-project <namespaceName>
    
  5. Ikat SCC kustom dengan akun layanan di namespace tempat BDC disebarkan:

    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. Tetapkan izin yang sesuai untuk pengguna yang menyebarkan BDC. Lakukan salah satu hal berikut.

    • Jika pengguna yang menyebarkan BDC memiliki peran cluster-admin, lanjutkan untuk menyebarkan kluster big data.

    • Jika pengguna yang menyebarkan BDC adalah admin namespace layanan, tetapkan peran lokal admin kluster pengguna untuk namespace yang dibuat. Ini adalah opsi yang disukai bagi pengguna yang menyebarkan dan mengelola kluster big data untuk memiliki izin admin tingkat namespace.

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

    Pengguna yang menyebarkan kluster big data kemudian harus masuk ke konsol OpenShift:

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

Menyebarkan kluster big data

  1. Instal azdata terbaru.

  2. Kloning salah satu file konfigurasi bawaan untuk OpenShift, tergantung pada lingkungan target Anda (OpenShift lokal atau ARO) dan skenario penyebaran. Lihat pengaturan khusus OpenShift di bagian file konfigurasi penyebaran di bawah ini untuk pengaturan yang khusus untuk OpenShift dalam file konfigurasi bawaan. Untuk detail selengkapnya tentang file konfigurasi yang tersedia, lihat panduan penyebaran.

    Cantumkan semua file konfigurasi bawaan yang tersedia.

    azdata bdc config list
    

    Untuk mengkloning salah satu file konfigurasi bawaan, jalankan perintah di bawah ini (secara opsional, Anda dapat mengganti profil berdasarkan platform/skenario yang ditargetkan):

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

    Untuk penyebaran di ARO, mulailah dengan salah aro- satu profil, yang mencakup nilai default untuk serviceType dan storageClass sesuai untuk lingkungan ini. Contohnya:

    azdata bdc config init --source aro-dev-test --target custom-openshift
    
  3. Sesuaikan file konfigurasi control.json dan bdc.json. Berikut adalah beberapa sumber daya tambahan yang memandu Anda melalui penyesuaian untuk berbagai kasus penggunaan:

    Catatan

    Mengintegrasikan dengan Azure Active Directory untuk BDC tidak didukung, oleh karena itu Anda tidak dapat menggunakan metode autentikasi ini saat menyebarkan di ARO.

  4. Mengatur variabel lingkungan

  5. Menyebarkan kluster big data

    azdata bdc create --config custom-openshift --accept-eula yes
    
  6. Setelah penyebaran berhasil, Anda dapat masuk dan mencantumkan titik akhir kluster eksternal:

       azdata login -n mssql-cluster
       azdata bdc endpoint list
    

Pengaturan khusus OpenShift dalam file konfigurasi penyebaran

SQL Server 2019 CU5 memperkenalkan dua sakelar fitur untuk mengontrol pengumpulan metrik pod dan simpul. Parameter ini diatur ke false secara default di profil bawaan untuk OpenShift karena kontainer pemantauan memerlukan konteks keamanan istimewa, yang akan melonggarkan beberapa batasan keamanan untuk namespace BDC disebarkan.

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

Nama kelas penyimpanan default di ARO adalah managed-premium (dibandingkan dengan AKS di mana kelas penyimpanan default disebut default). Anda akan menemukan ini di yang control.json sesuai dengan aro-dev-test dan aro-dev-test-ha:

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

File bdc-scc.yaml

File SCC untuk penyebaran ini adalah:

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

Langkah berikutnya

Tutorial: Memuat data sampel ke dalam kluster big data SQL Server