MongoDB ReplicaSet menggunakan Consul sebagai Service Discovery

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

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.

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.

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.

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

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.


Langkah kedua kita lakukan Replica Set MongoDB menggunakan Service Discovery.
- Untuk Instalasi Replica Set cukup dengan mendefinisikan Command Berikut di setiap worker nodes

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

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

Catatan:
- Apabila worker02 sebagai primary. kita bisa melakukan priority primary dengan command dibawah.

- 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 :