Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menerapkan instance cluster failover SQL Server di Amazon EC2 dan Amazon FSx dengan menggunakan Terraform
Mark Hudson dan Matt Burgess, Amazon Web Services
Ringkasan
Pola ini menggunakan Terraform untuk menyebarkan instance cluster failover SQL Server () di seluruh node Windows Server Failover Cluster (WSFCFCIs) di Amazon Elastic Compute Cloud (Amazon). EC2 Selain itu, pola menggunakan penyimpanan FSx bersama Amazon untuk data dan file log.
Ketika database SQL Server dimigrasikan ke AWS, pilihan pertama adalah Amazon RDS for SQL Server. Namun, terkadang Amazon RDS for SQL Server tidak cocok dan SQL Server harus digunakan di EC2 Amazon dalam arsitektur yang sangat tersedia. Dalam solusi ini, SQL Server FCIs diinstal di seluruh node WSFC.
Modul Terraform yang disertakan dengan pola ini menyediakan hingga dua instance Amazon EC2 SQL Server. Sistem file Amazon FSx untuk Windows File Server bertindak sebagai saksi kuorum dan menyimpan data bersama dan file log. Terlepas dari jumlah instance yang dikonfigurasi, node instance SQL Server akan selalu membuat dan bergabung dengan cluster FCI untuk memastikan paritas lingkungan. (Biasanya, satu instance dikonfigurasi untuk pengembangan dan dua instance untuk lingkungan produksi.) Untuk konfigurasi yang menggunakan dua node untuk ketersediaan tinggi, Network Load Balancer internal disediakan. Network Load Balancer menggunakan probe kesehatan yang dikonfigurasi pada cluster FCI untuk mengidentifikasi node mana yang utama.
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS.
Amazon Virtual Private Cloud (Amazon VPC) dengan dua subnet di Availability Zone terpisah.
Set opsi Amazon VPC DHCP. Konfigurasikan nama domain untuk menyelesaikan nama domain Active Directory Anda dan domain dan server nama NetBIOS untuk menunjuk ke pengontrol domain Active Directory Anda. Untuk informasi selengkapnya, lihat Konfigurasi VPC di Informasi tambahan.
AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD).
Gambar Mesin Amazon Kustom (AMI). Untuk detail selengkapnya, lihat konfigurasi AMI di Informasi tambahan.
Bucket Amazon Simple Storage Service (Amazon S3) yang berisi image ISO SQL Server. Prasyarat ini hanya diperlukan jika menggunakan EC2 Image Builder dengan
component.yamlfile yang disediakan untuk membuat AMI kustom.AWS Key Management Service (AWS KMS) kunci enkripsi.
Secara default, SQL Server diinstal menggunakan kunci produk edisi pengembang. Sistem produksi diharapkan menggunakan kunci produk yang valid yang diteruskan ke modul oleh variabel yang relevan.
Batasan
Solusi ini membutuhkan AWS Managed Microsoft AD. Namun, jika Anda mau, Anda dapat menggunakan implementasi Active Directory yang dikelola sendiri sebagai gantinya. Untuk melakukannya, ubah modul Amazon FSx Terraform yang disertakan untuk menghapus atribut.
active_directory_idKemudian, tambahkan empat atribut yang diperlukan untuk Active Directory yang dikelola sendiri seperti yang ditunjukkan dalam dokumentasi Terraform. SQL Server diatur untuk menggunakan otentikasi mode campuran. Jika mau, Anda dapat menggunakan otentikasi khusus Windows. Untuk melakukannya, dalam skrip data pengguna yang disediakan, hapus
/SECURITYMODEdan/SAPWDparameter yang disediakan kesetup.exeperintah. Anda dapat menghapussql_accounts.tffile, dan Anda dapat memodifikasiinstances.tffile untuk menghapussql_sa_passwordentri.Saat menghapus cluster yang digunakan, Anda harus menghapus objek komputer virtual yang sesuai dan objek komputer individual di Active Directory. Untuk menghapus objek, gunakan alat administratif Direktori Aktif.
Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat AWS Layanan menurut Wilayah
. Untuk titik akhir tertentu, lihat Titik akhir dan kuota layanan, dan pilih tautan untuk layanan.
Versi produk
Solusi ini diuji dengan versi berikut:
Windows Server 2019
SQL Server 2019
Arsitektur
Tumpukan teknologi sumber
SQL Server
Tumpukan teknologi target
SQL Server FCI pada node WSFC menggunakan Amazon EC2
Amazon FSx untuk Server File Windows
Bucket Amazon S3
AWS Secrets Manager
AWS Managed Microsoft AD
AWS KMS
AWS Identity and Access Management (IAM)
Arsitektur target
Diagram berikut menunjukkan arsitektur untuk solusi ini.

