สร้างไฟล์ config สำหรับ node4.conf
storage:
dbPath: mongodb/db/node4
net:
bindIp: 192.168.103.100,localhost
port: 27004
security:
authorization: enabled
keyFile: mongodb/pki/keyfile
systemLog:
destination: file
path: mongodb/db/node4/mongod.log
logAppend: true
processManagement:
fork: true
replication:
replSetName: nf-example
สร้างไฟล์ สำหรับ arbiter.conf
storage:
dbPath: mongodb/db/arbiter
net:
bindIp: 192.168.103.100,localhost
port: 28000
security:
authorization: enabled
keyFile: mongodb/pki/keyfile
systemLog:
destination: file
path: mongodb/db/arbiter/mongod.log
logAppend: true
processManagement:
fork: true
replication:
replSetName: nf-example
สร้าง directory สำหรับ node4 และ arbiter
mkdir -p mongodb/db/node4
mkdir -p mongodb/db/arbiter
รัน mongod
สำหรับ node 4
และ arbiter
mongod -f node4.conf
mongod -f arbiter.conf
ใช้ mongo shell
mongo --host "nf-example/192.168.103.100:27001" -u "nfadmin" -p "nfpass" --authenticationDatabase "admin"
จาก shell ให้เพิ่ม node 4 และ arbiter node เข้า replica set
rs.add("192.168.103.100:27004")
rs.addArb("192.168.103.100:28000")
เช็คสถานะของ Replica Set สังเกตค่าที่เปลี่ยนแปลงไปใน Set
rs.isMaster()
rs.status()
ลบ Arbiter node ออกจาก Replica Set
rs.remove("192.168.103.100:28000")
เช็คสถานะของ Replica Set สังเกตค่าที่เปลี่ยนแปลงไปใน Set
rs.isMaster()
rs.status()
ดึงค่า configuration ของ Replica Set มาเก็บไว้ในตัวแปรของ Shell
cfg = rs.conf()
แก้ไขค่า config ของ Node ใหม่
ตาม Workshop คือ node 4 (Replica Set นับ Nodeตัวแรกเป็น cfg.members[0]) แต่จะสามารถทดลองกับ Node 1,2,3 ก็ได้
cfg.members[3].votes = 0
cfg.members[3].hidden = true
cfg.members[3].priority = 0
สั่งให้ Replica Set โหลด config ตัวใหม่ไปใช้งาน
rs.reconfig(cfg)
เช็คสถานะของ Replica Set สังเกตค่าที่เปลี่ยนแปลงไปใน Set
rs.isMaster()
rs.status()
การแก้ไข topology ของ Replica Set จะทำให้เกิดการ election ขึ้นใหม่