MongoDB replica set dữ liệu sẽ được đồng bộ giữa “Primary” và các “Secondary” mongodb server. “Primary” member của replica set có thể đọc và ghi dữ liệu trong khi “Secondary” members chỉ có thể đọc dữ liệu. Khi “Primary” hang/down, “Secondary” mongodb sẽ tự động chuyển thành “Primary” giúp hệ thống chịu lỗi và có tính sẵn sàng cao. replica set dữ liệu sẽ được đồng bộ giữa “Primary” và các “Secondary” mongodb server. “Primary” member của replica set có thể đọc và ghi dữ liệu trong khi “Secondary” members chỉ có thể đọc dữ liệu. Khi “Primary”
hang/down, “Secondary” mongodb sẽ tự động chuyển thành “Primary” giúp hệ thống chịu lỗi và có tính sẵn sàng cao. [section label=”1″]
Mô hình: Replica Set Cluster trên MongodbReplica Set Cluster trên Mongodb
Chuẩn bị
– Hệ điều hành CentOS7, MongoDB version 3.6, SELinux=disabled, Stop Firewalld service.CentOS 7, MongoDB version 3.6, SELinux=disabled, Stop Firewalld service.
Máy 1: 10.128.0.2 mongo1 : 10.128.0.2 mongo1
Máy 2: 10.128.0.3 mongo2 : 10.128.0.3 mongo2
Máy 3: 10.128.0.4 mongo3: 10.128.0.4 mongo3
ln -sf /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
Bước 1. Cài đặt mongodb và tạo thư mục chứa dữ liệu và logMongoDB MongoDB
+ Thực hiện trên cả 3 mongodb server .Tham khảo bài viết trước mongodb server .Tham khảo bài viết trước
vi /etc/yum.repos.d/mongodb-org-3.6.repo
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=//repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=//www.mongodb.org/static/pgp/server-3.6.asc
sudo yum install -y mongodb-org mkdir -p /opt/mongo & cd /opt/mongo
mkdir db; mkdir log; chown mongod:mongod log db
+ Cấu hình map tĩnh ip address và hostname trên 3 mongodb servermongodb server
vi /etc/hosts //Add thêm 3 dòng sau
10.128.0.2 mongo1 10.128.0.3 mongo2 10.128.0.4 mongo3
Bước 2: Cấu hình file mongod.conf
+ Trên server mongodb1mongodb1
[[email protected] ~]# vi /etc/mongod.conf
# mongod.conf # where to write logging data.systemLog: destination: file logAppend: true path: /opt/mongo/log/mongod.log # Where and how to store data.storage: dbPath: /opt/mongo/db journal: enabled: true # how the process runsprocessManagement: fork: true # fork and run in background pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile # network interfaces net: port: 27017 bindIp: 0.0.0.0 #replication: replication: oplogSizeMB: 1 replSetName: "mongo_rs"
Trên server mongo2 :mongo2 :
vi /etc/mongod.conf
vi /etc/yum.repos.d/mongodb-org-3.6.repo
0+ Trên Server mongo3 :mongo3 :
vi /etc/yum.repos.d/mongodb-org-3.6.repo
1 vi /etc/yum.repos.d/mongodb-org-3.6.repo
2Bước 3.Khởi tạo mongodb replica set cluster
+ Khởi động lại dịch vụ mongod trên cả 3 servers
vi /etc/yum.repos.d/mongodb-org-3.6.repo
3 vi /etc/yum.repos.d/mongodb-org-3.6.repo
4+ Khởi tạo mongodb replica set trên mongodb1 server [ primary]mongodb1 server [ primary]
vi /etc/yum.repos.d/mongodb-org-3.6.repo
5 vi /etc/yum.repos.d/mongodb-org-3.6.repo
6+ Tạo database “people” và collection “employees” trên mongodb1 [primary]mongodb1 [primary]
vi /etc/yum.repos.d/mongodb-org-3.6.repo
7switched to db people
vi /etc/yum.repos.d/mongodb-org-3.6.repo
8 vi /etc/yum.repos.d/mongodb-org-3.6.repo
9+ Kiểm tra đồng bộ dữ liệu trên mongodb2 & mongodb3 [ secondary ]mongodb2 & mongodb3 [ secondary ]
vi /etc/yum.repos.d/mongodb-org-3.6.repo
5[mongodb-org-3.6]
name=MongoDB Repository
baseurl=//repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=//www.mongodb.org/static/pgp/server-3.6.asc
1[mongodb-org-3.6]
name=MongoDB Repository
baseurl=//repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=//www.mongodb.org/static/pgp/server-3.6.asc
2+ Kiểm tra khả năng chịu lỗi bằng cách kill -9 process_mongodb_id trên primary [mongodb1] và kiểm tra khả năng replica set trên mongodb2 & mongodb3Kiểm tra khả năng chịu lỗi bằng cách kill -9 process_mongodb_id trên primary [mongodb1] và kiểm tra khả năng replica set trên mongodb2 & mongodb3
+ Kiểm tra khả năng failover trên mongodb2. Khi mongodb1 down, lúc này mongodb2 với priority: 2 sẽ tự động chuyển từ secondary thành primary có khả năng đọc+ghi dữ liệuKiểm tra khả năng failover trên mongodb2. Khi mongodb1 down, lúc này mongodb2 với priority: 2 sẽ tự động chuyển từ secondary thành primary có khả năng đọc+ghi dữ liệu
vi /etc/yum.repos.d/mongodb-org-3.6.repo
5[mongodb-org-3.6]
name=MongoDB Repository
baseurl=//repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=//www.mongodb.org/static/pgp/server-3.6.asc
4+ Khi mongo1 up lại với priority = 3, lớn nhất trong 3 mongo server sẽ tự động đảm nhiệm vai trò “Primary” từ mongo2mongo1 up lại với priority = 3, lớn nhất trong 3 mongo server sẽ tự động đảm nhiệm vai trò “Primary” từ mongo2
Bước 4: Cấu hình enable Security Authentication trong mongodb replica set
+ Khi enable authentication trong replica set hoặc sharded cluster, các members trong replica set hoặc sharded clusters phải cung cấp keyfile chứa chứng thực. Chúng ta phải enable authentication trên mỗi member server. Sau đây chúng ta sẽ sử dụng keyfile để authentication trên members của MongoDB replica set.MongoDB replica set.
+ Bước 4.1: Creating the users “admin” trên database “admin” có role: userAdminAnyDatabase có quyền quản lý tạo, xóa, sửa các users khác: Creating the users “admin” trên database “admin” có role: userAdminAnyDatabase có quyền quản lý tạo, xóa, sửa các users khác
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=//repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=//www.mongodb.org/static/pgp/server-3.6.asc
5[mongodb-org-3.6]
name=MongoDB Repository
baseurl=//repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=//www.mongodb.org/static/pgp/server-3.6.asc
6[mongodb-org-3.6]
name=MongoDB Repository
baseurl=//repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=//www.mongodb.org/static/pgp/server-3.6.asc
7– Kiểm tra xem user được tạo có thể authen chưa
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=//repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=//www.mongodb.org/static/pgp/server-3.6.asc
8[mongodb-org-3.6]
name=MongoDB Repository
baseurl=//repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=//www.mongodb.org/static/pgp/server-3.6.asc
9– Enable authentication trong file mongod.confmongod.conf
sudo yum install -y mongodb-org mkdir -p /opt/mongo & cd /opt/mongo0
sudo yum install -y mongodb-org mkdir -p /opt/mongo & cd /opt/mongo1
+ Bước 4.2: Tạo keyfile trên primary server và copy keyfile sang toàn bộ secondary server: Tạo keyfile trên primary server và copy keyfile sang toàn bộ secondary server
sudo yum install -y mongodb-org mkdir -p /opt/mongo & cd /opt/mongo2
sudo yum install -y mongodb-org mkdir -p /opt/mongo & cd /opt/mongo3
sudo yum install -y mongodb-org mkdir -p /opt/mongo & cd /opt/mongo4
sudo yum install -y mongodb-org mkdir -p /opt/mongo & cd /opt/mongo5
+ Bước 4.3: Enable authentication và replication trên mỗi member của replica set hoặc sharded cluster: Enable authentication và replication trên mỗi member của replica set hoặc sharded cluster
sudo yum install -y mongodb-org mkdir -p /opt/mongo & cd /opt/mongo6
sudo yum install -y mongodb-org mkdir -p /opt/mongo & cd /opt/mongo7
+ Bước 4.4: Khởi động mongod service trên cả 3 server Khởi động mongod service trên cả 3 server
sudo yum install -y mongodb-org mkdir -p /opt/mongo & cd /opt/mongo8
+ Bước 4.5: Tạo các user khác có quyền quản lý trên từng database của mình: Tạo các user khác có quyền quản lý trên từng database của mình
– Chứng thực bằng user “admin” tạo bên trênadmin” tạo bên trên
sudo yum install -y mongodb-org mkdir -p /opt/mongo & cd /opt/mongo9
mkdir db; mkdir log; chown mongod:mongod log db
0mkdir db; mkdir log; chown mongod:mongod log db
1– Tạo các users với role “dbOwner” trên từng databasedbOwner” trên từng database
mkdir db; mkdir log; chown mongod:mongod log db
2Ví dụ: Tạo user “people” có role “dbOwner” trên “people” DB Tạo user “people” có role “dbOwner” trên “people” DB
mkdir db; mkdir log; chown mongod:mongod log db
3mkdir db; mkdir log; chown mongod:mongod log db
4mkdir db; mkdir log; chown mongod:mongod log db
5– Kiểm tra lại các account vừa tạo
mkdir db; mkdir log; chown mongod:mongod log db
6[mongodb-org-3.6]
name=MongoDB Repository
baseurl=//repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=//www.mongodb.org/static/pgp/server-3.6.asc
6mkdir db; mkdir log; chown mongod:mongod log db
8mkdir db; mkdir log; chown mongod:mongod log db
9– Kết nối tới database “people” bằng account “people” vừa tạo ở trên
vi /etc/hosts //Add thêm 3 dòng sau
0vi /etc/hosts //Add thêm 3 dòng sau
1vi /etc/hosts //Add thêm 3 dòng sau
2Kiểm tra
vi /etc/hosts //Add thêm 3 dòng sau
3vi /etc/hosts //Add thêm 3 dòng sau
4vi /etc/hosts //Add thêm 3 dòng sau
5vi /etc/hosts //Add thêm 3 dòng sau
6vi /etc/hosts //Add thêm 3 dòng sau
7– Tạo superuser có full permission
mkdir db; mkdir log; chown mongod:mongod log db
6[mongodb-org-3.6]
name=MongoDB Repository
baseurl=//repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=//www.mongodb.org/static/pgp/server-3.6.asc
610.128.0.2 mongo1 10.128.0.3 mongo2 10.128.0.4 mongo30
10.128.0.2 mongo1 10.128.0.3 mongo2 10.128.0.4 mongo31
– Kiểm tra account superuser
10.128.0.2 mongo1 10.128.0.3 mongo2 10.128.0.4 mongo32
10.128.0.2 mongo1 10.128.0.3 mongo2 10.128.0.4 mongo33
10.128.0.2 mongo1 10.128.0.3 mongo2 10.128.0.4 mongo34
Như vậy, qua bài lab này mình đã hướng dẫn các bạn xây dựng được một hệ thống Master slave trong Mongo.Master slave trong Mongo.
Chúc các bạn thành công!
Tham khảo: How to install a mongo cluster with 3 replica set: How to install a mongo cluster with 3 replica set
[/section]
Lượt xem:782 782