Menyiapkan infrastruktur Multi-AZ untuk SQL Server Always On FCI dengan menggunakan Amazon FSx - AWS Prescriptive Guidance

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menyiapkan infrastruktur Multi-AZ untuk SQL Server Always On FCI dengan menggunakan Amazon FSx

Manish Garg, T.V.R.L.Phani Kumar Dadi, Nishad Mankar, dan RAJNEESH TYAGI, Amazon Web Services

Ringkasan

Jika Anda perlu memigrasi sejumlah besar Microsoft SQL Server Always On Failover Cluster Instances (FCIs) dengan cepat, pola ini dapat membantu Anda meminimalkan waktu penyediaan. Dengan menggunakan otomatisasi dan Amazon FSx untuk Windows File Server, ini mengurangi upaya manual, kesalahan buatan manusia, dan waktu yang diperlukan untuk menyebarkan sejumlah besar cluster.

Pola ini mengatur infrastruktur untuk SQL Server FCIs dalam penerapan Multi-Availability Zone (Multi-AZ) di Amazon Web Services (AWS). Penyediaan layanan AWS yang diperlukan untuk infrastruktur ini diotomatiskan dengan menggunakan templat CloudFormationAWS. Instalasi SQL Server dan pembuatan node cluster pada instans Amazon Elastic Compute Cloud EC2 (Amazon) dilakukan dengan menggunakan PowerShell perintah.

Solusi ini menggunakan sistem file Amazon Multi-AZ FSx untuk Windows yang sangat tersedia sebagai saksi bersama untuk menyimpan file database SQL Server. Sistem FSx file Amazon dan instance EC2 Windows yang menghosting SQL Server digabungkan ke domain AWS Directory Service untuk Microsoft Active Directory (AWS Managed Microsoft AD) yang sama.

Prasyarat dan batasan

Prasyarat

  • Akun AWS yang aktif

  • Pengguna AWS dengan izin yang memadai untuk menyediakan sumber daya menggunakan templat AWS CloudFormation

  • AWS Directory Service untuk Microsoft Active Directory

  • Kredensil di AWS Secrets Manager untuk mengautentikasi ke AWS Managed Microsoft AD dalam pasangan nilai kunci:

    • ADDomainName: <Domain Name>

    • ADDomainJoinUserName: <Domain Username>

    • ADDomainJoinPassword: <Domain User Password>

    • TargetOU: <Target OU Value>

    catatan

    Anda akan menggunakan nama kunci yang sama dalam otomatisasi AWS Systems Manager untuk aktivitas gabungan AWS Managed Microsoft AD.

  • File media SQL Server untuk instalasi SQL Server dan layanan Windows atau akun domain dibuat, yang akan digunakan selama pembuatan cluster

  • Virtual Private Cloud (VPC), dengan dua subnet publik di Availability Zones terpisah, dua subnet pribadi di Availability Zones, gateway internet, gateway NAT, asosiasi tabel rute, dan server lompat

Versi produk

  • Windows Server 2012 R2 dan Microsoft SQL Server 2016

Arsitektur

Tumpukan teknologi sumber

  • SQL Server lokal dengan FCIs menggunakan drive bersama

Tumpukan teknologi target

  • EC2 Instans AWS

  • Amazon FSx untuk Server File Windows

  • Runbook AWS Systems Manager Automation

  • Konfigurasi jaringan (VPC, subnet, gateway internet, gateway NAT, server lompat, grup keamanan)

  • AWS Secrets Manager

  • AWS Dikelola Microsoft AD

  • Amazon EventBridge

  • AWS Identity and Access Management (IAM)

Arsitektur target

Diagram berikut menunjukkan akun AWS dalam satu Wilayah AWS, dengan VPC yang mencakup dua Availability Zone, dua subnet publik dengan gateway NAT, server lompat di subnet publik pertama, dua subnet pribadi, masing-masing dengan EC2 instance untuk node SQL Server dalam grup keamanan node, dan sistem FSx file Amazon yang terhubung ke masing-masing node SQL Server. AWS Directory Service, Amazon EventBridge, AWS Secrets Manager, dan AWS Systems Manager juga disertakan.

