Taufik Mulyana
Taufik Mulyana
Linux System Administrator, Interested in Linux, Cloud, Containers
December 12, 2018 4 min read

Konfigurasi Replikasi di MongoDB

mongodb

Konfigurasi Replikasi di MongoDB, sebuah replica set pada MongoDB merupakan sebuah grup dari instansi MongoDB yang mengelola/memelihara data yang sama, dalam sebuah replication set direkomendasikan memiliki 3 member/node,satu node akan menjadi primary dan yang lainnya akan menjadi secondary, ketika primary node down, salah satu nodeĀ secondary akan otomatis menggantikannya, proses ini dinamakan dengan election, proses yang menentukan node mana yang akan di jadikan primary.

Notes : tutorial ini membahas cara membuat replica set tanpa akses kontrol

pada tutorial ini kita akan menerapkan arsitektur seperti berikut

mongodb-replication
diambil dari mongodb.org

ketiga node akan saling berkomunikasi melalui jaringan lokal, berikut konfigurasi masing-masing node

node1 primary
 ip address : 192.168.56.21
 hostname   : rpl-1.mongo.local
node2 secondary
 ip address : 192.168.56.22
 hostname   : rpl-2.mongo.local
node3 secondary
 ip address : 192.168.56.23
 hostname   : rpl-3.mongo.local

Konfigurasi Hostname

ubah hostname pada setiap node menggunakan perintah berikut

$ sudo hostnamectl set-hostname rpl-x.mongo.local

Konfigurasi berkas Hosts

tambakan ip dan hostname setiap node/member pada berkas /etc/hosts, dan lakukan pada setiap node

$ sudo vim /etc/hosts

192.168.56.21 rpl-1.mongo.local
192.168.56.22 rpl-2.mongo.local
192.168.56.23 rpl-3.mongo.local

Konfigurasi MongoDB

jika mongodb belum terpasang anda bisa mengikuti tutorial ini Cara Install MongoDB di Ubuntu

ubah konfigurasi MongoDB yang berada di /etc/mongod.conf

$ sudo vim /etc/mongodb.conf

net:
  port: 27017
  bindIp: 127.0.0.1,192.168.56.21

replication:
  replSetName: rs0

pada bindIP tambakan IP dari Node, hapus # pada replication dan tambahkan nama replikasi dengan replSetName, lakukan pada setiap node

baca juga  Cara Install MongoDB di Ubuntu 18.04

selanjutnya jalankan ulang layanan MongoDB pada setiap node

$ sudo systemctl restart mongod

Memulai Replikasi

masuk ke mongo shell pada node primary

$ mongo

lalu jalankan perintah berikut

rs.initiate( {
  _id : "rs0",
  members: [
    { _id: 0, host: "rpl-1.mongo.local:27017" },
    { _id: 1, host: "rpl-2.mongo.local:27017" },
    { _id: 2, host: "rpl-3.mongo.local:27017" } 
  ]
} )

dan jika berhasil akan menampilkan output seperti berikut

{
        "ok" : 1,
        "operationTime" : Timestamp(1544846876, 1),
        "$clusterTime" : {
                "clusterTime" : Timestamp(1544846876, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        }
}

hanya lakukan step diatas pada node primary saja, lalu cek konfigurasi replikasi dengan perintah rs.conf()

> rs.conf()
{
        "_id" : "rs0",
        "version" : 1,
        "protocolVersion" : NumberLong(1),
        "writeConcernMajorityJournalDefault" : true,
        "members" : [
                {
                        "_id" : 0, q
                        "host" : "rpl-1.mongo.local:27017",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {

                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                },
                {
                        "_id" : 1,
                        "host" : "rpl-2.mongo.local:27017",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {

                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                },
                {
                        "_id" : 2,
                        "host" : "rpl-3.mongo.local:27017",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {

                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                }
        ],
        "settings" : {
                "chainingAllowed" : true,
                "heartbeatIntervalMillis" : 2000,
                "heartbeatTimeoutSecs" : 10,
                "electionTimeoutMillis" : 10000,
                "catchUpTimeoutMillis" : -1,
                "catchUpTakeoverDelayMillis" : 30000,
                "getLastErrorModes" : {

                },
                "getLastErrorDefaults" : {
                        "w" : 1,
                        "wtimeout" : 0
                },
                "replicaSetId" : ObjectId("5c147e1cc692a115300eba93")
        }
}

dan untuk mengidentifikasi node primary bisa menggunakan rs.status()

sampai disini konfigurasi replikasi sudah selesai, data pada node secondary akan sama dengan data pada node primary

Leave a Reply

Your email address will not be published. Required fields are marked *