Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
RDSKonsep dan terminologi proxy
Anda dapat menyederhanakan manajemen koneksi untuk Aurora DB Anda dengan menggunakan Proxy. RDS
RDSProxy menangani lalu lintas jaringan antara aplikasi klien dan database. Tindakan ini dilakukan secara aktif terlebih dahulu dengan memahami protokol basis data. Kemudian menyesuaikan perilakunya berdasarkan SQL operasi dari aplikasi Anda dan set hasil dari database.
RDSProxy mengurangi memori dan CPU overhead untuk manajemen koneksi pada database Anda. Basis data membutuhkan lebih sedikit memori dan CPU sumber daya ketika aplikasi membuka banyak koneksi simultan. Logika juga tidak dibutuhkan dalam aplikasi Anda untuk menutup dan membuka kembali koneksi yang idle dalam waktu yang lama. Demikian pula, logika aplikasi yang dibutuhkan untuk membangun kembali koneksi juga lebih sedikit jika terjadi masalah pada basis data.
Infrastruktur untuk RDS Proxy sangat tersedia dan digunakan di beberapa Availability Zones (AZs). Perhitungan, memori, dan penyimpanan untuk RDS Proxy tidak tergantung pada cluster Anda. Independensi ini membantu menurunkan overhead pada server basis data Anda, sehingga dapat mencurahkan sumber dayanya untuk melayani beban kerja basis data. Sumber daya komputasi RDS Proxy tanpa server, secara otomatis menskalakan berdasarkan beban kerja database Anda.
Ikhtisar konsep RDS Proxy
RDSProxy menangani infrastruktur untuk melakukan penyatuan koneksi dan fitur lain yang dijelaskan di bagian berikutnya. Anda melihat proxy yang diwakili di RDS konsol di halaman Proxy.
Setiap proxy menangani koneksi ke cluster Aurora DB tunggal. Proxy secara otomatis menentukan instance penulis saat ini untuk instans Aurora yang disediakan cluster.
Koneksi yang dibiarkan terbuka dan disediakan oleh proksi untuk digunakan oleh aplikasi basis data Anda akan membentuk kumpulan koneksi.
Secara default, RDS Proxy dapat menggunakan kembali koneksi setelah setiap transaksi dalam sesi Anda. Penggunaan kembali tingkat transaksi ini disebut multiplexing. Ketika RDS Proxy sementara menghapus koneksi dari kumpulan koneksi untuk menggunakannya kembali, operasi itu disebut meminjam koneksi. Ketika aman untuk melakukannya, RDS Proxy mengembalikan koneksi itu ke kumpulan koneksi.
Dalam beberapa kasus, RDS Proxy tidak dapat memastikan bahwa aman untuk menggunakan kembali koneksi database di luar sesi saat ini. Untuk kasus seperti ini, Proksi RDS akan tetap mempertahankan sesi pada koneksi yang sama hingga sesi berakhir. Perilaku fallback ini disebut pinning.
Proksi memiliki titik akhir default. Anda terhubung ke titik akhir ini saat bekerja dengan cluster Aurora DB. Anda melakukannya alih-alih terhubung ke titik akhir baca/tulis yang terhubung langsung ke klaster. Titik akhir tujuan khusus untuk klaster Aurora tetap tersedia untuk Anda gunakan. Untuk cluster DB Aurora , Anda juga dapat membuat endpoint baca/tulis dan read-only tambahan. Untuk informasi selengkapnya, lihat Ikhtisar titik akhir proksi.
Misalnya, Anda masih dapat terhubung ke titik akhir klaster untuk koneksi baca/tulis tanpa pengumpulan koneksi. Anda masih dapat terhubung ke titik akhir pembaca untuk koneksi keseimbangan beban hanya-baca. Anda masih dapat terhubung ke titik akhir instans untuk melakukan diagnosis dan memecahkan masalah instans DB tertentu dengan klaster. Jika Anda menggunakan AWS layanan lain seperti AWS Lambda untuk terhubung ke RDS database, ubah pengaturan koneksi mereka untuk menggunakan titik akhir proxy. Misalnya, Anda menentukan titik akhir proxy untuk memungkinkan fungsi Lambda mengakses database Anda sambil memanfaatkan fungsionalitas ProxyRDS.
Setiap proksi berisi sebuah grup target. Grup target ini mewujudkan cluster Aurora DB yang dapat dihubungkan oleh proxy. Untuk klaster Aurora, grup target dikaitkan secara default dengan semua instans DB dalam klaster tersebut. Dengan demikian, proksi dapat terhubung ke instans DB Aurora mana pun yang dipromosikan menjadi instans penulis dalam klaster. Aurora DB cluster yang terkait dengan proxy disebut target proxy itu. Untuk kenyamanan, saat Anda membuat proxy melalui konsol, RDS Proxy juga membuat grup target yang sesuai dan mendaftarkan target terkait secara otomatis.
Keluarga mesin adalah serangkaian mesin basis data terkait yang menggunakan protokol DB yang sama. Anda dapat memilih keluarga mesin untuk setiap proksi yang Anda buat.
Pengumpulan koneksi
Setiap proxy melakukan penyatuan koneksi untuk instance penulis dari database terkait DB. Pengumpulan koneksi adalah pengoptimalan yang menurunkan overhead yang terkait dengan pembukaan dan penutupan koneksi dan dengan menjaga banyak koneksi terbuka secara bersamaan. Overhead ini mencakup memori yang diperlukan untuk menangani setiap koneksi baru. Ini juga melibatkan CPU overhead untuk menutup setiap koneksi dan membuka yang baru. Contohnya termasuk Transport Layer Security/Secure Sockets Layer (TLS/SSL) handshaking, otentikasi, kemampuan negosiasi, dan sebagainya. Pengumpulan koneksi menyederhanakan logika aplikasi Anda. Anda tidak perlu menulis kode aplikasi untuk meminimalkan jumlah koneksi terbuka secara bersamaan.
Setiap proksi juga melakukan multipleks koneksi, yang juga dikenal sebagai penggunaan ulang koneksi. Dengan multiplexing, RDS Proxy melakukan semua operasi untuk transaksi menggunakan satu koneksi database yang mendasarinya. RDSkemudian dapat menggunakan koneksi yang berbeda untuk transaksi berikutnya. Anda dapat membuka banyak koneksi ke proksi secara bersamaan, dan proksi akan mempertahankan koneksi terbuka dalam jumlah yang lebih kecil ke instans atau klaster DB. Tindakan ini akan lebih meminimalkan overhead memori untuk koneksi di server basis data. Teknik ini juga mengurangi kemungkinan kesalahan "terlalu banyak koneksi".
RDSKeamanan proxy
RDSProxy menggunakan mekanisme RDS keamanan yang ada sepertiTLS/SSLdan AWS Identity and Access Management (IAM). Untuk informasi umum tentang fitur keamanan tersebut, lihat Keamanan dalam Amazon Aurora. Juga, pastikan untuk membiasakan diri dengan cara kerja Aurora dengan otentikasi, otorisasi, dan bidang keamanan lainnya.
RDSProxy dapat bertindak sebagai lapisan keamanan tambahan antara aplikasi klien dan database yang mendasarinya. Misalnya, Anda dapat terhubung ke proxy menggunakan TLS 1.3, meskipun instans DB yang mendasarinya mendukung versi yang lebih lamaTLS. Anda dapat terhubung ke proxy menggunakan IAM peran. Hal ini terjadi bahkan jika proksi terhubung ke basis data menggunakan pengguna native dan metode autentikasi kata sandi. Dengan menggunakan teknik ini, Anda dapat menerapkan persyaratan autentikasi yang kuat untuk aplikasi basis data tanpa sebuah upaya migrasi yang mahal untuk instans DB itu sendiri.
Anda menyimpan kredensi database yang digunakan oleh RDS Proxy di. AWS Secrets Manager Setiap pengguna database untuk cluster Aurora DB yang diakses oleh proxy harus memiliki rahasia yang sesuai di Secrets Manager. Anda juga dapat mengatur IAM otentikasi untuk pengguna RDS Proxy. Dengan demikian, Anda dapat menerapkan IAM otentikasi untuk akses database bahkan jika database menggunakan otentikasi kata sandi asli. Sebaiknya gunakan fitur keamanan ini, alih-alih menyematkan kredensial basis data dalam kode aplikasi Anda.
MenggunakanTLS/SSLdengan RDS Proxy
Anda dapat terhubung ke RDS Proxy menggunakan SSL protokolTLS/.
catatan
RDSProxy menggunakan sertifikat dari AWS Certificate Manager (ACM). Jika Anda menggunakan RDS Proxy, Anda tidak perlu mengunduh RDS sertifikat Amazon atau memperbarui aplikasi yang menggunakan koneksi RDS Proxy.
TLSUntuk menerapkan semua koneksi antara proxy dan database Anda, Anda dapat menentukan pengaturan Memerlukan Transport Layer Security ketika Anda membuat atau memodifikasi proxy di AWS Management Console.
RDSProxy juga dapat memastikan bahwa sesi Anda menggunakanTLS/SSLantara klien Anda dan titik akhir RDS Proxy. Untuk meminta RDS Proxy melakukannya, tentukan persyaratan di sisi klien. SSLvariabel sesi tidak diatur untuk SSL koneksi ke database menggunakan RDS Proxy.
-
Untuk Aurora My SQL, tentukan persyaratan di sisi klien dengan
--ssl-mode
parameter saat Anda menjalankan perintah.mysql
-
Untuk dan SQL Aurora Postgre SQL, tentukan
sslmode=require
sebagai bagian dariconninfo
string saat Anda menjalankan perintah.psql
RDSProxy mendukung TLS protokol versi 1.0, 1.1, 1.2, dan 1.3. Anda dapat terhubung ke proxy menggunakan versi yang lebih tinggi TLS dari yang Anda gunakan dalam database yang mendasarinya.
Secara default, program klien membuat koneksi terenkripsi dengan RDS Proxy, dengan kontrol lebih lanjut tersedia melalui opsi. --ssl-mode
Dari sisi klien, RDS Proxy mendukung semua SSL mode.
Untuk klien, SSL modenya adalah sebagai berikut:
- PREFERRED
-
SSLIni adalah pilihan pertama, tetapi tidak diperlukan.
- DISABLED
-
Tidak SSL diperbolehkan.
- REQUIRED
-
MenegakkanSSL.
- VERIFY_CA
-
Menegakkan SSL dan memverifikasi otoritas sertifikat (CA).
- VERIFY_IDENTITY
-
Menegakkan SSL dan memverifikasi nama host CA dan CA.
Saat menggunakan sebuah klien dengan --ssl-mode
VERIFY_CA
atau VERIFY_IDENTITY
, tentukan opsi --ssl-ca
yang menunjuk ke CA dalam format .pem
. Untuk .pem
file yang akan digunakan, unduh semua root CA PEMs dari Amazon Trust Services.pem
file.
RDSProxy menggunakan sertifikat wildcard, yang berlaku untuk domain dan subdomainnya. Jika Anda menggunakan mysql
klien untuk terhubung dengan SSL modeVERIFY_IDENTITY
, saat ini Anda harus menggunakan perintah My SQL 8.0-compatiblemysql
.
Failover
Failover adalah fitur ketersediaan tinggi yang menggantikan instans basis data dengan yang lain saat instans asli tidak tersedia. Failover dapat terjadi karena sebuah masalah pada instans basis data. Bisa juga bagian dari prosedur pemeliharaan normal, seperti saat peningkatan basis data. Failover berlaku untuk cluster Aurora DB dengan satu atau lebih instance pembaca selain instance penulis.
Terhubung melalui proksi membuat aplikasi Anda lebih tangguh menghadapi failover basis data. Ketika instans DB asli menjadi tidak tersedia, RDS Proxy terhubung ke database siaga tanpa menjatuhkan koneksi aplikasi idle. Hal ini dapat membantu mempercepat dan menyederhanakan proses failover. Dampaknya terhadap aplikasi juga lebih kecil dibandingkan masalah boot ulang atau basis data pada umumnya.
Tanpa RDS Proxy, failover melibatkan pemadaman singkat. Selama pemadaman, Anda tidak dapat melakukan operasi tulis pada basis data dengan failover. Koneksi semua basis data yang ada akan terganggu, dan aplikasi Anda harus membuka ulang koneksi tersebut. Basis data akan tersedia untuk koneksi dan operasi tulis baru saat instans DB hanya-baca dipromosikan menggantikan yang tidak tersedia.
Selama kegagalan DB, RDS Proxy terus menerima koneksi pada alamat IP yang sama dan secara otomatis mengarahkan koneksi ke instans DB primer yang baru. Klien yang terhubung melalui RDS Proxy tidak rentan terhadap hal-hal berikut:
-
Domain Name System (DNS) penundaan propagasi pada failover.
-
DNSCaching lokal.
-
Waktu koneksi habis.
-
Ketidakpastian tentang instans DB mana yang merupakan instans penulis saat ini.
-
Menunggu respons kueri dari penulis sebelumnya yang menjadi tidak tersedia tanpa menutup koneksi.
Untuk aplikasi yang memelihara kumpulan koneksinya sendiri, melalui RDS Proxy berarti sebagian besar koneksi tetap hidup selama kegagalan atau gangguan lainnya. Hanya koneksi yang berada di tengah transaksi atau SQL pernyataan yang dibatalkan. RDSProxy segera menerima koneksi baru. Ketika penulis database tidak tersedia, RDS Proxy mengantri permintaan masuk.
Untuk aplikasi yang tidak memelihara kumpulan koneksi mereka sendiri, RDS Proxy menawarkan tingkat koneksi yang lebih cepat dan koneksi yang lebih terbuka. Hal ini menyebabkan overhead yang mahal dikarenakan seringnya koneksi ulang dari basis data. Ia melakukannya dengan menggunakan kembali koneksi database yang dikelola di kumpulan koneksi RDS Proxy. Pendekatan ini sangat penting untuk TLS koneksi, di mana biaya penyiapan signifikan.
Transaksi
Semua pernyataan dalam satu transaksi selalu menggunakan koneksi basis data acuan yang sama. Koneksi akan dapat digunakan oleh sesi yang berbeda saat transaksi berakhir. Penggunaan transaksi sebagai unit granularitas memiliki konsekuensi sebagai berikut:
-
Penggunaan kembali koneksi dapat terjadi setelah setiap pernyataan individu ketika pengaturan Saya diaktifkan.
-
Sebaliknya, jika pengaturan
autocommit
dinonaktifkan, pernyataan pertama yang Anda terbitkan dalam sesi akan memulai transaksi baru. Misalnya, Anda memasukkan urutanSELECT
,,INSERT
UPDATE
, dan pernyataan bahasa manipulasi data lainnya (DML). Dalam hal ini, penggunaan kembali koneksi tidak terjadi hingga Anda mengeluarkanCOMMIT
,ROLLBACK
, atau mengakhiri transaksi. -
Memasukkan pernyataan bahasa definisi data (DDL) menyebabkan transaksi berakhir setelah pernyataan itu selesai.
RDSProxy mendeteksi ketika transaksi berakhir melalui protokol jaringan yang digunakan oleh aplikasi klien database. Deteksi transaksi tidak bergantung pada kata kunci seperti COMMIT
atau ROLLBACK
muncul dalam teks SQL pernyataan.
Dalam beberapa kasus, RDS Proxy mungkin mendeteksi permintaan database yang membuatnya tidak praktis untuk memindahkan sesi Anda ke koneksi yang berbeda. Dalam kasus ini, multiplexing dinonaktifkan untuk koneksi tersebut hingga sesi Anda berakhir. Aturan yang sama berlaku jika RDS Proxy tidak dapat memastikan bahwa multiplexing praktis untuk sesi tersebut. Operasi ini disebut pinning. Untuk mendeteksi dan meminimalkan pinning, lihat Menghindari menyematkan Proxy RDS.