Arsitektur multi-AZ dengan sumber daya di subnet publik dan pribadi, dengan grup keamanan node.

Otomatisasi dan skala

  • Anda dapat menggunakan AWS Systems Manager untuk bergabung dengan AWS Managed Microsoft AD dan melakukan penginstalan SQL Server.

Alat

Layanan AWS

  • AWS CloudFormation membantu Anda menyiapkan sumber daya AWS, menyediakannya dengan cepat dan konsisten, serta mengelolanya sepanjang siklus hidupnya di seluruh akun dan Wilayah AWS.

  • AWS Directory Service menyediakan beberapa cara untuk menggunakan Microsoft Active Directory (AD) dengan layanan AWS lainnya seperti Amazon Elastic Compute Cloud (Amazon EC2), Amazon Relational Database Service (Amazon RDS) untuk SQL Server, dan FSx Amazon untuk Windows File Server.

  • 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.

  • Amazon EventBridge adalah layanan bus acara tanpa server yang membantu Anda menghubungkan aplikasi Anda dengan data waktu nyata dari berbagai sumber. Misalnya, fungsi AWS Lambda, titik akhir pemanggilan HTTP menggunakan tujuan API, atau bus acara di akun AWS lainnya.

  • AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.

  • AWS Secrets Manager membantu Anda mengganti kredensi hardcode dalam kode Anda, termasuk kata sandi, dengan panggilan API ke Secrets Manager untuk mengambil rahasia secara terprogram.

  • AWS Systems Manager membantu Anda mengelola aplikasi dan infrastruktur yang berjalan di AWS Cloud. Ini menyederhanakan manajemen aplikasi dan sumber daya, mempersingkat waktu untuk mendeteksi dan menyelesaikan masalah operasional, dan membantu Anda mengelola sumber daya AWS Anda dengan aman dalam skala besar.

Alat lainnya

  • PowerShelladalah program manajemen otomatisasi dan konfigurasi Microsoft yang berjalan di Windows, Linux, dan macOS. Pola ini menggunakan PowerShell skrip.

Repositori kode

Kode untuk pola ini tersedia di repositori GitHub aws-windows-failover-cluster-automation.

Praktik terbaik

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Menyebarkan CloudFormation tumpukan Systems Manager.

  1. Masuk ke akun AWS Anda, dan buka AWS Management Console.

  2. Arahkan ke CloudFormation konsol, dan buat CloudFormation tumpukan Systems Manager dengan mengunggah ssm.yaml template. Berikan nilai untuk parameter berikut:

    • StateUnJoinAssociationLoggingBucketName— Berikan nama untuk bucket S3 yang akan dibuat template untuk tujuan logging.

    • SSMAssociationADUnjoinNama — Berikan nama untuk AWS::SSM::Association sumber daya.

    • SSMAutomationDocumentName— Berikan nama untuk runbook Systems Manager Automation.

    • EventBridgeName— Berikan nama untuk bus EventBridge acara.

  3. Menyebarkan CloudFormation tumpukan Systems Manager dengan meluncurkan ssm.yaml CloudFormation template. Template akan membuat runboook Systems Manager Atomation yang dimulai saat EC2 instance baru dengan tag diluncurkan. ADJoined: FSXADD Runbook Otomasi akan menambahkan instance ke direktori AWS Managed Microsoft AD.

AWS DevOps, DevOps insinyur

Menyebarkan tumpukan infrastruktur.

