Catatan Sebelum Mengikuti Tutorial Ini

Beberapa catatan sebelum mengikuti tutorial ini

  1. Antar replika, saling komunikasi lewat hostname bukan IP. Kenapa? karena jika ada replica set yang rusak, menggantinya mudah, tinggal ganti IP saja di /etc/hosts

  2. SELinux dalam kondisi disable

  3. Menggunakan MongoDB CE versi 5.xx

  4. Menggunakan 3 VPS untuk memenuhi minimum requirement

  5. Detail 3 VPS replica

Hostname IP Port
replica1 192.168.3.2 27017
replica2 192.168.3.3 27017
replica3 192.168.3.4 27017
  1. Saya anggap pembaca sudah tahu basic instalasi mongodb ya

How To

  1. Tambahkan hosts di semua /etc/hosts
replica1  192.168.3.2
replica2  192.168.3.3
replica3  192.168.3.4
  1. Buat keyfile agar bisa replica set bisa menggunakan password, bisa di salah satu server atau bisa di laptop buatnya
openssl rand -base64 756 > /var/lib/mongo/mongo-replica-key
chmod 400 /var/lib/mongo/mongo-replica-key
chown mongod:mongod /var/lib/mongo/mongo-replica-key
  1. Copy /var/lib/mongo/mongo-replica-key ke semua replica-set server

  2. Tambahkan config replica set di /etc/mongod.conf

security:
  keyFile: "/var/lib/mongo/mongo-replica-key"
  authorization: disabled #we will change it later
replication:
  replSetName: "replica-production"
  1. Inisialisasi replica set, login ke salah satu server replika
rs.initiate( {
... _id: “replica-production”,
... members: [
... { _id: 0, host: “replica1:27017” },
... { _id: 1, host: “replica2:27017” },
... { _id: 2, host: “replica3:27017” }
... ] })
  1. Buat akun root dengan cara
use admin
db.createUser({
    user: "root",
    pwd: "PasswordsetronG",
    roles: [
      {role: "root", db: "admin"}
    ]
  })
Buat Root/Admin Replica Set

Buat Root/Admin Replica Set

  1. Buat akun untuk spesifik database
use db_spesifik

db.createUser(
   {
     user: "username_db_spesifik",
     pwd: "Pass_DB_spesifik",
     roles: [
         {role: "readWrite", db: "db_spesifik" }
     ]
   }
)
  1. Cek dengan rs.conf()

    Detail rs.conf()

    Detail rs.conf()

  2. Balik lagi ke /etc/mongod.conf

security:
  keyFile: "/var/lib/mongo/mongo-replica-key"
  authorization: enabled #change from disabled
replication:
  replSetName: "replica-production"
  1. Beberapa command yang bisa digunakan untuk cek replikasi

    a. rs.status() -> mengecek status replication set status

    b. rs.printSecondaryReplicationInfo() -> cek replikasi info (lebih simple dari rs.status() )

Cek Replication Lag

Cek Replication Lag

Catatan lagi!:

  1. Silahkan setup mongodb log rotate setelah berhasil setup replica set

  2. Setup mongodb memory/RAM limitation untuk mencegah OOM


Referensi:

percona blog - deploy mongo replica set

mongodb manual - deploy replica with keyfile


Jika kamu merasa tulisan ini bermanfaat & membantu kamu, kamu bisa berdonasi lewat saweria

If you feel this website help you, you can donate at saweria