Organisasi memanfaatkan infrastruktur di cloud karena menawarkan kecepatan, fleksibilitas, dan skalabilitas. Anda dapat membayangkan jika kita dapat menjalankan instance database baru hanya dengan satu klik, dan dibutuhkan beberapa menit hingga siap, kita juga dapat menerapkan aplikasi lebih cepat dibandingkan jika dibandingkan dengan lingkungan lokal.
Kecuali jika Anda menggunakan layanan cloud MongoDB sendiri, penyedia cloud utama tidak menawarkan layanan MongoDB terkelola sehingga tidak benar-benar operasi satu klik untuk menerapkan satu instance atau cluster. Cara yang umum adalah dengan memutar VM dan kemudian menerapkannya pada ini. Deployment perlu diperhatikan dari A hingga Z - kita perlu menyiapkan instance, menginstal perangkat lunak database, menyetel beberapa konfigurasi, dan mengamankan instance. Tugas-tugas ini penting, meskipun tidak selalu diikuti dengan benar - dengan konsekuensi yang berpotensi menimbulkan bencana.
Otomasi memainkan peran penting dalam memastikan semua tugas mulai dari instalasi, konfigurasi, pengerasan dan hingga layanan database siap. Di blog ini, kita akan membahas otomatisasi penerapan untuk MongoDB.
Orkestra Perangkat Lunak
Ada banyak perangkat lunak baru untuk membantu para insinyur menerapkan dan mengelola infrastruktur mereka. Manajemen konfigurasi membantu para insinyur menerapkan lebih cepat dan efektif, mengurangi waktu penerapan untuk layanan baru. Pilihan populer termasuk Ansible, Saltstack, Chef, dan Puppet. Setiap produk memiliki kelebihan dan kekurangan, tetapi semuanya bekerja dengan sangat baik dan sangat populer. Menyebarkan layanan stateful seperti MongoDB ReplicaSet atau Sharded Cluster bisa menjadi sedikit lebih menantang karena ini adalah pengaturan multi-server dan alat tersebut memiliki dukungan yang buruk untuk koordinasi inkremental dan lintas node. Prosedur penerapan biasanya memerlukan orkestrasi di seluruh node, dengan tugas yang dilakukan dalam urutan tertentu.
Tugas Penerapan MongoDB untuk Diotomatisasi
Penempatan server MongoDB melibatkan beberapa hal; tambahkan repositori MongoDB ke lokal, instal paket MongoDB, konfigurasikan port, nama pengguna, dan mulai layanan.
Tugas:menginstal MongoDB
- name: install mongoDB
apt:
name: mongodb
state: present
update_cache: yes
Tugas:salin mongod.conf dari file konfigurasi.
- name: copy config file
copy:
src: mongodb.conf
dest: /etc/mongodb.conf
owner: root
group: root
mode: 0644
notify:
- restart mongodb
Tugas:membuat konfigurasi batas MongoDB:
- name: create /etc/security/limits.d/mongodb.conf
copy:
src: security-mongodb.conf
dest: /etc/security/limits.d/mongodb.conf
owner: root
group: root
mode: 0644
notify:
- restart mongodb
Tugas:mengonfigurasi swappiness
- name: config vm.swappiness
sysctl:
name: vm.swappiness
value: '10'
state: present
Tugas:mengkonfigurasi waktu TCP Keepalive
- name: config net.ipv4.tcp_keepalive_time
sysctl:
name: net.ipv4.tcp_keepalive_time
value: '120'
state: present
Tugas:memastikan MongoDB akan mulai secara otomatis
- name: Ensure mongodb is running and and start automatically on reboots
systemd:
name: mongodb
enabled: yes
state: started
Kami dapat menggabungkan semua tugas ini ke dalam satu buku pedoman dan menjalankan buku pedoman untuk mengotomatiskan penerapan. Jika kami menjalankan playbook Ansible dari konsol:
$ ansible-playbook -b mongoInstall.yml
Kami akan melihat kemajuan penerapan dari skrip Ansible kami, hasilnya akan seperti di bawah ini:
PLAY [ansible-mongo] **********************************************************
GATHERING FACTS ***************************************************************
ok: [10.10.10.11]
TASK: [install mongoDB] *******************************************************
ok: [10.10.10.11]
TASK: [copy config file] ******************************************************
ok: [10.10.10.11]
TASK: [create /etc/security/limits.d/mongodb.conf]*****************************
ok: [10.10.10.11]
TASK: [config vm.swappiness] **************************************************
ok: [10.10.10.11]
TASK: [config net.ipv4.tcp_keepalive_time]*************************************
ok: [10.10.10.11]
TASK: [config vm.swappiness] **********************************************
ok: [10.10.10.11]
PLAY RECAP ********************************************************************
[10.10.10.11] : ok=6 changed=1 unreachable=0 failed=0
Setelah penerapan, kita dapat memeriksa layanan MongoDB di server target.
Otomasi Penerapan MongoDB menggunakan GUI ClusterControl
Ada dua cara untuk menyebarkan MongoDB menggunakan ClusterControl. Kita dapat menggunakannya dari dasbor ClusterControl, ini berbasis GUI dan hanya membutuhkan 2 dialog hingga memicu pekerjaan baru untuk penerapan baru MongoDB.
Pertama kita mengisi SSH User dan password, isi Cluster Name seperti gambar di bawah ini:
Dan kemudian, pilih vendor dan versi MongoDB, tentukan pengguna dan password, dan yang terakhir isikan IP Address target
Otomasi Penerapan MongoDB menggunakan s9s CLI
Dari antarmuka baris perintah, seseorang dapat menggunakan alat s9s. Penyebaran MongoDB menggunakan s9s hanyalah satu baris perintah seperti di bawah ini:
$ s9s cluster --create --cluster-type=mongodb --nodes="10.10.10.15" --vendor=percona --provider-version=4.2 --db-admin-passwd="12qwaszx" --os-user=vagrant --cluster-name="MongoDB" --wait
Create Mongo Cluster
/ Job 183 FINISHED [██████████] 100% Job finished.
Jadi menerapkan MongoDB, baik itu ReplicaSet atau Sharded Cluster, sangat mudah, dan sepenuhnya otomatis oleh ClusterControl.