Baca dalam bahasa Inggris

Bagikan melalui


Menyempurnakan SQL dan mengatasi masalah latensi dengan Layanan Federasi Direktori Aktif

Dalam pembaruan untuk Layanan Federasi Direktori Aktif 2016, kami memperkenalkan peningkatan berikut untuk mengurangi latensi lintas database. Pembaruan yang akan datang untuk Layanan Federasi Direktori Aktif 2019 akan menyertakan peningkatan ini.

Pembaruan cache Dalam Memori di utas latar belakang

Dalam penyebaran Ketersediaan Always on (AoA) sebelumnya, latensi ada untuk operasi "Baca" karena simpul master dapat terletak di pusat data terpisah. Panggilan antara dua pusat data yang berbeda menghasilkan latensi.

Dalam pembaruan terbaru ke Layanan Federasi Direktori Aktif, pengurangan latensi ditargetkan melalui penambahan utas latar belakang untuk me-refresh cache konfigurasi Layanan Federasi Direktori Aktif dan pengaturan untuk mengatur periode waktu refresh. Waktu yang dihabiskan untuk pencarian database berkurang secara signifikan dalam utas permintaan, karena pembaruan cache database dipindahkan ke utas latar belakang.

backgroundCacheRefreshEnabled Ketika diatur ke true, LAYANAN Federasi Direktori Aktif akan mengaktifkan utas latar belakang untuk menjalankan pembaruan cache. Frekuensi mengambil data dari cache dapat disesuaikan dengan nilai waktu dengan mengatur cacheRefreshIntervalSecs. Nilai default diatur ke 300 detik saat backgroundCacheRefreshEnabled diatur ke true. Setelah durasi nilai yang ditetapkan, LAYANAN Federasi Direktori Aktif mulai me-refresh cache-nya dan saat pembaruan sedang berlangsung, data cache lama akan terus digunakan.

Ketika Layanan Federasi Direktori Aktif menerima permintaan untuk aplikasi, AD FS mengambil aplikasi dari SQL dan menambahkannya ke cache. cacheRefreshIntervalSecs Pada nilai , aplikasi dalam cache di-refresh menggunakan utas latar belakang. Saat entri ada di cache, permintaan masuk akan menggunakan cache saat refresh latar belakang sedang berlangsung. Jika entri tidak diakses selama 5 * cacheRefreshIntervalSecs, entri akan dihilangkan dari cache. Entri terlama juga dapat dihilangkan dari cache setelah nilai yang dapat maxRelyingPartyEntries dikonfigurasi tercapai.

Catatan

Data cache akan di-refresh di luar cacheRefreshIntervalSecs nilai jika AD FS menerima pemberitahuan dari SQL yang menandakan bahwa perubahan telah terjadi dalam database. Pemberitahuan ini akan memicu cache untuk disegarkan.

Rekomendasi untuk mengatur refresh cache

Nilai default untuk refresh cache adalah lima menit. Disarankan untuk mengaturnya ke 1 jam untuk mengurangi refresh data yang tidak perlu oleh Layanan Federasi Direktori Aktif karena data cache akan disegarkan jika terjadi perubahan SQL.

Layanan Federasi Direktori Aktif mendaftarkan panggilan balik untuk perubahan SQL, dan setelah perubahan, Layanan Federasi Direktori Aktif menerima pemberitahuan. Melalui metode ini, Layanan Federasi Direktori Aktif menerima setiap perubahan baru dari SQL segera setelah terjadi.

Jika terjadi kesalahan jaringan, yang mengakibatkan Layanan Federasi Direktori Aktif kehilangan pemberitahuan SQL, Layanan Federasi Direktori Aktif akan di-refresh pada interval yang ditentukan oleh nilai refresh cache. Jika ada masalah konektivitas yang dicurigai antara Layanan Federasi Direktori Aktif dan SQL, disarankan untuk mengatur nilai refresh cache menjadi lebih rendah dari 1 jam.

Instruksi Konfigurasi

File konfigurasi mendukung beberapa entri cache. Berikut ini yang tercantum di bawah ini semua dapat dikonfigurasi berdasarkan kebutuhan organisasi Anda.

Contoh berikut memungkinkan refresh cache latar belakang dan mengatur periode refresh cache menjadi 1800 detik, atau 30 menit. Ini harus dilakukan pada setiap simpul Layanan Federasi Direktori Aktif dan layanan Layanan Federasi Direktori Aktif harus dimulai ulang setelahnya. Perubahan tidak berdampak pada simpul lain dan menguji simpul pertama sebelum membuat perubahan di semua simpul.

  1. Navigasi ke file konfigurasi LAYANAN Federasi Direktori Aktif (lokasi default C:\Windows\ADFS\Microsoft.IdentityServer.ServiceHost.exe.config) dan di bawah bagian "Microsoft.IdentityServer.Service", tambahkan entri di bawah ini:
  • backgroundCacheRefreshEnabled - Menentukan apakah fitur cache latar belakang diaktifkan. Nilai "true/false".
  • cacheRefreshIntervalSecs - Nilai dalam detik di mana Layanan Federasi Direktori Aktif akan menyegarkan cache. Layanan Federasi Direktori Aktif akan me-refresh cache jika ada perubahan dalam SQL. Layanan Federasi Direktori Aktif akan menerima pemberitahuan SQL dan me-refresh cache.

