Trong bài trước nói về begin MongoDB và triển khai MongoDB với 01 member. Do đó có thể tham khảo cài đặt và sử dụng các thao tác cơ bản trên MongoDB 3 tại: Cài đặt và các thao tác cơ bản MongoDB 3
Trong bài này, mô hình triển khai replica set MongoDB sử dụng 02 member, và tận dụng 01 server trong hệ thống làm Arbiter cho việc vote
Về lý thuyết mình thấy 2 nguồn này rõ ràng và dễ hiểu:
//docs.mongodb.com/manual/replication/
//kipalog.com/posts/Replica-set-trong-MongoDB
Trong phạm vi bài viết sẽ triển khai replication MongoDB 3 trên các member là CentOS 7
I. Cài đặt MongoDB 3 trên 03 servers
Step1: Tạo mongodb3 repository
vim /etc/yum.repos.d/mongo.repo
[mongodb-org-3.4] name=MongoDB Repository baseurl=//repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=//www.mongodb.org/static/pgp/server-3.4.asc
Step2: Cài đặt MongoDB và các gói công cụ
yum install -y mongodb-org systemctl start mongodb systemctl enable mongodb
Step3: Cho phép truy cập mongodb từ một số IPAddress Soạn tệp cấu hình /etc/mongod.conf trên các server
sed -i 's/127.0.0.1/0.0.0.0/' /etc/mongod.conf
Cho phép truy cập mongodb từ local network
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port port="27017" protocol="tcp" accept' firewall-cmd --reload
2. Replication MongoDB
Trong điều kiện replication MongoDB với 2 server, khi primary unvailable, thì secondary cũng sẽ không tự động thành primary được, vì nó chỉ có 01 vote. Thực tế trong môi trường product thì luôn cần ghi vào database, và tất nhiên chỉ có Primary là có thể write, secondary thì chỉ có thể read. Do đó chúng ta sẽ tận dụng một máy nào đó trong hệ thống để làm Arbiter [trọng tài] vào replica set, để vote cho secondary thành primary. – Arbiter chỉ có chức năng vote, không giữ data của hệ thống replica set, cũng như không thể trở thành primary. – Arbiter yêu cầu cấu hình tối thiểu để cài đặt mongodb, do đó chúng ta có thể tận dụng một server nào nó trong hệ thống như: monitor, application
Với replica set MongoDB, member nào có priority cao hơn sẽ là primary. Do đó khi cấu hình chúng ta sẽ để server01 có priority cao hơn để làm default primary.
2.1 Replica set mà không access control
Step1: Enable replication on MongoDB
Trên 03 server mà cài đặt MongoDB, thêm nội dung sau vào tệp tin cấu hình mongod.conf để enable replication với tên replica set id là: mongo_rep
cat >>/etc/mongod.conf /etc/hosts >/etc/mongod.conf