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

Cara Menyebarkan MongoDB untuk Ketersediaan Tinggi

Pengantar

MongoDB memiliki dukungan besar untuk ketersediaan tinggi melalui ReplicaSets. Namun, menyebarkan ReplicaSet tidak cukup untuk sistem siap produksi. Yang terakhir membutuhkan sedikit perencanaan. Deployment hanyalah langkah awal, kemudian kita perlu mempersenjatai tim operasional dengan pemantauan, peringatan, keamanan, deteksi anomali atau kegagalan, pemulihan/failover otomatis, manajemen pencadangan, dan alat lain untuk menjaga lingkungan tetap aktif dan berjalan.

Prasyarat

Sebelum Anda dapat memulai penerapan MongoDB dengan ClusterControl, beberapa persiapan diperlukan. Platform yang didukung adalah RedHat/CentOS 6.x/7.x, Ubuntu 12.04/14.04/16.04 LTS, dan Debian 7.x/8.x Persyaratan sumber daya OS minimal adalah 2GB RAM, 2CPU, dan ruang disk 20GB yang berjalan di x86 Arsitektur. ClusterControl sendiri dapat berjalan di VM biasa atau host barebone yang berjalan di tempat, di belakang firewall, atau di Cloud VM.

Selain itu, ClusterControl membutuhkan port yang digunakan oleh layanan berikut untuk dibuka/diaktifkan:
ICMP (echo reply/request)
SSH (default adalah 22)
HTTP (default adalah 80)
HTTPS (default adalah 443)
MySQL (default adalah 3306) (database internal)
CMON RPC (default adalah 9500)
CMON RPC TLS (default adalah 9501)
CMON Events (default adalah 9510)
CMON SSH (default adalah 9511)
CMON Cloud (default adalah 9518)

Port streaming untuk cadangan melalui netcat (standarnya adalah 9999)

Cara termudah dan paling nyaman untuk menginstal ClusterControl adalah dengan menggunakan skrip instalasi yang disediakan oleh Somenines. Cukup unduh skrip dan jalankan sebagai pengguna root atau pengguna dengan izin root sudo. Jika Anda memerlukan pendekatan yang lebih manual, misalnya jika server Anda sepenuhnya tanpa akses internet, Anda dapat mengikuti petunjuk yang diberikan dalam dokumentasi ClusterControl.

$ wget http://www.severalnines.com/downloads/cmon/install-cc 
$ chmod +x install-cc
$ ./install-cc   # as root or sudo user

Ikuti wizard penginstalan di mana Anda akan dipandu dengan menyiapkan server database ClusterControl internal dan kredensialnya,, kata sandi cmon untuk penggunaan ClusterControl dan sebagainya. Anda akan mendapatkan baris berikut setelah instalasi selesai:

Determining network interfaces. This may take a couple of minutes. Do NOT press any key.
Public/external IP => http://{public_IP}/clustercontrol
Installation successful. 

Langkah selanjutnya adalah membuat kunci SSH yang akan kita gunakan untuk mengatur SSH tanpa kata sandi nanti. Jika Anda memiliki pasangan kunci yang ingin Anda gunakan, Anda dapat melewati pembuatan yang baru.

Anda dapat menggunakan pengguna mana pun dalam sistem tetapi harus memiliki kemampuan untuk melakukan operasi pengguna super (sudoer). Dalam contoh ini, kami memilih pengguna root:

$ whoami
root
$ ssh-keygen -t rsa #generates ssh key

Siapkan SSH tanpa kata sandi ke semua node yang ingin Anda pantau/kelola melalui ClusterControl. Dalam hal ini, kami akan mengaturnya di semua node dalam tumpukan (termasuk node ClusterControl itu sendiri). Pada node ClusterControl, jalankan perintah berikut untuk menyalin kunci ssh dan tentukan kata sandi root saat diminta:

ssh-copy-id [email protected] # clustercontrol
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
...

Anda kemudian dapat memverifikasi apakah itu berfungsi dengan menjalankan perintah berikut pada node ClusterControl:

$ ssh [email protected] "ls /root"

Pastikan Anda dapat melihat hasil dari perintah di atas tanpa perlu memasukkan kata sandi.
Setelah penginstalan selesai, Anda harus dapat masuk ke antarmuka web melalui

https://<your_vm_name>/clustercontrol/#