Catatan

Semua entri dalam file konfigurasi peka huruf besar/kecil. <cache cacheRefreshIntervalSecs="1800" > backgroundCacheRefreshEnabled="true" />

Nilai tambahan yang dapat dikonfigurasi yang didukung:

  • maxRelyingPartyEntries - Jumlah maksimum entri pihak yang mengandalkan layanan federasi direktori aktif yang akan disimpan dalam memori. Nilai ini juga digunakan oleh cache izin aplikasi oAuth. Jika ada lebih banyak izin aplikasi daripada RPs dan jika semua akan disimpan dalam memori, nilai ini harus menjadi jumlah izin aplikasi. Nilai defaultnya adalah 1000.
  • maxIdentityProviderEntries - Ini adalah jumlah maksimum entri penyedia klaim yang akan disimpan dalam memori. Nilai defaultnya adalah 200.
  • maxClientEntries - Ini adalah jumlah maksimum entri klien OAuth ad FS yang akan disimpan dalam memori. Nilai default adalah 500.
  • maxClaimDescriptorEntries - Jumlah maksimum entri deskriptor klaim ad FS akan disimpan dalam memori. Nilai default adalah 500.
  • maxNullEntries - Ini digunakan sebagai cache negatif. Ketika Layanan Federasi Direktori Aktif mencari entri dalam database dan tidak ditemukan, AD FS menambahkan dalam cache negatif. Ini adalah ukuran maksimum cache tersebut. Ada cache negatif untuk setiap jenis objek, itu bukan cache tunggal untuk semua objek. Nilai defaultnya adalah 50.0000.

Beberapa dukungan DB artefak di seluruh pusat data

Untuk konfigurasi sebelumnya dari beberapa pusat data, AD FS hanya mendukung satu database Artefak, yang menyebabkan latensi pusat data lintas pusat selama panggilan pengambilan.

Untuk mengurangi latensi pusat data silang, administrator AD FS sekarang dapat menyebarkan beberapa instans DB artefak, lalu memodifikasi file konfigurasi simpul Ad FS untuk menunjuk ke instans DB artefak yang berbeda. Database artefak string koneksi dapat disediakan dalam file konfigurasi yang memungkinkan Artefak DB per node. Jika string koneksi tidak ada dalam file konfigurasi, simpul akan kembali ke desain sebelumnya untuk menggunakan database artefak, yang ada di konfigurasi DB. Lingkungan hibrid juga didukung dengan konfigurasi ini.

Persyaratan

Sebelum menyiapkan beberapa dukungan database artefak, jalankan pembaruan pada semua simpul dan perbarui biner karena panggilan multi-simpul terjadi melalui fitur ini.

  1. Hasilkan skrip penyebaran untuk membuat Artefak DB: Untuk menyebarkan beberapa instans DB artefak, admin harus menghasilkan skrip penyebaran SQL untuk Artefak DB. Sebagai bagian dari pembaruan ini, cmdlet yang ada Export-AdfsDeploymentSQLScripttelah diperbarui untuk secara opsional mengambil parameter yang menentukan database LAYANAN Federasi Direktori Aktif mana yang akan menghasilkan skrip penyebaran SQL.

Misalnya, untuk menghasilkan skrip penyebaran hanya untuk Artefak DB, tentukan -DatabaseType parameter dan teruskan nilai "Artefak". Parameter opsional -DatabaseType menentukan jenis database AD FS dan dapat diatur ke: Semua (default), Artefak, atau Konfigurasi. Jika tidak ada -DatabaseType parameter yang ditentukan, skrip akan mengonfigurasi skrip Artefak dan Konfigurasi.

PowerShell
PS C:\> Export-AdfsDeploymentSQLScript -DestinationFolder <script folder where scripts will be created> -ServiceAccountName <domain\serviceaccount> -DatabaseType "Artifact"

Skrip yang dihasilkan harus dijalankan pada komputer SQL untuk membuat database yang diperlukan dan memberikan akun layanan Layanan Federasi Direktori Aktif, izin SQL SA ke database tersebut.

  1. Buat Artefak DB menggunakan skrip penyebaran. Salin skrip penyebaran CreateDB.sql dan SetPermissions.sql yang baru dibuat ke komputer server SQL dan jalankan untuk membuat Artefak DB lokal.

  2. Ubah file Konfigurasi untuk menambahkan koneksi Artefak DB. Navigasi ke file konfigurasi simpul Layanan Federasi Direktori Aktif, dan di bawah bagian "Microsoft.IdentityServer.Service", tambahkan titik masuk ke ArtifactDB yang baru dikonfigurasi.