Setelah berhasil menyebarkan tumpukan Systems Manager, buat infra tumpukan, yang mencakup node EC2 instance, grup keamanan, sistem file Amazon FSx untuk Windows File Server, dan peran IAM.

  1. Arahkan ke CloudFormation konsol dan luncurkan infra-cf.yaml template. Untuk menerapkan tumpukan ini, parameter berikut diperlukan:

    • ActiveDirectoryId— ID untuk AWS Managed Microsoft AD

    • ADDnsIpAddresses1— Alamat IP DNS utama AWS Managed Microsoft AD

    • ADDnsIpAddresses2— Alamat IP DNS sekunder AWS Managed Microsoft AD

    • FSxSecurityGroupName— Nama grup FSx keamanan Amazon

    • FSxWindowsFileSystemName— Nama FSx drive Amazon

    • ImageID— ID gambar dasar Windows 2012 R2 atau Amazon Machine Image (AMI) yang digunakan untuk membuat node instance SQL Server

    • KeyPairName— Pasangan kunci-nilai untuk dilampirkan ke node EC2 instance untuk akses

    • Node1SecurityGroupName— Nama grup keamanan node pertama

    • Node2SecurityGroupName— Nama grup keamanan simpul kedua

    • OUSecretName— Nama rahasia yang berisi informasi AWS Managed Microsoft AD

    • PrivateSubnet1— ID subnet pribadi pertama

    • PrivateSubnet2— ID subnet pribadi kedua

    • SqlFSxFCIName— Nama tag yang diterapkan ke node primer dan sekunder dan ke Amazon FSx.

    • SqlFSxServerNetBIOSName1— Nama node EC2 instance utama (maksimal 15 karakter)

    • SqlFSxServerNetBIOSName2— Nama node EC2 instance sekunder (maksimal 15 karakter)

    • VPC— ID VPC

    • WorkloadInstanceType— Jenis EC2 contoh

    Menyebarkan infra tumpukan. Stack akan membuat semua komponen infrastruktur yang diperlukan untuk mengatur Windows SQL Server FCI.

  2. Setelah node EC2 instance diluncurkan, dokumen Systems Manager Automation akan dipanggil untuk menggabungkan instans ini ke AWS Managed Microsoft AD. Anda dapat melacak progres di halaman Otomasi konsol Systems Manager.

AWS DevOps, DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Instal alat Windows.

  1. Masuk ke EC2 instance utama, yaitu node 1. Untuk menginstal fitur Windows (Active Directory dan FCI Tools), jalankan PowerShell skrip berikut.

    Install-WindowsFeature -Name RSAT-AD-Powershell,Failover-Clustering -IncludeManagementTools Install-WindowsFeature -Name RSAT-Clustering,RSAT-ADDS-Tools,RSAT-AD-Powershell,RSAT-DHCP,RSAT-DNS-Server
  2. Masuk ke EC2 instance sekunder, yaitu node 2, dan jalankan skrip yang sama untuk mengaktifkan fitur pada node 2.

AWS DevOps, DevOps insinyur, DBA

Prestage objek komputer cluster di Active Directory Domain Services.

Untuk melakukan prestage objek nama cluster (CNO) di Active Directory Domain Services (AD DS) dan prestage objek komputer virtual (VCO) untuk peran berkerumun, ikuti instruksi dalam dokumentasi Windows Server.

AWS DevOps, DBA, DevOps insinyur

Buat WSFC.