Setelah login pertama, Anda akan melihat jendela dengan opsi untuk memulai penerapan pertama Anda atau mengimpor cluster yang ada.

ClusterControl Menyebarkan dan mengimpor cluster yang ada

Konfigurasikan repositori

Sebelum kita mulai menerapkan, mari kita lihat sistem manajemen paket. Proses penyebaran ClusterControl mendukung seluruh proses instalasi cluster. Itu termasuk penyesuaian OS dan pengunduhan dan pemasangan paket. Jika node database Anda memiliki akses terbatas ke internet dan Anda tidak dapat mengunduh paket langsung dari node, Anda dapat membuat repositori paket langsung di host ClusterControl.

Penyimpanan paket ClusterControl

Ada tiga cara untuk memelihara paket MongoDB di ClusterControl.

Gunakan Repositori Vendor

Instal perangkat lunak dengan mengatur dan menggunakan repositori perangkat lunak favorit vendor database. ClusterControl akan menginstal versi terbaru dari apa yang disimpan oleh repositori MongoDB.

Jangan Siapkan Repositori Vendor

Instal perangkat lunak dengan menggunakan repositori perangkat lunak yang sudah ada yang sudah diatur di OS. Pengguna harus mengatur repositori perangkat lunak secara manual pada setiap node database, dan ClusterControl akan menggunakan repositori ini untuk penyebaran paket. Ini bagus jika node database berjalan tanpa koneksi internet dan perusahaan Anda memiliki sistem paket eksternal dengan paket MongoDB.

Gunakan Mirrored Repositories (Buat repositori baru)

Buat dan mirror repositori vendor saat ini, lalu terapkan menggunakan repositori mirror lokal. Ini juga memungkinkan Anda untuk "membekukan" versi terbaru dari paket perangkat lunak yang digunakan untuk menyediakan cluster database untuk vendor tertentu (yaitu, hanya menggunakan paket Percona).

ClusterControl mengotomatiskan pembuatan repositori paket internal

Menerapkan ReplicaSet

ClusterControl mendukung MongoDB/Percona Server untuk MongoDB 3.x ReplicaSet. Untuk memulai penerapan cluster baru, buka opsi penerapan di sudut kanan atas. Saat Anda menginstal node database Anda, selalu gunakan VM yang bersih dan minimal. Ketergantungan paket yang ada mungkin dihapus jika diperlukan. Paket baru akan diinstal dan paket yang ada dapat dihapus saat menyediakan node dengan perangkat lunak yang diperlukan.

Langkah pertama dari proses penerapan adalah memberikan kredensial ssh yang sesuai dengan host tempat Anda menerapkan cluster. Karena ClusterControl menggunakan ssh tanpa kata sandi untuk terhubung dan mengonfigurasi host Anda, kunci ssh diperlukan.

ClusterControl menyebarkan wizard cluster MongoDB

Dianjurkan untuk menggunakan akun pengguna yang tidak memiliki hak istimewa untuk masuk ke host, sehingga kata sandi sudo dapat diberikan untuk memfasilitasi tugas administratif. Jika akun pengguna tidak meminta kata sandi sudo, ini tidak diperlukan. Anda juga memiliki opsi untuk menonaktifkan iptables dan AppArmor atau SELinux pada host untuk menghindari masalah dengan penerapan awal.

Pada layar berikut, Anda dapat memilih untuk menginstal binari MongoDB dari MongoDB Inc atau dari Percona. Di sini juga, Anda harus menentukan akun pengguna administratif MongoDB dan kata sandi Anda karena keamanan tingkat pengguna diamanatkan.

ClusterControl menyebarkan wizard MongoDB, ReplicaSet

Pada layar ini, Anda juga dapat melihat template konfigurasi mana yang digunakan. ClusterControl menggunakan templat file konfigurasi untuk memastikan penerapan berulang. Template disimpan di host ClusterControl dan dapat diedit secara langsung menggunakan baris perintah, atau melalui UI ClusterControl. Anda juga dapat memilih untuk menggunakan repositori vendor, jika diinginkan, atau memilih repositori Anda sendiri. Selain itu, Anda dapat secara otomatis membuat repositori baru di host ClusterControl. Ini memungkinkan untuk membekukan versi MongoDB yang akan disebarkan ClusterControl ke rilis saat ini. Setelah Anda melakukan konfigurasi yang sesuai di sini, klik Deploy untuk melanjutkan.