Diagram menunjukkan yang berikut:
Peran IAM yang menyediakan akses EC2 instans ke AWS KMS dan Secrets Manager
Dua node SQL Server digunakan pada EC2 instans Amazon dalam subnet pribadi di dua Availability Zone
Network Load Balancer untuk memfasilitasi koneksi ke instance SQL Server aktif (tidak digunakan saat menyiapkan cluster node tunggal)
Amazon FSx untuk sistem file Windows File Server digunakan di kedua subnet pribadi untuk penyimpanan bersama oleh node SQL Server
Secrets Manager untuk menyimpan kredensil dan konfigurasi Active Directory dan SQL Server
Bucket Amazon S3 untuk menyimpan gambar instalasi SQL Server
AWS Managed Microsoft AD untuk otentikasi Windows
AWS KMS untuk membuat kunci enkripsi
Otomatisasi dan skala
Anda dapat mengotomatiskan penerapan arsitektur target dengan menggunakan modul Terraform yang ada di repositori. GitHub terraform.tfvars file untuk menyertakan nilai variabel yang spesifik untuk lingkungan Anda. Bucket Amazon S3, AWS Managed Microsoft AD komponen, kunci AWS KMS enkripsi, dan beberapa rahasia adalah prasyarat untuk penerapan ini dan tidak termasuk dalam kode Terraform.
Alat
Layanan AWS
AWS Directory Service for Microsoft Active Directorymemungkinkan beban kerja dan sumber daya yang sadar direktori Anda AWS untuk menggunakan Microsoft Active Directory di file. AWS Cloud Dalam pola ini, AWS Managed Microsoft AD digunakan untuk otentikasi Windows Server dan SQL Server dan untuk DNS.
Amazon Elastic Compute Cloud (Amazon EC2) menyediakan kapasitas komputasi yang dapat diskalakan di. AWS Cloud Anda dapat meluncurkan server virtual sebanyak yang Anda butuhkan dan dengan cepat meningkatkannya ke atas atau ke bawah. Dalam pola ini, instance cluster failover SQL Server diinstal pada instans Amazon. EC2
EC2 Image Builder membantu Anda mengotomatiskan pembuatan, pengelolaan, dan penyebaran gambar server yang disesuaikan.
Amazon FSx untuk Windows File Server menyediakan penyimpanan bersama yang dikelola sepenuhnya di Windows Server. Dalam pola ini, FSx untuk Windows File Server menyediakan penyimpanan bersama untuk data SQL Server dan file log dan saksi kuorum.
AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
AWS Key Management Service (AWS KMS) membantu Anda membuat dan mengontrol kunci kriptografi untuk membantu melindungi data Anda. Dalam pola ini, ini digunakan untuk mengenkripsi rahasia Secrets Manager, penyimpanan SQL Server pada volume Amazon Elastic Block Store (Amazon EBS), dan FSx sistem file untuk Windows File Server.
AWS Secrets Managermembantu Anda mengganti kredensi hardcode dalam kode Anda, termasuk kata sandi, dengan panggilan API ke Secrets Manager untuk mengambil rahasia secara terprogram. Dalam pola ini, kredensi Active Directory untuk menginstal dan menjalankan SQL Server, kredensi
sapengguna, dan informasi koneksi database disimpan di Secrets Manager.Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data. Pola ini menggunakan bucket Amazon S3 untuk menyimpan image instalasi SQL Server.
Amazon Virtual Private Cloud (Amazon VPC) membantu Anda meluncurkan AWS sumber daya ke jaringan virtual yang telah Anda tentukan. Jaringan virtual ini menyerupai jaringan tradisional yang akan Anda operasikan di pusat data Anda sendiri, dengan manfaat menggunakan infrastruktur yang dapat diskalakan. AWS
Alat lainnya
Microsoft SQL Server FCIs
diinstal di seluruh node cluster Windows Server. Selain itu, mereka dapat diinstal di beberapa subnet. Dalam pola ini, instance SQL Server FCI diinstal di seluruh node WSFC. Terraform
adalah alat infrastruktur sebagai kode (IAc) yang membantu Anda menggunakan kode untuk menyediakan dan mengelola infrastruktur dan sumber daya cloud. Dalam pola ini, Terraform digunakan untuk membuat sumber daya dan mengkonfigurasi instance SQL Server FCI. Windows Server Failover Clustering
menyediakan fitur infrastruktur yang mendukung ketersediaan tinggi aplikasi server yang dihosting seperti SQL Server. Dalam pola ini, node FCI menggunakan fungsionalitas WSFC untuk menyediakan ketersediaan tinggi lokal melalui redundansi di tingkat instans.
Repositori kode
Kode untuk pola ini tersedia di repositori GitHub cluster-amazon-elastic-compute- cloud-amazon-fsx-microsoft -sql-server
README.mdFile yang memberikan gambaran umum tentang solusi dan informasi instalasi dan penggunaan tambahanKumpulan dasar file konfigurasi Terraform dan modul FSx khusus Amazon untuk menyediakan komponen untuk pola ini
Skrip penyiapan instans yang dijalankan sebagai skrip data EC2 pengguna Amazon
File
component.yaml yang dapat digunakan Image Builder untuk membuat AMI kustom
Praktik terbaik
Keamanan dan penambalan
Instalasi dan konfigurasi prasyarat AMI adalah persyaratan minimum untuk menerapkan cluster SQL Server FCI. Perangkat lunak dan konfigurasi tambahan mungkin diperlukan untuk mematuhi standar dan persyaratan keamanan organisasi Anda.
Setelah penerapan, tambal Windows secara berkelanjutan. Baik langsung menambal instance yang sedang berjalan, atau buat AMI baru dengan tambalan Windows terbaru dan ganti instance (satu per satu) menggunakan AMI baru. AWS merilis Windows baru AMIs setiap bulan yang berisi patch sistem operasi terbaru, driver, dan agen peluncuran. Kami menyarankan Anda memeriksa AMI terbaru saat meluncurkan instans baru, atau saat Anda membuat gambar kustom Anda sendiri.
EC2 Instans Amazon dikonfigurasi untuk memungkinkan semua lalu lintas keluar. Ketika diterapkan di lingkungan produksi, aturan keluar dalam kelompok keamanan harus diberlakukan untuk membatasi lalu lintas ini ke tujuan yang diperlukan.
Sistem file FSx untuk Windows File Server dapat secara otomatis merekam log audit untuk berbagi file dan akses file dan folder dan mengirimkannya ke tujuan yang Anda inginkan jika ini adalah persyaratan di lingkungan Anda.
Putar rahasia Secrets Manager secara otomatis secara teratur. Untuk key pair EC2 instans Amazon, pertimbangkan solusi rotasi otomatis seperti yang dijelaskan dalam Cara menggunakan AWS Secrets Manager untuk menyimpan dan memutar pasangan kunci SSH dengan aman
. Untuk kredensi Active Directory dan sarahasia kredensi SQL Server, siapkan rotasi otomatis sesuai dengan kebijakan Anda untuk pengelolaan kata sandi.
Manajemen Direktori Aktif
Sebagai bagian dari cluster FCI, Windows menghasilkan Computer Name Object (CNO) di Active Directory. CNO merespons permintaan DNS dan meneruskan lalu lintas ke node SQL aktif. Kami tidak menyarankan menggunakan DNS yang disediakan Direktori Aktif ini. TTL terlalu tinggi untuk memberikan waktu failover yang wajar dan seringkali membutuhkan waktu lebih dari 5 menit untuk mencerminkan alamat IP utama yang baru. Sebaliknya, untuk instalasi yang sangat tersedia, Network Load Balancer internal dikonfigurasi untuk failover dalam 30 detik.
Administrator domain Active Directory diperlukan untuk membuat cluster. Persyaratan ini karena izin tinggi yang diperlukan untuk membuat objek cluster dan memodifikasi izin di Active Directory. Namun, layanan SQL Server tidak perlu dijalankan sebagai administrator domain. Oleh karena itu, kami menyarankan Anda membuat pengguna Active Directory kedua untuk tujuan ini. Namun, Anda dapat menghilangkan pengguna ini jika layanan akan berjalan sebagai pengguna administrator domain. Dalam hal ini, pengguna administrator domain harus ditambahkan ke grup administrator Direktori Aktif yang dibuat sebagai bagian dari pola ini.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat grup Active Directory. | Di AWS Managed Microsoft AD, buat grup berikut:
Untuk detail selengkapnya, lihat Membuat AWS Managed Microsoft AD grup dalam AWS dokumentasi. | Administrator AD |
Buat pengguna Active Directory. | Di AWS Managed Microsoft AD, buat pengguna berikut
Untuk detail selengkapnya, lihat Membuat AWS Managed Microsoft AD pengguna dalam AWS dokumentasi. | Administrator AD |
Tambahkan kredensil Active Directory ke rahasia. | Gunakan Secrets Manager untuk membuat empat rahasia untuk menyimpan informasi berikut:
Untuk detail selengkapnya, lihat Membuat AWS Secrets Manager rahasia di AWS dokumentasi. | Administrator AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat AMI Windows. | Buat AMI Windows kustom yang mencakup perangkat lunak dan konfigurasi prasyarat. Untuk detail selengkapnya, lihat Informasi Tambahan. | Administrator AWS, AWS DevOps |
Instal Terraform. | Untuk menginstal Terraform, ikuti instruksi di situs web Terraform | AWS DevOps |
Kloning repositori. | Kloning repositori | AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Ubah variabel Terraform. | Perbarui Misalnya, perbarui | AWS DevOps |
Inisialisasi Terraform. | Untuk melihat penerapan yang diusulkan, arahkan ke root repositori. Gunakan antarmuka baris perintah Terraform (CLI) untuk menjalankan dan kemudian menjalankan | AWS DevOps |
Menyebarkan sumber daya. | Untuk menerapkan cluster SQL dan sumber daya terkait, gunakan Terraform CLI untuk menjalankannya. | AWS DevOps, administrator AWS |
Validasi penerapan. | Untuk memvalidasi penerapan, gunakan langkah-langkah berikut:
| DBA, administrator sistem AWS |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Penyediaan Terraform selesai tetapi Windows Failover Cluster Manager tidak menunjukkan cluster telah dibuat atau cluster dalam keadaan tidak dapat dioperasikan. | Seluruh instalasi sumber daya dan konfigurasi cluster dapat memakan waktu 45-60 menit. Setelah Terraform selesai, skrip data pengguna harus berjalan hingga selesai, yang memerlukan beberapa reboot. Untuk memantau kemajuan, Anda dapat menggunakan |
Setelah menyediakan cluster yang berfungsi, menggunakan Terraform untuk menghapus dan membuat ulang cluster tidak berhasil. Terraform selesai, tetapi cluster tidak diatur dengan benar. | Bagian dari proses penyediaan melibatkan mendaftarkan mesin dan objek virtual ke Active Directory dan Active Directory DNS. Ketika nama komputer ada untuk node EC2 cluster Amazon dan node cluster, FCI tidak dapat menginisialisasi dengan benar dan akan gagal penyediaan. Untuk memperbaiki masalah ini, lakukan langkah-langkah berikut:
|
Sumber daya terkait
AWS dokumentasi
Informasi tambahan
Informasi modul Terraform
Modul ini menggunakan campuran konfigurasi AMI dan konfigurasi data pengguna untuk mendapatkan perpaduan yang baik antara waktu penyediaan dan stabilitas. Selama penyediaan, Windows memerlukan beberapa restart dan menunggu. Metode pos pemeriksaan telah diterapkan untuk melindungi terhadap loop tak terbatas selama restart data pengguna persisten. Data pengguna dikonfigurasi agar persisten. Oleh karena itu, skrip konfigurasi data pengguna memiliki, dan harus melanjutkan, untuk dikembangkan menjadi idempoten. Idempotency merampingkan proses pembaruan, memungkinkan instance ditukar selama siklus pembaruan tanpa konfigurasi manual untuk bergabung kembali atau membuat ulang cluster FCI.
String koneksi SQL Server dan pengelompokan failover
Modul akan menerbitkan rahasia yang berisi alamat titik akhir yang harus digunakan dalam string koneksi untuk database ini. Nama rahasia mengikuti format{environment_name}/sqlserver/{cluster_name}/endpoint. Untuk instalasi di mana hanya satu node yang digunakan, Anda dapat mengharapkan ini menjadi alamat IP dari antarmuka SQL Server Amazon EC2 instance. Untuk instalasi ketersediaan tinggi (dua contoh), Anda dapat mengharapkan ini menjadi nama DNS dari Network Load Balancer internal.
Virtual pengelompokan failover IPs tidak didukung dalam modul ini. IP virtual harus tetap berada di subnet yang sama agar dapat berfungsi. Di AWS, satu subnet tidak dapat menjangkau beberapa Availability Zone. Oleh karena itu, penggunaan virtual IPs akan menghilangkan kemampuan modul ini untuk dianggap sangat tersedia.
Setiap EC2 instans Amazon diberikan tiga alamat IP pribadi. USAI mereka sebagai berikut:
IP utama untuk lalu lintas jaringan — IP sumber untuk lalu lintas keluar.
Komunikasi FCI — Digunakan untuk mempertahankan status dan sinkronisasi cluster failover.
SQL Server (port TCP 1433) - Pendengar dan juga mendengarkan lalu lintas detak jantung untuk menentukan instance mana yang utama.
Konfigurasi VPC
Prasyarat mencantumkan set opsi DHCP yang dikonfigurasi untuk menggunakan Active Directory untuk resolusi DNS. Namun, prasyarat ini bukanlah persyaratan yang sulit. Persyaratan yang sulit adalah bahwa EC2 instance harus dapat menyelesaikan nama domain Active Directory Anda. Memenuhi persyaratan ini dapat dicapai dengan cara lain, seperti dengan menggunakan titik Amazon Route 53 Resolver akhir. Untuk informasi selengkapnya, lihat Mengintegrasikan resolusi DNS Layanan Direktori Anda dengan Amazon Route 53 Resolvers
Konfigurasi AMI
AMI yang digunakan dalam pola ini harus berisi perangkat lunak dan konfigurasi prasyarat berikut:
Unduh dan perluas file instalasi SQL Server 2019 ke dalam
C:\SQL_Install_media.Instal fitur Windows berikut:
Install-WindowsFeature Failover-ClusteringInstall-WindowsFeature RSAT-AD-PowerShellInstall-WindowsFeature RSAT-AD-ToolsInstall-WindowsFeature RSAT-Clustering-MgmtInstall-WindowsFeature RSAT-Clustering-PowerShellInstall-WindowsFeature RSAT-Clustering-CmdInterface
Nonaktifkan firewall Windows sebagai berikut:
Get-NetFirewallProfile | Set-NetFirewallProfile -Enabled False
Aktifkan metode otentikasi CredSSP (ganti
<domain>dengan nama domain Windows organisasi Anda) sebagai berikut:Enable-WSManCredSSP -Role "Server" -ForceEnable-WSManCredSSP -Role "Client" -DelegateComputer *.<domain>.com -Force
Mengatur kunci registri berikut:
Izinkan kredensi otentikasi NTLM:
HKLM:\Software\Policies\Microsoft\Windows\CredentialsDelegationNama:
AllowFreshCredentialsWhenNTLMOnlyNilai: 1
Tipe:
REG_DWORD
Izinkan komputer domain lokal menggunakan NTLM dari: PowerShell
Jalan:
HKLM:\Software\Policies\Microsoft\Windows\CredentialsDelegation\AllowFreshCredentialsWhenNTLMOnlyNama:
1Nilai:
wsman/*.<domain>.comTipe:
REG_SZ
Siapkan PowerShell Galeri
sebagai berikut: [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -ForceSet-PSRepository -Name PSGallery -InstallationPolicy Trusted
Instal PowerShell modul Windows berikut
*:Install-Module -Name ComputerManagementDscInstall-Module -Name FailOverClusterDscInstall-Module -Name PSDscResourcesInstall-Module -Name xSmbShareInstall-Module -Name xActiveDirectoryInstall-Module -Name SqlServer
Untuk menggunakan Image Builder untuk membuat AMI, ikuti petunjuk di Membuat pipeline gambar menggunakan wizard EC2 Image Builderconsole dalam dokumentasi Image Builder. Untuk membuat komponen resep dengan prasyarat sebelumnya, gunakan langkah-langkah berikut:
Unduh file component.yaml
dari amifolder repositori. GitHubSalin konten ke komponen Image Builder baru.
Perbarui placeholder berikut dengan informasi Anda:
<domain>— Nama domain Direktori Aktif Anda<bucket_name>— Nama bucket Amazon S3 yang berisi gambar SQL Server