Untuk membuat cluster Windows Server Failover Clustering (WSFC), lakukan hal berikut:

  1. Masuk ke EC2 instance utama, yaitu node 1. Untuk membuat berbagi FSx file Amazon dan memberikan akses penuh ke akun layanan AD yang terdaftar, jalankan kode berikut.

    Invoke-Command -ComputerName "<FSx Windows Remote PowerShell Endpoint>" -ConfigurationName FSxRemoteAdmin -scriptblock { New-FSxSmbShare -Name "SQLDB" -Path "D:\share" -Description "SQL Databases Share" -ContinuouslyAvailable $true -FolderEnumerationMode AccessBased -EncryptData $true grant-fsxsmbshareaccess -name SQLDB -AccountName "<domain\user>" -accessRight Full }

    Perintah ini juga akan membuat file share terus tersedia (CA), yang dioptimalkan untuk digunakan oleh Microsoft SQL Server.

  2. Untuk membuat cluster failover pada instance utama (node 1), jalankan perintah berikut.

    New-Cluster -Name <CNO Name> -Node  <Node1 Name>, <Node2 Name> -StaticAddress <Node1 Secondary Private IP>, <Node2 Secondary Private IP>

    Perintah ini membutuhkan parameter berikut:

    • Name— Nama cluster (CNO)

    • Node— Nama-nama node primer dan sekunder, masing-masing

    • StaticAddress— Alamat IP sekunder dari node primer dan sekunder, masing-masing

    penting

    Administrator domain atau pengguna biasa harus memiliki izin administrator pada kedua node untuk membuat cluster Windows Server Failover Clustering (WSFC). Jika tidak, perintah sebelumnya akan gagal dan mengembalikan pesan,You do not have administrator privilege on servers.

  3. Setelah cluster dibuat, jalankan perintah berikut untuk melampirkan saksi berbagi file.

    Set-ClusterQuorum -FileShareWitness \\<FSx Windows Remote PowerShell Endpoint>\share\witness
AWS DevOps, DBA, DevOps insinyur

Instal cluster failover SQL Server.

Setelah cluster WSFC diatur, instal cluster SQL Server pada instance utama (node1).

  1. Di drive T pada kedua node, buat tempdb dan log folder. Folder digunakan dalam PowerShell perintah.

  2. Setelah Anda menyalin file media SQL Server untuk instalasi SQL Server pada kedua node, jalankan PowerShell perintah berikut pada node 1 untuk menginstal SQL Server pada node 1.

