MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Panduan untuk Mengonfigurasi Load Balancer di Cluster Sharded MongoDB

Untuk basis data apa pun, penyeimbangan beban semua permintaan yang datang dari klien merupakan mekanisme penting dan mendasar untuk memastikan skalabilitas. Solusi penyeimbangan beban yang tepat menyebarkan semua permintaan klien secara merata di semua sumber daya database. Jika kluster database tidak dijaga dengan solusi penyeimbangan beban yang tepat, database Anda tidak akan mampu menangani peningkatan beban lalu lintas di dalamnya.

Untungnya, MongoDB menyediakan dukungan bawaan untuk penyeimbangan beban lalu lintas tinggi dengan mendukung penskalaan horizontal melalui sharding. Anda dapat mendistribusikan data koleksi Anda di beberapa server menggunakan sharding. Anda juga dapat menambahkan server/mesin baru ke cluster Anda untuk menangani peningkatan lalu lintas di database. Anda dapat mengikuti panduan ini untuk mengonversi kluster replika MongoDB Anda menjadi kluster sharding.

Dalam artikel ini, kita akan mempelajari tentang perilaku proses penyeimbang yang berjalan di kluster sharded MongoDB dan cara mengubah perilakunya. Proses penyeimbang MongoDB menangani pendistribusian koleksi Anda secara merata di seluruh pecahan. Misalnya, jika satu pecahan kluster Anda berisi terlalu banyak potongan koleksi pecahan Anda, pecahan tersebut dapat menerima lebih banyak lalu lintas dibandingkan dengan pecahan lainnya. Oleh karena itu, proses penyeimbang menyeimbangkan potongan koleksi dengan benar di seluruh pecahan. Di sebagian besar penerapan MongoDB, konfigurasi default dari proses penyeimbang sudah cukup untuk operasi normal. Namun, dalam beberapa situasi, administrator database mungkin ingin mengubah perilaku default dari proses ini. Jika Anda ingin mengubah perilaku default proses penyeimbang untuk kebutuhan tingkat aplikasi atau persyaratan operasional apa pun, Anda dapat mengikuti panduan ini.

Mari kita mulai dengan beberapa perintah dasar untuk mendapatkan beberapa informasi tentang status dan status proses penyeimbang.

Status Status Penyeimbang

Perintah ini memeriksa apakah penyeimbang diaktifkan atau diizinkan untuk dijalankan atau tidak. Jika proses balancer tidak berjalan maka perintah ini akan mengembalikan false. Ini tidak akan memeriksa apakah proses penyeimbang berjalan atau tidak.

sh.getBalancerState()

Aktifkan Proses Penyeimbang

Jika penyeimbang tidak diaktifkan secara default, Anda dapat mengaktifkannya dengan menjalankan perintah berikut. Perintah ini tidak akan memulai proses penyeimbang tetapi akan mengaktifkan proses dan memastikan bahwa penyeimbangan potongan tidak akan diblokir saat proses penyeimbang berjalan di waktu berikutnya.

sh.enableBalancing(<collection_name/namespace>)

Nonaktifkan Proses Penyeimbang

Proses penyeimbang berjalan setiap saat secara default. Oleh karena itu, jika Anda ingin menonaktifkan proses penyeimbang untuk beberapa periode waktu tertentu, Anda dapat menggunakan perintah berikut. Salah satu skenario ideal untuk menggunakan perintah ini adalah ketika Anda mengambil cadangan database Anda.

sh.stopBalancer()

Pastikan bahwa proses penyeimbang dihentikan sebelum mengambil cadangan. Jika proses diaktifkan saat mengambil cadangan database, Anda mungkin akan mendapatkan replika database yang tidak konsisten. Hal ini dapat terjadi saat proses penyeimbang memindahkan beberapa potongan melintasi pecahan untuk penyeimbangan beban selama proses pencadangan.

Anda juga dapat menonaktifkan penyeimbangan pada beberapa koleksi tertentu dengan menyediakan namespace lengkap koleksi sebagai parameter menggunakan perintah berikut.

