Penyeimbang beban basis data, atau proxy terbalik basis data, mendistribusikan beban kerja basis data yang masuk ke beberapa server basis data yang berjalan di belakangnya. Tujuan memiliki penyeimbang beban basis data adalah untuk menyediakan titik akhir basis data tunggal ke aplikasi untuk terhubung, meningkatkan throughput kueri, meminimalkan latensi, dan memaksimalkan pemanfaatan sumber daya dari server basis data.
Ada dua cara topologi penyeimbang beban basis data:
- Topologi terpusat
- Topologi terdistribusi
Dalam posting blog ini, kita akan membahas kedua topologi dan memahami beberapa pro dan kontra dari setiap pengaturan. Juga, apakah mungkin untuk menggabungkan kedua topologi?
Topologi Terpusat
Dalam pengaturan terpusat, proxy terbalik terletak di antara data dan tingkat presentasi, seperti yang ditunjukkan oleh diagram berikut:
Untuk menghilangkan satu titik kegagalan, kita harus mengatur up dua atau lebih node load balancer untuk tujuan redundansi. Jika aplikasi Anda dapat menangani beberapa titik akhir basis data, misalnya, aplikasi atau driver basis data mampu melakukan pemeriksaan kesehatan jika penyeimbang beban sehat untuk pemrosesan kueri, Anda mungkin dapat melewati bagian alamat IP virtual. Jika tidak, kedua node penyeimbang beban harus diikat bersama dengan nama host umum atau alamat IP virtual, untuk memberikan transparansi kepada klien basis data di mana ia hanya perlu menggunakan satu titik akhir basis data untuk mengakses tingkat data. Menggunakan DNS atau pemetaan host juga dimungkinkan jika Anda ingin melewati alamat IP virtual.
Pendekatan berbasis tier ini jauh lebih sederhana untuk dikelola karena penempatan host statis independennya. Tingkat penyeimbang beban sangat kecil kemungkinannya untuk diskalakan (menambahkan lebih banyak node) karena fondasinya yang kokoh dalam ketahanan, redundansi, dan transparansi pada tingkat aplikasi. Anda mungkin perlu meningkatkan skala host (menambahkan lebih banyak sumber daya ke host), yang biasanya akan terjadi lama di masa mendatang, setelah beban kerja penyeimbang beban menjadi lebih menuntut seiring pertumbuhan bisnis Anda.
Topologi ini memerlukan tier dan host tambahan, yang mungkin mahal dalam infrastruktur bare-metal dengan server fisik. Penyiapan ini lebih mudah dikelola di lingkungan cloud atau virtual, di mana Anda memiliki fleksibilitas untuk menambahkan tingkat tambahan antara tingkat aplikasi dan database, tanpa membebani Anda terlalu banyak pada biaya infrastruktur fisik seperti listrik, ruang rak, dan biaya jaringan.
Topologi Terdistribusi
Dalam pengaturan topologi terdistribusi, penyeimbang beban ditempatkan bersama dalam tingkat presentasi (aplikasi atau server web), seperti yang disederhanakan oleh diagram berikut:
Aplikasi memperlakukan penyeimbang beban basis data mirip dengan server basis data lokal, di mana load balancer menjadi representasi database jarak jauh dari perspektif aplikasi. Biasanya, penyeimbang beban akan mendengarkan antarmuka jaringan lokal seperti 127.0.0.1 atau "localhost" yang akan menyederhanakan host basis data titik akhir basis data untuk aplikasi.
Salah satu keuntungan menjalankan topologi ini adalah Anda tidak memerlukan host tambahan untuk keperluan load balancing. Dengan menggabungkan tingkat penyeimbang beban dalam tingkat presentasi, kami dapat menghemat setidaknya dua host. Dalam lingkungan bare-metal, topologi ini berpotensi menghemat banyak uang selama bertahun-tahun. Secara umum, beban kerja penyeimbang beban jauh lebih ringan jika dibandingkan dengan beban kerja database atau aplikasi, sehingga memungkinkan untuk berbagi sumber daya perangkat keras yang sama dengan aplikasi.
Saat ditempatkan bersama dengan server aplikasi, Anda mendekatkan proxy terbalik ke aplikasi dan menghilangkan titik kegagalan tunggal. Ini dapat meningkatkan kinerja aplikasi secara signifikan ketika Anda memiliki pemisahan geografis antara aplikasi dan tingkat data, terutama untuk penyeimbang beban basis data yang mendukung caching hasil seperti ProxySQL dan MaxScale. Di sisi lain, jumlah penyeimbang beban basis data umumnya sama dengan jumlah node aplikasi, yang berarti jika tingkat aplikasi ditingkatkan, jumlah penyeimbang beban basis data akan meningkat yang berpotensi menurunkan kinerja kesehatan basis data. layanan cek. Perhatikan bahwa pemeriksaan kesehatan penyeimbang beban sedikit lebih rumit karena tanggung jawabnya untuk mengikuti status node basis data yang benar.
Dengan bantuan alat otomatisasi infrastruktur TI seperti Chef, Puppet, dan Ansible bersama dengan alat orkestrasi container, bukan lagi tugas yang mustahil untuk mengotomatiskan penerapan dan pengelolaan beberapa instance load balancer untuk topologi ini. Namun, akan ada kurva pembelajaran lain bagi tim operasi untuk menghasilkan kebijakan manajemen dan penerapan tingkat produksi yang teruji pertempuran untuk mengurangi pekerjaan yang berlebihan saat menangani banyak node penyeimbang beban. Jangan lewatkan semua aspek manajemen penting untuk penyeimbang beban basis data seperti pencadangan/pemulihan, peningkatan/penurunan versi, manajemen konfigurasi, kontrol layanan, manajemen kesalahan, dan sebagainya.
Topologi terdistribusi dapat digabungkan dengan topologi terpusat untuk beberapa penyeimbang beban database yang didukung seperti ProxySQL, seperti yang diilustrasikan dalam diagram berikut:
"Server" backend dari instance ProxySQL dapat berupa kumpulan ProxySQL lainnya node sebagai gantinya. Dengan konfigurasi ini, alamat IP virtual tidak diperlukan untuk akses titik akhir tunggal ke node database, karena instans ProxySQL lokal yang dihosting secara lokal di server aplikasi akan menjadi akses titik akhir tunggal dari sudut pandang aplikasi.
Namun, ini memerlukan dua versi konfigurasi penyeimbang beban - satu yang berada di tingkat aplikasi, dan yang lainnya berada di tingkat penyeimbang beban. Ini juga membutuhkan lebih banyak host, tidak termasuk kebutuhan untuk belajar tentang teknologi alamat IP virtual, failover IP dan sebagainya. Keuntungan dan kerugian dari setup terdistribusi dan terpusat adalah fusi bersama dalam topologi ini.
Kesimpulan
Setiap topologi memiliki kelebihan dan kekurangannya masing-masing dan harus direncanakan dengan baik sejak awal. Keputusan awal ini sangat penting dan dapat sangat memengaruhi kinerja, skalabilitas, keandalan, dan ketersediaan aplikasi Anda dalam jangka panjang.