Catatan Sebelum Mengikuti Tutorial Ini
Beberapa catatan sebelum mengikuti tutorial ini
-
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
-
SELinux dalam kondisi disable
-
Menggunakan MongoDB CE versi 5.xx
-
Menggunakan 3 VPS untuk memenuhi minimum requirement
-
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 |
- Saya anggap pembaca sudah tahu basic instalasi mongodb ya
How To
- Tambahkan hosts di semua /etc/hosts
replica1 192.168.3.2
replica2 192.168.3.3
replica3 192.168.3.4
- 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
-
Copy
/var/lib/mongo/mongo-replica-key
ke semua replica-set server -
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"
- 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” }
... ] })
- Buat akun root dengan cara
use admin
db.createUser({
user: "root",
pwd: "PasswordsetronG",
roles: [
{role: "root", db: "admin"}
]
})

Buat Root/Admin Replica Set
- Buat akun untuk spesifik database
use db_spesifik
db.createUser(
{
user: "username_db_spesifik",
pwd: "Pass_DB_spesifik",
roles: [
{role: "readWrite", db: "db_spesifik" }
]
}
)
-
Cek dengan
rs.conf()
Detail rs.conf()
-
Balik lagi ke /etc/mongod.conf
security:
keyFile: "/var/lib/mongo/mongo-replica-key"
authorization: enabled #change from disabled
replication:
replSetName: "replica-production"
-
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
Catatan lagi!:
-
Silahkan setup mongodb log rotate setelah berhasil setup replica set
-
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