Menerapkan sharding

ClusterControl juga dapat menggunakan Cluster Sharded. Dua metode untuk melakukannya didukung. Pertama, Anda dapat mengonversi ReplicaSet MongoDB yang ada menjadi Cluster Sharded, seperti yang ditunjukkan di bawah ini.

ClusterControl Menyebarkan pecahan MongoDB

Ketika "Convert to Shard" diklik, Anda akan diminta untuk menambahkan setidaknya satu server Config (untuk lingkungan produksi, Anda harus menambahkan tiga), dan router, juga dikenal sebagai proses "mongos". Tahap terakhir adalah memilih template konfigurasi MongoDB Anda untuk config server dan router, serta direktori data Anda. Terakhir, klik sebarkan. Setelah selesai, itu akan muncul di tampilan Database Clusters Anda. Ini akan menunjukkan kesehatan pecahan Anda alih-alih contoh individual. Anda juga dapat menambahkan pecahan tambahan sesuai kebutuhan.

Konversikan ke Pecahan

Jika Anda mengalami masalah penskalaan, Anda dapat menskalakan ReplicaSet ini dengan menambahkan lebih banyak sekunder atau menskalakan dengan sharding. Anda dapat mengonversi ReplicaSet yang ada menjadi kluster sharded, tetapi ini adalah proses yang panjang di mana Anda dapat dengan mudah membuat kesalahan. Di ClusterControl kami telah mengotomatiskan proses ini, di mana kami secara otomatis menambahkan server Config, router shard dan mengaktifkan sharding.

Untuk mengonversi ReplicaSet menjadi sharded cluster, Anda cukup memicunya melalui drop-down tindakan:

Kontrol Cluster Konversikan ke pecahan

Jadwalkan kebijakan pencadangan

Sangat penting untuk menyimpan cadangan basis data Anda dan basis data Anda memiliki proses pencadangan yang baik dan mudah. ClusterControl memiliki dukungan untuk pencadangan dan pemulihan yang sepenuhnya konsisten dari kumpulan replika MongoDB atau sharded cluster Anda.

Pencadangan dapat dilakukan secara manual atau dapat dijadwalkan. Pemusatan cadangan didukung, dengan cadangan yang disimpan di sistem file Pengontrol, termasuk direktori yang dipasang di jaringan atau diunggah ke penyedia Cloud yang telah dikonfigurasi sebelumnya - penyedia yang saat ini didukung adalah Google Cloud Platform, Amazon Web Services, dan Microsoft Azure. Hal ini memungkinkan Anda untuk memanfaatkan sepenuhnya fungsi pengelolaan siklus hidup lanjutan yang disediakan oleh Amazon dan Google untuk fitur-fitur seperti jadwal retensi khusus, pengarsipan jangka panjang, dan enkripsi saat istirahat, antara lain.

Retensi cadangan 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.

Aktifkan laporan operasional

Dengan ClusterControl Anda dapat menjadwalkan laporan lintas lingkungan seperti "Laporan Sistem Harian", "Laporan Peningkatan Paket", "Laporan Perubahan Skema", serta "Cadangan" dan "Ketersediaan". Laporan ini akan membantu Anda menjaga keamanan dan operasional lingkungan Anda. Anda juga akan melihat rekomendasi tentang cara memperbaiki kesenjangan. Laporan dalam format HTML dapat dikirim melalui email ke SysOps, DevOps, atau bahkan manajer yang ingin mendapatkan pembaruan status rutin tentang kesehatan sistem tertentu.

Penasihat Kinerja

Penasihat memberikan saran khusus tentang cara mengatasi masalah di berbagai bidang seperti kinerja, keamanan, manajemen log, konfigurasi, ruang penyimpanan, dan lainnya. ClusterControl hadir dengan daftar penasihat yang telah ditentukan sebelumnya yang dimaksudkan untuk melacak status berbagai metrik dan status database Anda. Bila diperlukan, peringatan dibuat. Mereka dapat diperpanjang dengan skrip manual. Untuk informasi lebih lanjut, ikuti blog terbaru kami tentang “Cara Mengotomatiskan Analisis Beban Kerja Database dengan ClusterControl Performance Advisors”.

