

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

# Konfigurasikan perutean hanya-baca dalam grup ketersediaan Selalu Aktif di SQL Server di AWS
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws"></a>

*Subhani Shaik, Amazon Web Services*

## Ringkasan
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-summary"></a>

Pola ini mencakup cara menggunakan replika sekunder siaga di SQL Server Always On dengan menurunkan beban kerja read-only dari replika primer ke replika sekunder.

Pencerminan basis data memiliki one-to-one pemetaan. Anda tidak dapat membaca database sekunder secara langsung, jadi Anda harus membuat snapshot. Fitur grup ketersediaan Selalu Aktif diperkenalkan di Microsoft SQL Server 2012. Dalam versi yang lebih baru, fungsionalitas utama telah diperkenalkan, termasuk perutean hanya-baca. Di grup ketersediaan Selalu Aktif, Anda dapat membaca data langsung dari replika sekunder dengan mengubah mode replika menjadi hanya-baca.

Solusi grup ketersediaan Always On mendukung ketersediaan tinggi (HA), pemulihan bencana (DR), dan alternatif untuk pencerminan basis data. Grup ketersediaan Always On bekerja di tingkat database dan memaksimalkan ketersediaan satu set database pengguna.

SQL Server menggunakan mekanisme routing read-only untuk mengarahkan koneksi read-only yang masuk ke replika baca sekunder. Untuk mencapai ini, Anda harus menambahkan parameter dan nilai berikut dalam string koneksi:
+ `ApplicationIntent=ReadOnly`
+ `Initial Catalog=<database name>`

## Prasyarat dan batasan
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-prereqs"></a>

**Prasyarat**
+ Akun AWS aktif dengan virtual private cloud (VPC), dua Availability Zone, subnet pribadi, dan grup keamanan
+ Dua mesin Amazon Elastic Compute Cloud (Amazon EC2) dengan [SQL Server 2019 Enterprise Edition Amazon Machine Image](https://aws.amazon.com/marketplace/pp/prodview-btjcozd246p6w) dengan [Windows Server Failover Clustering (WSFC)](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/ec2-fci.html) yang dikonfigurasi pada tingkat instans dan grup ketersediaan Selalu Aktif yang dikonfigurasi pada tingkat SQL Server antara node primer (`WSFCNODE1`) dan node sekunder (`WSFCNODE2`), yang merupakan bagian dari direktori AWS Directory Service untuk Microsoft Active Directory bernama `tagechtalk.com`
+ Satu atau lebih node dikonfigurasi untuk menerima `read-only` dalam replika sekunder
+ Pendengar yang diberi nama `SQLAG1` untuk grup ketersediaan Selalu Aktif
+ SQL Server Database Engine berjalan dengan akun layanan yang sama pada dua node
+ Studio Manajemen SQL Server (SSMS)
+ Database uji bernama `test`

**Versi Produk**
+ SQL Server 2014 dan yang lebih baru

## Arsitektur
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-architecture"></a>

**Tumpukan teknologi target**
+ Amazon EC2
+ AWS Dikelola Microsoft AD
+ Amazon FSx

**Arsitektur target**

Diagram berikut menunjukkan bagaimana pendengar Always On availability group (AG) mengalihkan kueri yang berisi `ApplicationIntent` parameter dalam koneksi ke node sekunder yang sesuai.

![\[Tiga langkah proses antara dua Availability Zone untuk node 1 WSFC dan node 2 WSFC dengan Amazon EFS.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/19b5937b-da10-4c74-8619-fdcb758f2211/images/f9ba0f89-7dc2-4f4c-8eee-bef56968ad2d.png)


1. Permintaan dikirim ke pendengar grup ketersediaan Selalu Aktif.

1. Jika string koneksi tidak memiliki `ApplicationIntent` parameter, permintaan dikirim ke instance utama.

1. Jika string koneksi berisi`ApplicationIntent=ReadOnly`, permintaan dikirim ke instance sekunder dengan konfigurasi routing read-only, yaitu WSFC dengan grup ketersediaan Selalu Aktif.

## Alat
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-tools"></a>

**Layanan AWS**
+ [AWS Directory Service untuk Microsoft Active Directory memungkinkan beban kerja yang sadar direktori](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) dan sumber daya AWS Anda untuk menggunakan Microsoft Active Directory di AWS Cloud.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/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 FSx](https://docs.aws.amazon.com/fsx/?id=docs_gateway) menyediakan sistem file yang mendukung protokol konektivitas standar industri dan menawarkan ketersediaan dan replikasi tinggi di seluruh Wilayah AWS.

**Layanan lainnya**
+ SQL Server Management Studio (SSMS) adalah alat untuk menghubungkan, mengelola, dan mengelola instance SQL Server.
+ sqlcmd adalah utilitas baris perintah.

## Praktik terbaik
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-best-practices"></a>

Untuk informasi selengkapnya tentang grup ketersediaan Selalu Aktif, lihat [dokumentasi SQL Server](https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/always-on-availability-groups-sql-server?view=sql-server-ver16).

## Epik
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-epics"></a>

### Mengatur perutean hanya-baca
<a name="set-up-read-only-routing"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Perbarui replika menjadi hanya-baca. | *Untuk memperbarui replika primer dan sekunder menjadi hanya-baca, sambungkan ke replika utama dari SSMS, dan jalankan kode *Langkah 1* dari bagian Informasi tambahan.* | DBA | 
| Buat URL perutean. | Untuk membuat URL routing untuk kedua replika, jalankan kode *Langkah 2* dari bagian *Informasi tambahan*. Dalam kode ini, `tagechtalk.com` adalah nama direktori AWS Managed Microsoft AD. | DBA | 
| Buat daftar routing. | Untuk membuat daftar routing untuk kedua replika, jalankan kode Langkah 3 dari bagian *Informasi tambahan*. | DBA | 
| Validasi daftar routing. | Connect ke instance utama dari SQL Server Management Studio, dan jalankan kode *Langkah 4* dari bagian *Informasi tambahan* untuk memvalidasi daftar routing. | DBA | 

### Uji perutean hanya-baca
<a name="test-the-read-only-routing"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Connect dengan menggunakan ApplicationIntent parameter. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws.html) | DBA | 
| Lakukan failover. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws.html) | DBA | 