D:\setup.exe /Q ` /ACTION=InstallFailoverCluster ` /IACCEPTSQLSERVERLICENSETERMS ` /FEATURES="SQL,IS,BC,Conn" ` /INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server" ` /INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server" ` /RSINSTALLMODE="FilesOnlyMode" ` /INSTANCEID="MSSQLSERVER" ` /INSTANCENAME="MSSQLSERVER" ` /FAILOVERCLUSTERGROUP="SQL Server (MSSQLSERVER)" ` /FAILOVERCLUSTERIPADDRESSES="IPv4;<2nd Sec Private Ip node1>;Cluster Network 1;<subnet mask>" ` /FAILOVERCLUSTERNETWORKNAME="<Fail over cluster Network Name>" ` /INSTANCEDIR="C:\Program Files\Microsoft SQL Server" ` /ENU="True" ` /ERRORREPORTING=0 ` /SQMREPORTING=0 ` /SAPWD="<Domain User password>" ` /SQLCOLLATION="SQL_Latin1_General_CP1_CI_AS" ` /SQLSYSADMINACCOUNTS="<domain\username>" ` /SQLSVCACCOUNT="<domain\username>" /SQLSVCPASSWORD="<Domain User password>" ` /AGTSVCACCOUNT="<domain\username>" /AGTSVCPASSWORD="<Domain User password>" ` /ISSVCACCOUNT="<domain\username>" /ISSVCPASSWORD="<Domain User password>" ` /FTSVCACCOUNT="NT Service\MSSQLFDLauncher" ` /INSTALLSQLDATADIR="\\<FSX DNS name>\share\Program Files\Microsoft SQL Server" ` /SQLUSERDBDIR="\\<FSX DNS name>\share\data" ` /SQLUSERDBLOGDIR="\\<FSX DNS name>\share\log" ` /SQLTEMPDBDIR="T:\tempdb" ` /SQLTEMPDBLOGDIR="T:\log" ` /SQLBACKUPDIR="\\<FSX DNS name>\share\SQLBackup" ` /SkipRules=Cluster_VerifyForErrors ` /INDICATEPROGRESS
AWS DevOps, DBA, DevOps insinyur

Tambahkan simpul sekunder ke cluster.

Untuk menambahkan SQL Server ke node sekunder (node 2), jalankan PowerShell perintah berikut.

D:\setup.exe /Q ` /ACTION=AddNode ` /IACCEPTSQLSERVERLICENSETERMS ` /INSTANCENAME="MSSQLSERVER" ` /FAILOVERCLUSTERGROUP="SQL Server (MSSQLSERVER)" ` /FAILOVERCLUSTERIPADDRESSES="IPv4;<2nd Sec Private Ip node2>;Cluster Network 2;<subnet mask>" ` /FAILOVERCLUSTERNETWORKNAME="<Fail over cluster Network Name>" ` /CONFIRMIPDEPENDENCYCHANGE=1 ` /SQLSVCACCOUNT="<domain\username>" /SQLSVCPASSWORD="<Domain User password>" ` /AGTSVCACCOUNT="domain\username>" /AGTSVCPASSWORD="<Domain User password>" ` /FTSVCACCOUNT="NT Service\MSSQLFDLauncher" ` /SkipRules=Cluster_VerifyForErrors ` /INDICATEPROGRESS
AWS DevOps, DBA, DevOps insinyur

Uji SQL Server FCI.

  1. Pada instance Windows untuk salah satu node, di Administrative Tools, luncurkan Failover Cluster Manager.

  2. Arahkan ke Node, dan konfirmasikan bahwa status node adalah Status Running.

  3. Pilih Peran, buka menu konteks (klik kanan) untuk SQL Server (MSSQLSERVER), dan pilih Pindahkan dan Pilih Node.

  4. Setelah pemilihan node, SQL Server harus berjalan pada node lain.

DBA, DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Pembersihan sumber daya

Untuk membersihkan sumber daya, gunakan proses penghapusan CloudFormation tumpukan AWS:

  1. Buka CloudFormation konsol AWS.

  2. Pada halaman Stacks, pilih infra tumpukan. Tumpukan pasti sedang berjalan.

  3. Di panel detail tumpukan, pilih Hapus.

  4. Pilih Hapus tumpukan saat diminta.

  5. Ulangi langkah 2-4 untuk ssm tumpukan.

Setelah penghapusan tumpukan selesai, tumpukan akan berada dalam status. DELETE_COMPLETE Tumpukan dalam DELETE_COMPLETE status tidak ditampilkan di CloudFormation konsol secara default. Untuk menampilkan tumpukan yang dihapus, Anda harus mengubah filter tampilan tumpukan seperti yang dijelaskan dalam Melihat tumpukan yang dihapus di konsol CloudFormation AWS.

Jika penghapusan gagal, tumpukan akan berada dalam status. DELETE_FAILED Untuk solusi, lihat Menghapus tumpukan gagal dalam CloudFormation dokumentasi.

AWS DevOps, DBA, DevOps insinyur

Pemecahan Masalah

IsuSolusi

Kegagalan CloudFormation template AWS

Jika CloudFormation template gagal selama penerapan, lakukan hal berikut:

  1. Buka CloudFormation konsol AWS.

  2. Pada halaman Stacks di CloudFormation konsol, pilih tumpukan.

  3. Pilih Acara, dan periksa status tumpukan.

Kegagalan bergabung dengan Microsoft AD yang Dikelola AWS

Untuk memecahkan masalah bergabung, ikuti langkah-langkah berikut:

  1. Buka konsol System Manager.

  2. Pilih Wilayah penyebaran.

  3. Di panel kiri, pilih Otomasi, dan temukan runbook Otomasi yang gagal.

  4. Buka runbook Otomasi, dan periksa status Eksekusi dan langkah-langkah Eksekusi.

  5. Selidiki detail langkah yang gagal untuk melihat kesalahan atau kegagalan yang tepat.

Sumber daya terkait