Di antara berbagai penasihat kinerja sistem operasi, Anda dapat menemukan yang terkait dengan MongoDB di bawah ini.

MongoDB penasihat sharding
koneksi yang digunakan
pemeriksaan replikasi
jendela replikasi

Terapkan di Cloud

Mulai versi 1.6, ClusterControl memungkinkan Anda membuat ReplikaSet MongoDB 3.4 di cloud. Platform cloud yang didukung adalah Amazon AWS, Google Cloud, dan Microsoft Azure.

Wizard akan memandu Anda melalui pembuatan mesin VM dan pengaturan MongoDB, semuanya di satu tempat.

ClusterControl menyebarkan MongoDB ReplicaSet di awan

Prosesnya memungkinkan Anda memilih parameter OS termasuk pengaturan jaringan. Tidak perlu menyalin kunci SSH, mereka akan ditambahkan secara otomatis. Setelah pekerjaan selesai, Anda akan melihat cluster Anda di dasbor utama. Mulai sekarang, Anda dapat mengelola cluster MongoDB Anda seperti yang lain di ClusterControl.

ClusterControl menyebarkan MongoDb RelicaSet di cloud, pengaturan jaringan VM

Kiat Keamanan

Pada titik ini cluster baru Anda harus aktif dan berjalan. Sebelum Anda mengizinkan pengguna dan proses aplikasi untuk mengakses data, Anda perlu menentukan pengaturan keamanan cluster. Di blog kami sebelumnya, kami mengangkat kekhawatiran tentang konfigurasi keamanan default. Berikut adalah beberapa hal utama yang perlu Anda pertimbangkan sebelum meneruskan cluster baru Anda ke tim lain.

Ubah port default - secara default, MongoDB akan mengikat ke port standar:27017 untuk Replika MongoDB atau Router Shard, 27018 untuk pecahan dan 27019 untuk server Config. Menggunakan port standar tidak disarankan karena menyederhanakan kemungkinan serangan peretas.

Aktifkan autentikasi - tanpa otentikasi, pengguna dapat masuk tanpa kata sandi. Aktifkan autentikasi di semua lingkungan Anda (pengembangan, sertifikasi, dan produksi).

security:
    Authentication: on

Gunakan sandi yang kuat - jika perlu, gunakan pembuat kata sandi untuk membuat kata sandi yang rumit.

Tambahkan file kunci replika - dengan keyfile diaktifkan, otentikasi aliran replikasi akan dienkripsi.

Enkripsi cadangan Anda - ClusterControl memungkinkan Anda untuk mengenkripsi cadangan Anda.

Untuk bacaan lebih lanjut, kami memiliki blog tentang cara mengamankan MongoDB.

Aktifkan Pemulihan Otomatis Cluster

Fitur terakhir yang harus diaktifkan adalah pemulihan otomatis node dan cluster.

ClusterControl dapat bekerja untuk Anda sebagai anggota tim DBA 24/7 yang diperpanjang. Ada dua fungsi utama di sini. Pemulihan node otomatis dan pemulihan cluster otomatis.

Ketika pemulihan otomatis simpul diaktifkan, ClusterControl akan bereaksi terhadap masalah simpul dan jika terjadi kegagalan, ia akan mencoba memulihkan masing-masing simpul. Ini untuk mengatasi hal-hal seperti proses yang menjalankan memori atau layanan yang memerlukan permulaan setelah pemadaman listrik, apa pun yang menyebabkan masalah dengan layanan mati.

Opsi pemulihan cluster bahkan lebih canggih. Ini akan melakukan peralihan jika diperlukan.

Dalam hal ini, mengembalikan perubahan apa pun yang tidak direplikasi ke budak akan ditempatkan di folder 'kembalikan', jadi terserah administrator untuk memulihkannya.

Untuk menyiapkan pemulihan otomatis node dan cluster, Anda hanya perlu mengaktifkannya di dasbor utama.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Statistik Visual untuk Server MongoDB Anda

  2. atom MongoDB findOrCreate:findOne, masukkan jika tidak ada, tetapi jangan perbarui

  3. MongoDB ::apakah ID Mongo unik di seluruh koleksi?

  4. MongoDB aktif dengan Docker gagal terhubung ke server [localhost:27017] pada koneksi pertama

  5. WiredTiger dan pembaruan di tempat