Sementara MongoDB telah menghabiskan hampir satu dekade untuk mencapai kedewasaan (rilis awal Februari 2009), teknologi ini sedikit menjadi misteri bagi mereka yang berpengalaman dalam lingkungan database relasional (RDBMS) konvensional. Mengintegrasikan NoSQL ke dalam lingkungan yang ada tanpa pengetahuan yang mendalam dapat menjadi tantangan. Tidak jarang kita melihat MongoDB berjalan bersama MySQL atau database RDBMS lainnya.
Pengalaman RDBMS dapat membantu untuk memahami beberapa proses, tetapi Anda perlu tahu bagaimana menerjemahkan keahlian Anda ke dunia NoSQL. Mengelola lingkungan produksi melibatkan langkah-langkah seperti penerapan, memantau waktu kerja dan kinerja, menjaga keamanan sistem, mengelola HA, pencadangan, dan sebagainya. Baik RDBMS dan NoSQL adalah opsi yang layak, tetapi ada perbedaan kritis khusus antara keduanya yang harus diingat pengguna saat menerapkan atau mengelola MongoDB. Teknologi berubah dengan cepat dan kita perlu beradaptasi dengan cepat.
Ketika MongoDB tiba-tiba menjadi tanggung jawab Anda, alat manajemen menjamin bahwa database MongoDB yang Anda kelola stabil dan aman. Menggunakan proses dan otomatisasi yang telah ditentukan sebelumnya tidak hanya dapat menghemat waktu Anda tetapi juga melindungi dari kesalahan umum. Sebuah platform manajemen yang secara sistematis menangani semua aspek yang berbeda dari siklus hidup database akan lebih kuat daripada menggabungkan sejumlah solusi titik.
Inti dari ClusterControl adalah fungsionalitas otomatisasinya yang memungkinkan Anda mengotomatiskan tugas database yang harus Anda lakukan secara teratur, seperti menerapkan database baru, menambahkan dan menskalakan node baru, mengelola cadangan, ketersediaan tinggi dan failover, perubahan topologi, peningkatan, dan banyak lagi. ClusterControl menyediakan keamanan terprogram, menjaga integritas infrastruktur database Anda. Selain itu, dengan ClusterControl, pengguna MongoDB tidak lagi tunduk pada penguncian vendor; sesuatu yang dipertanyakan oleh banyak orang baru-baru ini. Anda dapat menerapkan dan mengimpor berbagai versi dan vendor MongoDB dari satu konsol secara gratis. Pengguna MongoDB sering kali harus menggunakan campuran alat dan skrip buatan sendiri untuk mencapai persyaratan mereka, dan ada baiknya mengetahui bahwa Anda dapat menemukannya digabungkan dalam satu produk.
Pada artikel ini, kami akan menunjukkan kepada Anda cara menerapkan dan mengelola MongoDB 4.0 secara otomatis. Anda akan menemukan di sini cara melakukannya:
- Penginstalan ClusterControl
- Proses penerapan MongoDB
- Menerapkan cluster baru
- Impor cluster yang ada
- Menskalakan MongoDB
- Baca penskalaan (replicaSet)
- Tulis penskalaan (sharding)
- Mengamankan MongoDB
- Pemantauan dan Tren
- Pencadangan dan Pemulihan
Instalasi ClusterControl
Untuk memulai dengan ClusterControl, Anda memerlukan mesin virtual atau host khusus. VM dan persyaratan sistem yang didukung dijelaskan di sini. VM dasar dapat dimulai dari 2 GB, 2 inti, dan ruang Disk 20 GB ruang penyimpanan, baik di tempat maupun di awan.
Instalasi dijelaskan dengan baik dalam dokumentasi tetapi pada dasarnya, itu datang untuk mengunduh skrip instalasi yang akan memandu Anda melalui wizard. Skrip wizard mengatur database internal, menginstal paket yang diperlukan, repositori, dan melakukan tweak lain yang diperlukan. Untuk lingkungan kunci internet, Anda dapat menggunakan proses instalasi offline.
ClusterControl memerlukan akses SSH ke host database, dan pemantauan dapat berbasis agen atau tanpa agen. Manajemen tidak memiliki agen.
Siapkan SSH tanpa kata sandi ke semua node target (ClusterControl dan semua host database) dengan menjalankan perintah berikut di server ClusterControl:
$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes
Penyebaran dan Penskalaan MongoDB
Menerapkan Cluster MongoDB 4.0 Baru
Setelah kita memasuki antarmuka ClusterControl, hal pertama yang harus dilakukan adalah menyebarkan cluster baru atau mengimpor yang sudah ada. Versi baru 1.7.1 memperkenalkan dukungan untuk versi 4.0. Anda sekarang dapat menerapkan/mengimpor dan mengelola MongoDB v4.0 dengan dukungan untuk koneksi SSL.
Pilih opsi “Deploy Database Cluster” dan ikuti petunjuk yang muncul.
ClusterControl Menyebarkan Database ClusterSaat memilih MongoDB, kita harus menentukan User, Key atau Password dan port untuk terhubung dengan SSH ke server kita. Kami juga memerlukan nama untuk cluster baru kami dan jika kami ingin ClusterControl menginstal perangkat lunak dan konfigurasi yang sesuai untuk kami.
Setelah mengatur informasi akses SSH, kita harus memasukkan data untuk mengakses database kita. Kami juga dapat menentukan repositori mana yang akan digunakan. Konfigurasi repositori merupakan aspek penting untuk server database dan cluster. Anda dapat memiliki tiga jenis repositori saat menerapkan server/cluster database menggunakan ClusterControl:
- Gunakan Vendor Repository
Penyediaan perangkat lunak dengan menyiapkan dan menggunakan repositori perangkat lunak pilihan vendor database. ClusterControl akan menginstal versi terbaru dari apa yang disediakan oleh repositori vendor database. - Jangan Atur Repositori Vendor
Sediakan perangkat lunak dengan menggunakan repositori perangkat lunak yang sudah ada yang sudah disiapkan di node. Pengguna harus mengatur repositori perangkat lunak secara manual pada setiap node database dan ClusterControl akan menggunakan repositori ini untuk penyebaran. Ini bagus jika node database berjalan tanpa koneksi internet. - Gunakan Mirrored Repositories (Buat repositori baru)
Buat dan mirror repositori vendor database saat ini, lalu terapkan menggunakan repositori mirrored lokal. Ini memungkinkan Anda untuk "membekukan" versi paket perangkat lunak saat ini.
Pada langkah selanjutnya, kita perlu menambahkan server kita ke cluster yang akan kita buat. Saat menambahkan server kami, kami dapat memasukkan IP atau nama host. Untuk yang terakhir, kita harus memiliki server DNS atau telah menambahkan server MongoDB kita ke file resolusi lokal (/etc/hosts) dari ClusterControl kita, sehingga dapat menyelesaikan nama yang sesuai yang ingin Anda tambahkan. Untuk contoh kami, kami akan menggunakan ReplicaSet dengan tiga server, satu primer dan dua sekunder. Dimungkinkan untuk menyebarkan hanya 2 node MongoDB (tanpa arbiter). Peringatan dari pendekatan ini bukanlah failover otomatis, karena pengaturan 2-node rentan terhadap split brain. Jika node utama mati maka diperlukan failover manual untuk menjadikan server lain sebagai yang utama. Kegagalan otomatis berfungsi dengan baik dengan 3 node dan lebih banyak lagi. Direkomendasikan bahwa set replika memiliki jumlah anggota voting ganjil. Toleransi kesalahan untuk set replika adalah jumlah anggota yang bisa menjadi tidak tersedia dan masih menyisakan cukup banyak anggota di set untuk memilih primer. Toleransi kesalahan untuk tiga anggota adalah satu, untuk lima adalah dua dst.
Pada halaman yang sama Anda dapat memilih dari versi MongoDB yang berbeda:
ClusteControl Menyebarkan MongoDB versi 4.0Ketika semua sudah diatur tekan tombol menyebarkan. Anda dapat memantau status pembuatan cluster baru kami dari monitor aktivitas ClusterControl. Setelah tugas selesai, kita dapat melihat cluster kita di layar ClusterControl utama dan pada tampilan topologi.
Tampilan Topologi Kontrol ClusterSeperti yang dapat kita lihat pada gambar, setelah cluster kita dibuat, kita dapat melakukan beberapa tugas di dalamnya, seperti mengonversi kumpulan replika menjadi shard atau menambahkan node ke cluster.
Penskalaan Kontrol ClusterImpor Cluster Baru
Kami juga memiliki opsi untuk mengelola cluster yang ada dengan mengimpornya ke ClusterControl. Lingkungan tersebut dapat dibuat oleh ClusterControl atau metode lain seperti instalasi buruh pelabuhan.
ClusterControl mengimpor MongoDBPertama, kita harus memasukkan kredensial akses SSH ke server kita. Kemudian kami memasukkan kredensial akses ke database kami, direktori data server, dan versinya. Kami menambahkan node dengan IP atau nama host, dengan cara yang sama seperti saat kami menerapkan, dan tekan Impor. Setelah tugas selesai, kami siap untuk mengelola cluster kami dari ClusterControl.
Menskalakan MongoDB
Salah satu landasan MongoDB adalah ia dibangun dengan mempertimbangkan ketersediaan dan penskalaan tinggi. Penskalaan dapat dilakukan secara vertikal dengan menambahkan lebih banyak sumber daya ke server atau secara horizontal dengan lebih banyak node. Penskalaan horizontal adalah keahlian MongoDB, dan tidak lebih dari menyebarkan beban kerja ke beberapa mesin. Akibatnya, kami menggunakan beberapa kotak perangkat keras komoditas berbiaya rendah, daripada meningkatkan ke server berkinerja tinggi yang lebih mahal. MongoDB menawarkan penskalaan baca dan tulis, dan kami akan mengungkap perbedaan antara kedua strategi ini untuk Anda. Apakah memilih penskalaan baca atau tulis semua bergantung pada beban kerja aplikasi Anda:jika aplikasi Anda cenderung membaca lebih sering daripada menulis data, Anda mungkin ingin memanfaatkan kemampuan penskalaan baca MongoDB.
Dengan ClusterControl menambahkan lebih banyak server ke cluster adalah langkah mudah. Anda dapat melakukannya dari GUI atau CLI. Untuk pengguna yang lebih mahir, Anda dapat menggunakan ClusterControl Developer Studio dan menulis kondisi basis sumber daya untuk memperluas cluster Anda secara horizontal.
Set Replika MongoDBBerbagi
Solusi sharding MongoDB mirip dengan kerangka kerja sharding yang ada untuk solusi database utama lainnya. Itu menggunakan solusi pencarian tipikal, di mana sharding didefinisikan dalam shard-key dan rentang disimpan di dalam database konfigurasi. MongoDB bekerja dengan tiga komponen untuk menemukan pecahan yang benar untuk data Anda. Lingkungan MongoDB yang di-sharding biasanya terlihat seperti ini:
MongoDB ShardingKomponen pertama yang digunakan adalah shard router yang disebut mongos. Semua operasi baca dan tulis harus dikirim ke router shard, membuat semua shard bertindak sebagai database tunggal untuk aplikasi klien. Router shard akan merutekan kueri ke shard yang sesuai dengan berkonsultasi dengan Configserver.
Kontrol Cluster Konversikan ke ShardManajemen shard sangat mudah di MongoDB. Anda dapat menambah dan menghapus pecahan secara online dan router pecahan MongoDB akan secara otomatis menyesuaikan dengan apa yang Anda perintahkan. Jika Anda ingin mengetahui lebih mendalam tentang cara terbaik untuk mengelola pecahan, silakan baca posting blog kami tentang mengelola pecahan MongoDB.
Mengamankan MongoDB
Resource terkait ClusterControl untuk MongoDB Otomasi &Pengelolaan MongoDB dengan ClusterControlMongoDB hadir dengan sedikit keamanan di luar kotak:misalnya, otentikasi dinonaktifkan secara default. Dengan kata lain:secara default, siapa pun memiliki hak root atas basis data apa pun. Salah satu perubahan yang diterapkan MongoDB untuk mengurangi risiko adalah mengubah pengikatan defaultnya menjadi 127.0.0.1. Ini mencegahnya dari terikat ke alamat IP eksternal, tetapi tentu saja, ini akan dikembalikan oleh kebanyakan orang yang menginstalnya. ClusterControl menghapus kesalahan manusia dan menyediakan akses ke serangkaian fitur keamanan, untuk secara otomatis melindungi database Anda dari peretasan dan ancaman lainnya. Kami sebelumnya memublikasikan video pendek dengan tips keamanan.
Versi baru ClusterControl menawarkan dukungan SSL untuk koneksi MongoDB. Mengaktifkan SSL menambahkan tingkat keamanan lain untuk komunikasi antara aplikasi (termasuk ClusterControl) dan database. Klien MongoDB membuka koneksi terenkripsi ke server database dan memverifikasi identitas server tersebut sebelum mentransfer informasi sensitif apa pun.
Untuk mengaktifkan koneksi SSL, Anda harus menggunakan klien s9s terbaru. Anda dapat menginstalnya dengan
wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh
chmod 755 install-s9s-tools.sh
./install-s9s-tools.sh
Atau ikuti metode penginstalan lain yang mungkin dijelaskan di sini.
Setelah Anda menginstal alat s9s (min versi 1.7-93.1), Anda dapat menggunakan tanda --enable-ssl untuk mengaktifkan koneksi SSL.
Contoh di bawah ini:
[[email protected] ~]# s9s cluster --cluster-id=3 --enable-ssl --log
This is an RPC V2 job (a job created through RPC V2).
The job owner is 'admin'.
Accessing '/.runtime/jobs/jobExecutor' to execute...
Access ok.
Stopping the cluster
node1:27017: Node is already stopped by the user.
node2:27017: Node is already stopped by the user.
node3:27017: Node is already stopped by the user.
Checking/generating (expire 1000 days) server and CA certificate.
node1:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node1:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node1:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node1:/etc/mongod.conf'.
node1:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node2:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node2:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node2:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node2:/etc/mongod.conf'.
node2:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node3:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node3:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node3:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node3:/etc/mongod.conf'.
node3:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
Starting the cluster
node3:27017: Doing some preparation for starting the node.
node3:27017: Disable transparent huge page and its defrag according to mongo suggestions.
node3:27017: Checking file permissions and ownership.
node3:27017: Starting mongod MongoDb server with command:
ulimit -u 32000 -n 32000 && runuser -s /bin/bash mongod '-c mongod -f /etc/mongod.conf'
node3:27017: Verifing that 'mongod' process is started.
SSL setup done.
ClusterControl akan menjalankan semua langkah yang diperlukan termasuk pembuatan sertifikasi pada semua node cluster. Sertifikat tersebut dapat dipertahankan nanti di tab Manajemen Kunci.
Manajemen Kunci Kontrol ClusterPemantauan
Saat bekerja dengan sistem basis data, Anda harus dapat memantaunya. Itu akan memungkinkan Anda untuk mengidentifikasi tren, merencanakan peningkatan atau peningkatan, atau bereaksi secara efektif terhadap masalah atau kesalahan yang mungkin muncul.
Ikhtisar ClusterControl MongoDBClusterControl 1.7.1 yang baru menambahkan pemantauan resolusi tinggi untuk berbasis MongoDB. Ini menggunakan Prometheus sebagai penyimpanan data dengan bahasa kueri PromQL. Daftar dasbor termasuk Server MongoDB, MongoDB ReplicaSet, Tinjauan Sistem, dan Dasbor Ikhtisar Cluster. ClusterControl menginstal agen Prometheus, mengonfigurasi metrik, dan memelihara akses ke konfigurasi eksportir Prometheus melalui GUI-nya, sehingga Anda dapat mengelola konfigurasi parameter dengan lebih baik seperti flag kolektor untuk eksportir (Prometheus). Kami menjelaskan secara rinci apa yang dapat dipantau baru-baru ini di artikel Cara Memantau MongoDB dengan Prometheus &ClusterControl.
ClusterControl MongoDB SCUMM DashboardPeringatan
Sebagai operator database, kita perlu diberitahu setiap kali sesuatu yang kritis terjadi pada database kita. Tiga metode utama di ClusterControl untuk mendapatkan peringatan meliputi:
- pemberitahuan email
- integrasi
- penasihat
Anda dapat mengatur pemberitahuan email pada tingkat pengguna. Buka Pengaturan> Pemberitahuan Email. Di mana Anda dapat memilih antara kekritisan dan jenis peringatan yang akan dikirim.
Metode selanjutnya adalah dengan menggunakan layanan Integrasi. Ini untuk meneruskan kategori acara tertentu ke layanan lain seperti tiket ServiceNow, Slack, PagerDuty, dll. sehingga Anda dapat membuat metode dan integrasi pemberitahuan lanjutan dalam organisasi Anda.
Layanan Integrasi Kontrol ClusterYang terakhir adalah melibatkan analisis metrik yang canggih di bagian Penasihat, tempat Anda dapat membuat pemeriksaan dan pemicu cerdas. Contohnya di sini dapat berupa prediksi penggunaan ruang disk atau penskalaan cluster dengan menambahkan node saat beban kerja mencapai tingkat yang telah ditentukan sebelumnya.
ClusterControl Advisors untuk MongoDBPencadangan dan Pemulihan
Setelah Anda menyiapkan dan menjalankan replika MongoDB Anda, dan memantau Anda, sekarang saatnya untuk langkah berikutnya:pastikan Anda memiliki cadangan data Anda.
ClusterControl Buat Kebijakan CadanganClusterControl menyediakan antarmuka untuk manajemen cadangan MongoDB dengan dukungan untuk penjadwalan dan laporan kreatif. Ini memberi Anda dua opsi untuk metode pencadangan.
- Mongodump
- Pencadangan konsisten Mongodb
Mongodump membuang semua data dalam format Binary JSON (BSON) ke lokasi yang ditentukan. Mongorestore nantinya dapat menggunakan file BSON untuk memulihkan database Anda. Pencadangan konsisten ClusterControl MongoDB mencakup transaksi dari oplog yang dijalankan saat membuat pencadangan.
Enkripsi Cadangan Kontrol ClusterStrategi pencadangan yang baik adalah bagian penting dari sistem manajemen basis data apa pun. ClusterControl menawarkan banyak opsi untuk pencadangan dan pemulihan/pemulihan.
ClusterControl Kontrol Jadwal PencadanganRetensi cadangan ClusterControl dapat dikonfigurasi; Anda dapat memilih untuk menyimpan cadangan Anda untuk jangka waktu tertentu atau tidak pernah menghapus cadangan. Enkripsi AES256 digunakan untuk mengamankan cadangan Anda dari elemen jahat. Untuk pemulihan yang cepat, cadangan dapat dipulihkan langsung ke cluster cadangan - ClusterControl menangani proses pemulihan penuh dari peluncuran hingga pemulihan cluster, menghapus langkah-langkah manual yang rawan kesalahan dari proses.