Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Merampingkan penerapan PostgreSQL di Amazon EKS dengan menggunakan PGO
Shalaka Dengale, Amazon Web Services
Ringkasan
Pola ini mengintegrasikan Operator Postgres dari Crunchy Data (PGO) dengan Amazon Elastic Kubernetes Service (Amazon EKS) untuk merampingkan penerapan PostgreSQL di lingkungan cloud-native. PGO menyediakan otomatisasi dan skalabilitas untuk mengelola database PostgreSQL di Kubernetes. Saat Anda menggabungkan PGO dengan Amazon EKS, PGO akan membentuk platform yang kuat untuk menerapkan, mengelola, dan menskalakan database PostgreSQL secara efisien.
Integrasi ini memberikan manfaat utama berikut:
Penyebaran otomatis: Menyederhanakan penyebaran dan manajemen cluster PostgreSQL.
Definisi sumber daya kustom (CRDs): Menggunakan primitif Kubernetes untuk manajemen PostgreSQL.
Ketersediaan tinggi: Mendukung failover otomatis dan replikasi sinkron.
Pencadangan dan pemulihan otomatis: Merampingkan proses pencadangan dan pemulihan.
Penskalaan horisontal: Memungkinkan penskalaan dinamis cluster PostgreSQL.
Peningkatan versi: Memfasilitasi peningkatan bergulir dengan waktu henti minimal.
Keamanan: Menerapkan enkripsi, kontrol akses, dan mekanisme otentikasi.
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS.
AWS Command Line Interface (AWS CLI) versi 2, diinstal dan dikonfigurasi di Linux, macOS, atau Windows.
AWS CLI Config, untuk menghubungkan AWS sumber daya dari baris perintah.
eksctl
, diinstal dan dikonfigurasi di Linux, macOS, atau Windows. kubectl, diinstal dan dikonfigurasi untuk mengakses sumber daya di kluster Amazon EKS Anda. Untuk informasi selengkapnya, lihat Mengatur kubectl dan eksctl di dokumentasi Amazon EKS.Terminal komputer Anda dikonfigurasi untuk mengakses kluster Amazon EKS. Untuk informasi selengkapnya, lihat Mengonfigurasi komputer untuk berkomunikasi dengan klaster Anda di dokumentasi Amazon EKS.
Versi produk
Kubernetes versi 1.21—1.24 atau yang lebih baru (lihat dokumentasi PGO).
PostgreSQL versi 10 atau yang lebih baru. Pola ini menggunakan PostgreSQL versi 16.
Batasan
Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat Layanan AWS berdasarkan Wilayah
. Untuk titik akhir tertentu, lihat halaman titik akhir dan kuota Layanan, dan pilih tautan untuk layanan.
Arsitektur
Tumpukan teknologi target
Amazon EKS
Amazon Virtual Private Cloud (Amazon VPC)
Amazon Elastic Compute Cloud (Amazon EC2)
Arsitektur target

