Hướng dẫn master-slave mongodb - chủ-nô mongodb

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, “Secondarymongodb 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″]

Hướng dẫn master-slave mongodb - chủ-nô mongodb

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=https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://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
2

Bướ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
7

switched 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=https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
1
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://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=https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://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=https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
5
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
6
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://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=https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
8
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://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/mongo
0
sudo yum install -y mongodb-org
mkdir -p /opt/mongo & cd /opt/mongo
1

+ 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/mongo
2
sudo yum install -y mongodb-org
mkdir -p /opt/mongo & cd /opt/mongo
3
sudo yum install -y mongodb-org
mkdir -p /opt/mongo & cd /opt/mongo
4
sudo yum install -y mongodb-org
mkdir -p /opt/mongo & cd /opt/mongo
5

+ 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/mongo
6
sudo yum install -y mongodb-org
mkdir -p /opt/mongo & cd /opt/mongo
7

+ 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/mongo
8

+ 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/mongo
9
mkdir db; mkdir log; chown mongod:mongod log db
0
mkdir 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
2

Ví 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
3
mkdir db; mkdir log; chown mongod:mongod log db
4
mkdir 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=https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
6
mkdir db; mkdir log; chown mongod:mongod log db
8
mkdir 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
0
vi /etc/hosts  //Add thêm 3 dòng sau
1
vi /etc/hosts  //Add thêm 3 dòng sau
2

Kiểm tra

vi /etc/hosts  //Add thêm 3 dòng sau
3
vi /etc/hosts  //Add thêm 3 dòng sau
4
vi /etc/hosts  //Add thêm 3 dòng sau
5
vi /etc/hosts  //Add thêm 3 dòng sau
6
vi /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=https://repo.mongodb.org/yum/redhat/6/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
6
10.128.0.2 mongo1
10.128.0.3 mongo2
10.128.0.4 mongo3
0
10.128.0.2 mongo1
10.128.0.3 mongo2
10.128.0.4 mongo3
1

– Kiểm tra account superuser

10.128.0.2 mongo1
10.128.0.3 mongo2
10.128.0.4 mongo3
2
10.128.0.2 mongo1
10.128.0.3 mongo2
10.128.0.4 mongo3
3
10.128.0.2 mongo1
10.128.0.3 mongo2
10.128.0.4 mongo3
4

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:828 828