### Connect dengan menggunakan utilitas baris perintah sqlcmd
<a name="connect-by-using-the-sqlcmd-command-line-utility"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Connect dengan menggunakan sqlcmd. | Untuk terhubung dari sqlcmd, jalankan kode *Langkah 5* dari bagian *Informasi tambahan* di prompt perintah. Setelah Anda terhubung, jalankan perintah berikut untuk menunjukkan nama server yang terhubung.<pre>SELECT SERVERPROPERTY('ComputernamePhysicalNetBios') .</pre>Output akan menampilkan nama replika sekunder saat ini (`WSFCNODE1`). | DBA | 

## Pemecahan masalah
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| Membuat pendengar gagal dengan pesan 'Kluster WSFC tidak dapat membawa sumber daya Nama Jaringan online'. | Untuk selengkapnya, lihat posting blog Microsoft [Buat Pendengar Gagal dengan Pesan 'Kluster WSFC tidak dapat membawa sumber daya Nama Jaringan online'](https://techcommunity.microsoft.com/t5/sql-server-support-blog/create-listener-fails-with-message-the-wsfc-cluster-could-not/ba-p/318235). | 
| Masalah potensial, termasuk masalah pendengar lainnya atau masalah akses jaringan. | Lihat [Memecahkan Masalah Selalu Pada Konfigurasi Grup Ketersediaan (SQL Server) di dokumentasi](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/troubleshoot-always-on-availability-groups-configuration-sql-server?view=sql-server-ver16) Microsoft. | 

## Sumber daya terkait
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-resources"></a>
+ [Konfigurasikan perutean hanya-baca untuk grup ketersediaan Selalu Aktif](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/configure-read-only-routing-for-an-availability-group-sql-server?view=sql-server-ver16)
+ [Memecahkan Masalah Selalu Pada Konfigurasi Grup Ketersediaan (SQL Server)](https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/troubleshoot-always-on-availability-groups-configuration-sql-server?view=sql-server-ver16)

## Informasi tambahan
<a name="configure-read-only-routing-in-an-always-on-availability-group-in-sql-server-on-aws-additional"></a>

**Langkah 1. Perbarui replika menjadi hanya-baca**

```
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY))
GO
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY))
GO
```

**Langkah 2. Buat URL perutean**

```
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://WSFCNode1.tagechtalk.com:1433'))
GO
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://WSFCNode2.tagechtalk.com:1433'))
GO
```

**Langkah 3. Buat daftar perutean**

```
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE1' WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=('WSFCNODE2','WSFCNODE1')));
GO
ALTER AVAILABILITY GROUP [SQLAG1] MODIFY REPLICA ON N'WSFCNODE2' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('WSFCNODE1','WSFCNODE2')));
GO
```

**Langkah 4. Validasi daftar perutean**

```
SELECT AGSrc.replica_server_name AS PrimaryReplica, AGRepl.replica_server_name AS ReadOnlyReplica, AGRepl.read_only_routing_url AS RoutingURL , AGRL.routing_priority AS RoutingPriority FROM sys.availability_read_only_routing_lists AGRL INNER JOIN sys.availability_replicas AGSrc ON AGRL.replica_id = AGSrc.replica_id INNER JOIN sys.availability_replicas AGRepl ON AGRL.read_only_replica_id = AGRepl.replica_id INNER JOIN sys.availability_groups AV ON AV.group_id = AGSrc.group_id ORDER BY PrimaryReplica
```

**Langkah 5. Utilitas Perintah SQL**

```
sqlcmd -S SQLAG1,1433 -E -d test -K ReadOnly
```