Pola ini membangun arsitektur yang berisi cluster Amazon EKS dengan tiga node. Setiap node berjalan pada satu set EC2 instance di backend. Pengaturan PostgreSQL ini mengikuti arsitektur replika utama, yang sangat efektif untuk kasus penggunaan read-heavy. Arsitektur mencakup komponen-komponen berikut:
Container database primer (pg-primary) menghosting instance PostgreSQL utama di mana semua operasi penulisan diarahkan.
Container replika sekunder (pg-replica) menghosting instance PostgreSQL yang mereplikasi data dari database utama dan menangani operasi baca.
PgBounceradalah pooler koneksi ringan untuk database PostgreSQL yang disertakan dengan PGO. Itu berada di antara klien dan server PostgreSQL, dan bertindak sebagai perantara untuk koneksi database.
PGO mengotomatiskan penerapan dan pengelolaan klaster PostgreSQL di lingkungan Kubernetes ini.
Patroni adalah alat open-source yang mengelola dan mengotomatiskan konfigurasi ketersediaan tinggi untuk PostgreSQL. Ini termasuk dengan PGO. Saat Anda menggunakan Patroni dengan PGO di Kubernetes, Patroni memainkan peran penting dalam memastikan ketahanan dan toleransi kesalahan klaster PostgreSQL. Untuk informasi lebih lanjut, lihat dokumentasi Patroni
.
Alur kerja mencakup langkah-langkah ini:
Menyebarkan operator PGO. Anda menerapkan operator PGO di klaster Kubernetes Anda yang berjalan di Amazon EKS. Ini dapat dilakukan dengan menggunakan manifes Kubernetes atau bagan Helm. Pola ini menggunakan manifes Kubernetes.
Tentukan instance PostgreSQL. Saat operator berjalan, Anda membuat resource kustom (CRs) untuk menentukan status instans PostgreSQL yang diinginkan. Ini termasuk konfigurasi seperti penyimpanan, replikasi, dan pengaturan ketersediaan tinggi.
Manajemen operator. Anda berinteraksi dengan operator melalui objek API Kubernetes seperti CRs membuat, memperbarui, atau menghapus instance PostgreSQL.
Pemantauan dan pemeliharaan. Anda dapat memantau kesehatan dan kinerja instans PostgreSQL yang berjalan di Amazon EKS. Operator sering menyediakan metrik dan pencatatan untuk tujuan pemantauan. Anda dapat melakukan tugas pemeliharaan rutin seperti peningkatan dan penambalan seperlunya. Untuk informasi selengkapnya, lihat Memantau performa klaster Anda dan melihat log di dokumentasi Amazon EKS.
Penskalaan dan pencadangan: Anda dapat menggunakan fitur yang disediakan oleh operator untuk menskalakan instance PostgreSQL dan mengelola cadangan.
Pola ini tidak mencakup operasi pemantauan, pemeliharaan, dan pencadangan.
Otomatisasi dan skala
Anda dapat menggunakan AWS CloudFormation untuk mengotomatiskan pembuatan infrastruktur. Untuk informasi selengkapnya, lihat Membuat resource Amazon EKS dengan AWS CloudFormation dokumentasi Amazon EKS.
Anda dapat menggunakan GitVersion atau Jenkins membangun nomor untuk mengotomatiskan penyebaran instance database.
Alat
Layanan AWS
Amazon Elastic Kubernetes Service (Amazon EKS) membantu Anda menjalankan AWS Kubernetes tanpa perlu menginstal atau memelihara control plane atau node Kubernetes Anda sendiri.
AWS Command Line Interface (AWS CLI) adalah alat sumber terbuka yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda.
Alat-alat lainnya
Praktik terbaik
Ikuti praktik terbaik ini untuk memastikan penerapan yang lancar dan efisien:
Amankan kluster EKS Anda. Terapkan praktik terbaik keamanan untuk kluster EKS Anda, seperti menggunakan peran AWS Identity and Access Management (IAM) untuk akun layanan (IRSA), kebijakan jaringan, dan grup keamanan VPC. Batasi akses ke server API cluster EKS, dan enkripsi komunikasi antara node dan server API dengan menggunakan TLS.
Pastikan kompatibilitas versi antara PGO dan Kubernetes berjalan di Amazon EKS. Beberapa fitur PGO mungkin memerlukan versi Kubernetes tertentu atau memperkenalkan batasan kompatibilitas. Untuk informasi selengkapnya, lihat Komponen dan Kompatibilitas
dalam dokumentasi PGO. Rencanakan alokasi sumber daya untuk penyebaran PGO Anda, termasuk CPU, memori, dan penyimpanan. Pertimbangkan persyaratan sumber daya dari PGO dan instance PostgreSQL yang dikelolanya. Pantau penggunaan sumber daya dan skala sumber daya sesuai kebutuhan.
Desain untuk ketersediaan tinggi. Rancang penerapan PGO Anda untuk ketersediaan tinggi guna meminimalkan waktu henti dan memastikan keandalan. Terapkan beberapa replika PGO di beberapa Availability Zone untuk toleransi kesalahan.
Menerapkan prosedur pencadangan dan pemulihan untuk database PostgreSQL Anda yang dikelola PGO. Gunakan fitur yang disediakan oleh PGO atau solusi cadangan pihak ketiga yang kompatibel dengan Kubernetes dan Amazon EKS.
Siapkan pemantauan dan pencatatan untuk penerapan PGO Anda untuk melacak kinerja, kesehatan, dan peristiwa. Gunakan alat seperti Prometheus untuk memantau metrik dan Grafana untuk visualisasi. Konfigurasikan logging untuk menangkap log PGO untuk pemecahan masalah dan audit.
Konfigurasikan jaringan dengan benar untuk memungkinkan komunikasi antara instans PGO, PostgreSQL, dan layanan lainnya di klaster Kubernetes Anda. Gunakan fitur jaringan VPC Amazon dan plugin jaringan Kubernetes seperti Calico atau Amazon VPC
CNI untuk penegakan kebijakan jaringan dan isolasi lalu lintas. Pilih opsi penyimpanan yang sesuai untuk database PostgreSQL Anda, dengan mempertimbangkan faktor-faktor seperti kinerja, daya tahan, dan skalabilitas. Gunakan volume Amazon Elastic Block Store (Amazon EBS) AWS atau layanan penyimpanan terkelola untuk penyimpanan persisten. Untuk informasi selengkapnya, lihat Menyimpan volume Kubernetes dengan Amazon EBS di dokumentasi Amazon EKS.
Gunakan alat infrastruktur sebagai kode (IAc) seperti AWS CloudFormation untuk mengotomatiskan penerapan dan konfigurasi PGO di Amazon EKS. Tentukan komponen infrastruktur—termasuk kluster EKS, jaringan, dan sumber daya PGO—sebagai kode untuk konsistensi, pengulangan, dan kontrol versi.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat peran IAM. |
| Administrator AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat klaster Amazon EKS. | Jika Anda sudah menerapkan cluster, lewati langkah ini. Jika tidak, terapkan kluster Amazon EKS di saat ini Akun AWS dengan menggunakan catatanPola ini menggunakan Amazon EC2 sebagai grup simpul untuk Amazon EKS. Jika Anda ingin menggunakan AWS Fargate, lihat
| Administrator AWS, administrator Terraform atau eksctl, administrator Kubernetes |
Validasi status cluster. | Jalankan perintah berikut untuk melihat status node saat ini di cluster:
Jika Anda menemukan kesalahan, lihat bagian pemecahan masalah dokumentasi Amazon EKS. | Administrator AWS, administrator Terraform atau eksctl, administrator Kubernetes |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Aktifkan penyedia IAM OIDC. | Sebagai prasyarat untuk driver Amazon EBS Container Storage Interface (CSI), Anda harus memiliki penyedia IAM OpenID Connect (OIDC) yang sudah ada untuk klaster Anda. Aktifkan penyedia IAM OIDC dengan menggunakan perintah berikut:
Untuk informasi selengkapnya tentang langkah ini, lihat dokumentasi Amazon EKS. | Administrator AWS |
Buat peran IAM untuk driver Amazon EBS CSI. | Gunakan
Jika Anda menggunakan drive Amazon EBS terenkripsi, Anda harus mengonfigurasi kebijakan lebih lanjut. Untuk petunjuk, lihat dokumentasi driver Amazon EBS SCI | Administrator AWS |
Tambahkan driver Amazon EBS CSI. | Gunakan
| Administrator AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Kloning repositori PGO. | Kloning GitHub repositori untuk PGO:
| AWS DevOps |
Berikan detail peran untuk pembuatan akun layanan. | Untuk memberikan akses klaster Amazon EKS ke AWS sumber daya yang diperlukan, tentukan Nama Sumber Daya Amazon (ARN) peran OIDC yang Anda buat sebelumnya dalam file.
| Administrator AWS, administrator Kubernetes |
Buat namespace dan prasyarat PGO. |
| Administrator Kunernetes |
Verifikasi pembuatan pod. | Verifikasi bahwa namespace dan konfigurasi default telah dibuat:
| Administrator AWS, administrator Kubernetes |
Verifikasi PVCs. | Gunakan perintah berikut untuk memverifikasi klaim volume persisten (PVCs):
| Administrator AWS, administrator Kubernetes |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat operator. | Merevisi isi file yang terletak di
Pembaruan ini melakukan hal berikut:
| Administrator AWS, DBA, administrator Kubernetes |
Menyebarkan operator. | Menerapkan operator PGO untuk mengaktifkan pengelolaan dan pengoperasian database PostgreSQL yang efisien di lingkungan Kubernetes:
| Administrator AWS, DBA, administrator Kubernetes |
Verifikasi penyebaran. |
Dari output perintah, perhatikan replika utama ( | Administrator AWS, DBA, administrator Kubernetes |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Tulis data ke replika utama. | Gunakan perintah berikut untuk terhubung ke replika utama PostgreSQL dan menulis data ke database:
| Administrator AWS, administrator Kubernetes |
Konfirmasikan bahwa replika baca memiliki data yang sama. | Hubungkan ke replika baca PostgreSQL dan periksa apakah replikasi streaming berfungsi dengan benar:
Replika baca harus memiliki tabel yang Anda buat di replika utama pada langkah sebelumnya. | Administrator AWS, administrator Kubernetes |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Pod tidak dimulai. |
|
Replika secara signifikan berada di belakang database utama. |
|
Anda tidak memiliki visibilitas ke kinerja dan kesehatan cluster PostgreSQL. |
|
Replikasi tidak bekerja. |
|
Sumber daya terkait
Amazon Elastic Kubernetes Service (Ikhtisar Opsi Deployment di whitepaper AWS)
AWS CloudFormation(Ikhtisar Opsi Penerapan di whitepaper AWS)
Memulai Amazon EKS — eksctl (Panduan Pengguna Amazon EKS)
Buat peran untuk federasi OpenID Connect (Panduan Pengguna IAM)
Mengkonfigurasi pengaturan untuk AWS CLI (Panduan AWS CLI Pengguna)
Crunch & Learn: Crunchy Postgres untuk
Kubernetes 5.0 (video)