Catatan

artifactStore dan connectionString adalah nilai peka huruf besar/kecil. Pastikan mereka dikonfigurasi dengan benar. <artifactStore connectionString="Sumber Data=.\SQLInstance; Keamanan Terintegrasi=True; Katalog Awal=AdfsArtifactStore" />

Gunakan nilai Sumber Data yang cocok dengan koneksi sql Anda.

  1. Mulai ulang layanan Layanan Federasi Direktori Aktif agar perubahan diterapkan.

Catatan

Tidak disarankan untuk menggunakan replikasi atau sinkronisasi SQL antara database artefak. Rekomendasinya adalah menyiapkan satu database artefak per pusat data.

Kegagalan pusat data silang dan pemulihan database

Disarankan untuk membuat database artefak failover pada pusat data yang sama dengan database artefak master. Jika failover terjadi, tidak akan ada peningkatan latensi. Database Artefak Failover di seluruh pusat data tidak disarankan. Berikut ini merinci bagaimana panggilan untuk fungsi deteksi pemutaran ulang OAuth, SAML, ESL, dan token dengan beberapa database artefak.

  • OAuth dan SAML

    Untuk permintaan artefak OAuth dan SAML, simpul akan membuat artefak di artefak DB yang ada dalam file konfigurasi. Jika file konfigurasi tidak berisi koneksi database artefak, file tersebut akan menggunakan artefak umum DB. Ketika permintaan berikutnya untuk mengambil artefak masuk ke simpul lain, simpul lain akan membuat REST API ke node ke-1 untuk mengambil artefak dari artefak DB. Ini diperlukan karena node yang berbeda mungkin memiliki database artefak yang berbeda dan simpul tidak tahu tentang itu. Jika node ke-1 tidak berfungsi, resolusi artefak akan gagal. Karena desain ini, mereplikasi artefak DB di berbagai pusat data tidak diperlukan. Jika satu seluruh pusat data tidak berfungsi, kemungkinan besar simpul, yang membuat artefak juga tidak berfungsi, berarti artefak tersebut tidak dapat diselesaikan lagi.

  • Penguncian Ekstranet

    Database Artefak yang dirujuk dalam file konfigurasi akan digunakan untuk data Penguncian Ekstranet. Namun, untuk fitur ESL, LAYANAN Federasi Direktori Aktif memilih master, yang menulis data dalam artefak DB. Semua simpul melakukan panggilan REST API ke simpul master untuk mendapatkan dan mengatur informasi terbaru tentang setiap pengguna. Jika beberapa database artefak sedang digunakan, admin harus memilih simpul master untuk setiap artefak DB atau pusat data.

    Untuk memilih satu simpul menjadi master ESL, navigasikan ke file konfigurasi simpul Ad FS, dan di bawah bagian "Microsoft.IdentityServer.Service", tambahkan yang berikut ini:

    Pada master, tambahkan entri berikut. Ketiga kunci peka huruf besar/kecil.

    <useractivityfarmrole masterFQDN=[FQDN dari primer yang dipilih] isMaster="true"/>

    Pada node lain tambahkan entri berikut:

    <useractivityfarmrole masterFQDN=[FQDN dari primer yang dipilih] isMaster="false"/>

    Catatan

    Karena beberapa database artefak tidak menyinkronkan data, nilai ESL tidak akan disinkronkan antara DB artefak. Pengguna berpotensi mencapai pusat data yang berbeda untuk permintaan, oleh karena itu membuat ExtranetLockoutThreshold bergantung pada jumlah Artefak DB, ExtranetLockoutThreshold * Jumlah DB Artefak.

    • Deteksi Pemutaran Ulang Token

      Data deteksi pemutaran ulang token selalu dipanggil dari database Artefak pusat. Layanan Federasi Direktori Aktif menyimpan token dari Kepercayaan Penyedia Klaim, memastikan bahwa token yang sama tidak dapat diputar ulang. Jika penyerang mencoba memutar ulang token yang sama, LAYANAN Federasi Direktori Aktif memverifikasi apakah token ada di Artefak DB. Jika token ada, permintaan akan ditolak. Database Artefak pusat digunakan untuk keamanan, karena data Artefak DB tidak direplikasi, penyerang dapat mengirim permintaan ke pusat data lain dan memutar ulang token. Membuat salinan baca-saja tambahan dari ArtifactDB tidak akan mencegah latensi pusat data silang dalam skenario ini, karena hanya database Artefak pusat yang digunakan.