sh.disableBalancing("<db_name>.<collection_name>")

Status Lari Penyeimbang

Perintah ini memeriksa apakah proses balancer berjalan atau tidak. Itu juga memeriksa apakah itu secara aktif mengelola potongan sharding atau tidak. Mengembalikan nilai true jika proses sedang berjalan jika tidak mengembalikan false.

sh.isBalancerRunning()

Konfigurasi Ukuran Potongan Default

Secara default, ukuran chunk di setiap sharded cluster MongoDB adalah 64MB. Untuk sebagian besar skenario, ini cukup baik untuk memigrasi atau membelah potongan yang dipecah. Namun, terkadang proses migrasi normal tidak melibatkan lebih banyak operasi I/O daripada yang dapat diproses oleh perangkat keras Anda. Dalam situasi seperti ini, Anda mungkin ingin mengurangi ukuran potongan. Anda dapat melakukannya dengan menjalankan serangkaian perintah berikut.

use config

db.settings.save( { _id:"chunksize", value: <sizeInMB> } )

Jika Anda mengubah default ukuran chunk di sharded cluster, perhatikan hal-hal berikut

  • Anda dapat menentukan ukuran potongan hanya antara 1 hingga 1024 MB
  • Pemisahan otomatis hanya akan terjadi saat penyisipan atau pembaruan
  • Ukuran potongan yang lebih rendah akan menyebabkan lebih banyak waktu selama proses pemisahan.

Jadwalkan Penyeimbangan untuk Waktu Tertentu

Bila ukuran database Anda besar, proses penyeimbangan atau migrasi dapat memengaruhi kinerja database Anda secara keseluruhan. Oleh karena itu, adalah bijaksana untuk menjadwalkan proses penyeimbangan selama jendela waktu tertentu ketika beban pada database sangat sedikit. Anda dapat menggunakan perintah berikut untuk mengatur jendela waktu agar proses penyeimbang berjalan.

use config

db.settings.update({ _id : "balancer" }, { $set : { activeWindow : { start : "<start-time>", stop : "<stop-time>" } } }, true )

Contoh

Perintah berikut akan mengatur jendela waktu dari 1:00 hingga 5:00 untuk menjalankan proses penyeimbangan.

db.settings.update({ _id : "balancer" }, { $set : { activeWindow : { start : "01:00", stop : "05:00" } } }, true )

Pastikan jangka waktu yang diberikan cukup untuk proses penyeimbangan yang lengkap.

Anda juga dapat menghapus jendela waktu proses penyeimbangan yang ada dengan menjalankan perintah berikut.

db.settings.update({ _id : "balancer" }, { $unset : { activeWindow : true } })

Selain perintah di atas, Anda juga dapat mengubah perilaku replikasi saat melakukan proses migrasi chunk dengan menggunakan parameter _secondaryThrottle. Selain itu, Anda dapat menggunakan properti _waitForDelete dengan perintah moveChunk untuk memberi tahu proses penyeimbangan agar menunggu fase penghapusan migrasi saat ini sebelum memulai dengan fase migrasi potongan baru.

Kesimpulan

Mudah-mudahan, hanya ini yang Anda butuhkan saat mengubah perilaku default dari proses penyeimbang MongoDB. Menyeimbangkan adalah aspek yang sangat penting dari setiap sharded cluster MongoDB. Jadi, jika Anda mengetahui tentang proses penyeimbangan secara detail, menjadi sangat mudah untuk mengubah perilaku default proses penyeimbang sesuai dengan kebutuhan dan kasus penggunaan Anda.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Agregat Moongoose $match tidak cocok dengan id

  2. Indeks MongoDB pada tipe yang berbeda

  3. Bagaimana Anda bisa menghapus semua dokumen dari koleksi dengan Mongoose?

  4. Bisakah JSON $dates yang ketat digunakan dalam kueri MongoDB?

  5. Urutan bidang MongoDB dan posisi dokumen berubah setelah pembaruan