Pengujian adalah tugas yang memakan waktu, tetapi itu adalah suatu keharusan sebelum proses peningkatan pada teknologi apa pun. Bergantung pada jenis peningkatan, itu bisa lebih sulit atau lebih mudah, tetapi selalu diperlukan jika Anda ingin memastikan data Anda aman. Ada pendekatan berbeda untuk peningkatan, tergantung pada bisnis dan toleransi waktu henti. Misalnya, prosesnya dapat menguji aplikasi Anda di lingkungan terpisah dengan versi baru, jadi, Anda perlu membuat cluster baru untuk ini. Opsi lainnya adalah mengkloning lingkungan produksi Anda saat ini dan memutakhirkannya, yang dapat berguna karena Anda dapat meniru semua proses pemutakhiran dan menghindari kejutan di masa mendatang.
Dengan melakukan semua proses pengujian ini secara manual, kemungkinan besar terjadi kesalahan manusia dan proses akan lambat yang dapat mempengaruhi Recovery Time Objective (RTO). Di blog ini, kita akan melihat cara mengotomatiskan pengujian untuk memutakhirkan database PostgreSQL Anda menggunakan ClusterControl.
Jenis Peningkatan Basis Data
Ada dua jenis upgrade:Upgrade Kecil dan Upgrade Besar.
Upgrade Kecil
Ini adalah pemutakhiran yang paling umum dan aman, dan dalam banyak kasus, ini dilakukan di tempat. Karena tidak ada yang 100% aman, Anda harus selalu memiliki cadangan dan node siaga, jadi jika terjadi kesalahan dengan peningkatan versi, Anda dapat mempromosikan node siaga di versi sebelumnya, dan sistem Anda tetap dapat bekerja tanpa gangguan.
Anda dapat melakukan upgrade semacam ini menggunakan ClusterControl. Untuk ini, buka ClusterControl -> Pilih Cluster PostgreSQL Anda -> Kelola -> Peningkatan.
Pada setiap node yang dipilih, prosedur peningkatan akan:
-
Stop Node
-
Tingkatkan Node
-
Mulai Node
Node Master di Topologi PostgreSQL tidak akan ditingkatkan versinya. Untuk mengupgrade Master, node lain harus dipromosikan menjadi Master baru terlebih dahulu.
Upgrade Besar
Untuk Peningkatan Besar, tidak disarankan untuk melakukan pemutakhiran di tempat, karena risiko terjadi kesalahan terlalu tinggi untuk lingkungan produksi. Alih-alih ini, ada pendekatan berbeda untuk melakukan peningkatan.
Anda dapat mengkloning cluster database Anda saat ini, memutakhirkannya, dan menguji aplikasi Anda di sana, dan ketika Anda selesai, jika semuanya berjalan dengan baik, Anda dapat membuatnya kembali untuk mengulangi proses untuk membuat peningkatan yang sebenarnya , atau Anda juga dapat membuat cluster baru di versi baru, menguji aplikasi Anda, dan mengalihkan lalu lintas saat sudah siap, dan ada lebih banyak opsi... Penggunaan Load Balancer berguna di sini untuk meningkatkan Ketersediaan Tinggi. Pendekatan terbaik bergantung pada toleransi waktu henti dan Recovery Time Objective (RTO).
Anda tidak dapat melakukan Peningkatan Besar dengan ClusterControl secara langsung, karena, seperti yang kami sebutkan, Anda perlu menguji semuanya terlebih dahulu, untuk memastikan bahwa pemutakhiran aman, tetapi Anda dapat menggunakan fitur ClusterControl yang berbeda untuk membuat tugas ini lebih mudah. Jadi mari kita lihat beberapa fitur ini.
Menerapkan Lingkungan Pengujian
Untuk ini, Anda tidak perlu membuat semuanya dari awal. Alih-alih ini, Anda dapat menggunakan ClusterControl untuk melakukan ini secara manual atau otomatis.
Pulihkan Cadangan di Host Mandiri
Di bagian Cadangan, pilih cadangan dan Anda akan melihat opsi “Pulihkan dan verifikasi pada host mandiri” untuk memulihkan cadangan di node terpisah.
Di sini Anda dapat menentukan apakah Anda ingin ClusterControl menginstal perangkat lunak di versi baru node, dan nonaktifkan firewall atau AppArmor/SELinux (tergantung pada OS). Untuk ini, Anda memerlukan host (atau VM) khusus yang bukan bagian dari cluster.
Anda dapat membuat node tetap aktif dan berjalan, atau ClusterControl dapat mematikan database layanan hingga pekerjaan pemulihan berikutnya. Setelah selesai, Anda akan melihat cadangan yang dipulihkan/diverifikasi dalam daftar cadangan yang ditandai dengan tanda centang.
Jika Anda tidak ingin melakukan tugas ini secara manual, Anda dapat menjadwalkan proses ini menggunakan Fitur Verify Backup, untuk mengulang pekerjaan ini secara berkala di Backup Job. Kita akan melihat bagaimana melakukannya di bagian selanjutnya.
Verifikasi Cadangan ClusterControl Otomatis
Untuk mengotomatiskan tugas ini, buka ClusterControl -> Pilih Cluster PostgreSQL Anda -> Backup -> Create Backup, dan pilih opsi Scheduled Backup. Fitur Verifikasi Cadangan otomatis hanya tersedia untuk pencadangan terjadwal.
Pada langkah kedua, pastikan Anda telah mengaktifkan opsi Verifikasi Cadangan, dan lengkapi informasi yang diperlukan.
Setelah pekerjaan selesai, Anda dapat melihat ikon verifikasi di ClusterControl Bagian backup sama dengan yang akan Anda lakukan dengan melakukan verifikasi secara manual, bedanya Anda tidak perlu khawatir dengan tugas restorasi. ClusterControl akan memulihkan cadangan setiap saat secara otomatis, dan Anda dapat menguji aplikasi Anda dengan data terbaru.
Buat Cluster dari Cadangan
Cara lain untuk membuat lingkungan pengujian adalah dengan membuat kluster baru dari cadangan Kluster Utama Anda. Untuk ini, buka ClusterControl -> Pilih cluster PostgreSQL Anda -> Backup. Di sana, pilih cadangan yang akan dipulihkan dari daftar, dan pilih Pulihkan -> Buat Cluster Dari Cadangan.
Opsi ini akan membuat Cluster PostgreSQL baru dari cadangan yang dipilih.
Anda perlu menambahkan kredensial OS dan database serta informasi untuk menyebarkan klaster baru. Saat tugas ini selesai, Anda akan melihat cluster baru di UI ClusterControl.
Replikasi Cluster-to-Cluster
Sejak ClusterControl 1.7.4 ada fitur yang disebut Replikasi Cluster-to-Cluster. Ini memungkinkan Anda menjalankan replikasi di antara dua kluster otonom.
Membuat Replikasi Cluster-to-Cluster
Buka ClusterControl -> Pilih Cluster PostgreSQL Anda -> Tindakan Cluster -> Buat Cluster Budak.
Kluster Budak akan dibuat dengan mengalirkan data dari Kluster Utama saat ini.
Anda harus menentukan kredensial dan port SSH, nama untuk Slave Cluster Anda, dan jika Anda ingin ClusterControl menginstal perangkat lunak dan konfigurasi yang sesuai untuk Anda.
Setelah menyiapkan informasi akses SSH, Anda harus menentukan versi database, datadir, port, dan kredensial admin. Karena akan menggunakan replikasi streaming, pastikan Anda menggunakan versi database yang sama, dan kredensial harus sama dengan yang digunakan oleh Klaster Utama.
Pada langkah ini, Anda perlu menambahkan server ke Slave Cluster baru . Untuk tugas ini, Anda dapat memasukkan Alamat IP atau Nama Host dari node database.
Anda dapat memantau status pekerjaan di monitor aktivitas ClusterControl. Setelah tugas selesai, Anda dapat melihat cluster di layar utama ClusterControl.
Pemulihan Otomatis dan Failover
Dengan mengaktifkan fitur Autorecovery, jika terjadi kegagalan, ClusterControl akan mempromosikan node siaga paling canggih ke node utama serta memberi tahu Anda tentang masalahnya. Itu juga gagal pada node siaga lainnya untuk mereplikasi dari server utama yang baru.
Jika ada Load Balancer di topologi, ClusterControl akan mengkonfigurasi ulang untuk menerapkan perubahan topologi.
Anda juga dapat menjalankan Failover secara manual jika diperlukan. Buka ClusterControl -> Pilih Cluster PostgreSQL Anda -> Node -> Pilih Node yang akan dipromosikan -> Node Actions -> Promote Slave.
Dengan cara ini, jika terjadi kesalahan selama peningkatan, Anda dapat menggunakan ClusterControl untuk memperbaikinya secepatnya.
Mengotomatiskan Hal-hal dengan ClusterControl CLI
ClusterControl CLI, juga dikenal sebagai s9s, adalah alat baris perintah yang diperkenalkan di ClusterControl versi 1.4.1 untuk berinteraksi, mengontrol, dan mengelola cluster database menggunakan sistem ClusterControl. ClusterControl CLI membuka pintu untuk otomatisasi cluster di mana Anda dapat dengan mudah mengintegrasikannya dengan alat otomatisasi penerapan yang ada seperti Ansible, Puppet, Chef, dll. Sekarang mari kita lihat beberapa contoh alat ini.
Tingkatkan
$ s9s cluster --cluster-id=9 \
--check-pkg-upgrades \
--log
$ s9s cluster --cluster-id=9 \
--available-upgrades \
--nodes=10.10.10.122 \
--log \
--print-json
$ s9s cluster --cluster-id=9 \
--upgrade-cluster \
--nodes=10.10.10.122 \
--log
Verifikasi Cadangan
$ s9s backup --verify \
--backup-id=2 \
--test-server=10.10.10.124 \
--cluster-id=9 \
--log
Replikasi Cluster-to-Cluster
$ s9s cluster --create \
--cluster-name=PostgreSQL-c2c \
--cluster-type=postgresql \
--provider-version=13 \
--nodes=10.10.10.125 \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--db-admin=admin \
--db-admin-passwd=********* \
--vendor=postgres \
--remote-cluster-id=9 \
--log
Promosikan Node Budak
$ s9s cluster --promote-slave \
--cluster-id=9 \
--nodes='10.10.10.122' \
--log
Kesimpulan
Upgrade diperlukan, tetapi tugas memakan waktu karena Anda perlu menguji aplikasi untuk menghindari masalah selama proses. Menerapkan lingkungan pengujian setiap kali Anda perlu memutakhirkan dan mempertahankan ini tanpa alat otomatisasi apa pun bisa jadi sulit.
ClusterControl memungkinkan Anda untuk melakukan upgrade kecil dari ClusterControl UI atau CLI, atau bahkan menerapkan lingkungan pengujian untuk membuat tugas upgrade lebih mudah dan lebih aman. Anda juga dapat mengintegrasikannya dengan berbagai alat otomatisasi seperti Ansible, Puppet, dan lainnya.