MongoDB ReplicaSet menggunakan Consul sebagai Service Discovery

by Jan Antonin Kolar at Unsplash

Pada saat membaca kata “MongoDB” tentu akan terpikirkan adalah sebuah database. Salah satu database dengan Konsep NoSQL documentDB yang artinya data disimpan sebagai document di sebuah collection. mengenai penjelasan dan tutorial mengenal MongoDB saya sangat menyarakan untuk register di MongoDB University. Course free yang dibuat oleh MongoDB untuk engineer yang berminat untuk mempelajari MongoDB.

Adapun pertimbangan saat menggunakan MongoDB yaitu fitur yang ditawarkan. Seperti Indexing, Sharding, Replica Set dll teman — teman bisa cek secara details disini. Hanya saja yang saya akan bahas pada artikel kali ini yakni Replica Set dengan consul sebagai service discovery. Tentu adapun kelebihan dan kekurangan ketika implementasi ini sebagai setup di Staging bahkan Production

Service discovery is the process of automatically detecting devices and services on a network. Service discovery protocol (SDP) is a networking standard that accomplishes detection of networks by identifying resources.

From https://avinetworks.com/glossary/service-discovery/

Bukan menjadi hal yang sulit untuk melakukan instalasi Replica set di MongoDB. Sudah banyak sekali bertebaran tutorial yang menjelaskan langkah-langkah untuk instalasinya, akan tetapi dalam penerapannya akan berbeda apabila sudah level production. salah satu pendekatan untuk membangun replica set MongoDB yaitu dengan Consul sebagai service discovery. Kenapa ? . sebelum mengadopsi service discovery kita akan di sulitkan dengan mendefinisikan Alamat IP pada setiap Node. adapun kita sudah membuat dokumentasi tabel alamat ip tentu akan semakin repot apabila jumlah node akan semakin banyak. dengan adanya service discovery kita hanya cukup menambahkan agent lalu node akan langsung dikenali oleh node lainnya.

Berikut Topologi Replica Set MongoDB dengan Consul sebagai Service Discovery.

PSA Arsitektur dengan Consul

Persyaratan Sistem :

  • OS Linux Varian apapun support docker (Semua Node) (Penulis menggunakan Ubuntu 18.04 LTS)
  • docker-compose version 1.28.2, build 67630359 ( Semua Node )
  • Node selain Consul Server sudah terinstall MongoDB Community. (saya anggap Node sudah terinstall MongoDB. Tutorial Instalasi bisa mengikuti di Official Website MongoDB). di artikel ini menggunakan versi 4.0 Community.

Catatan:

  • Untuk Alamat IP bisa menyesuaikan dilapangan. *sangat disarankan untuk Consul Server menggunakan static IP.

Langkah pertama kita lakukan instalasi Consul sebagai service discovery,

  • Install Consul Server di Node dengan menggunakan Docker.
Consul Server dengan docker-compose

Buat file docker-compose.yml dan jalankan perintah docker-compose up . maka akan muncul log sesuai gambar diatas. lalu akses halaman UI Consul Server di http://[alamat_ip]:8500/ maka akan muncul halaman monitoring consul.

  • Install Consul Agent di Node yang lainnya sebagai worker.
Consul Agent dengan docker-compose

lakukan hal yang sama untuk node worker yang lainnya.

Catatan:

  • Command Consul tidak jauh berbeda dengan Server atau Agent. hanya saja apabila sebagai server “-server -client=0.0.0.0” tetapi sebagai agent “-retry-join=ip_consul_server -node=worker-0x”

Apabila berhasil halam UI Monitoring Consul Server akan seperti gambar dibawah.

Server-1 = Consul Server dan Worker-0x = Consul Agent

Agar dapat melakukan komunikasi antar worker kita harus mendaftarkan service untuk menberitahukan consul bahwa identitas pada setiap node sudah dibuatkan.

worker01 = mongo01

worker02 = mongo02

worker03 = mongo03

Buat file mongo0x.json lalu isikan code berikut

buat file services untuk masing — masing worker

Catatan:

  • buat file mongo0x.json di setiap worker sesuai dengan definisi diatas. lalu register service di setiap worker.

Apabila berhasil maka hasilnya akan seperti dibawah dengan melakukan ping di salah satu worker0x.

Ping ke semua service yang sudah didaftarkan
register services mongodb pada consul

Langkah kedua kita lakukan Replica Set MongoDB menggunakan Service Discovery.

  • Untuk Instalasi Replica Set cukup dengan mendefinisikan Command Berikut di setiap worker nodes
inisiasi MongoDB untuk ReplicaSet

setelah melakukan inisiasi di masing — masing node kita akses node Worker 01 lalu kita lakukan perintah dibawah.

Command untuk inisiasi replica set.

apabila berhasil lakukan rs.conf() lalu akan muncul output sebagai berikut.

status replica set berhasil.

Catatan:

  • Apabila worker02 sebagai primary. kita bisa melakukan priority primary dengan command dibawah.
Inisiasi priority primary untuk mongo01.
  • Setup READ CONCERN majority apabila mengadopsi PSA Architecture. untuk referensi lengkap ada disini.
  • Pendekatan backup untuk replicaset bisa menggunakan mongodump atau filesystem snapshot apabila menggunakan community version.

Sekian….

~ sangat terbuka untuk kritik dan saran ~

Referensi :

--

--

--

._.? 4x ACA, 1x CJE, 1x GCP

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Imam M

Imam M

._.? 4x ACA, 1x CJE, 1x GCP

More from Medium

Queue Using Dart

Deprecation Warning With GraphQL + NestJS Versionless API

MongoDB database

Adventures in Streaming to Http Requests in NodeJS