Hướng Dẫn Cài Đặt MongoDB Shard

Chào Mọi Người.

Hôm nay mình sẽ hướng dẫn mọi người cài đặt MongoDB Sharded Cluster cho MongoDB trên CentOS 7.

MongoDB Sharded Cluster là giải pháp Scaling Out trên MongoDB giúp tăng số máy chủ để giải bài toán mở rộng khi dung lượng của database được tăng lên.  Dữ liệu thay vì chỉ được ghi trên một máy chủ hoặc một Replica Set thì dữ liệu sẽ ghi phân tán trên toàn bộ các Shard, khiến cho tốc độ truy xuất dữ liệu nhanh hơn.

Một hệ thống MongoDB Sharded Cluster sẽ gồm có những thành phần sau :

  • Shard : Shard được sử dụng để chứa dữ liệu, mỗi Shard sẽ là một Replica Sets.
  • Mongos :  Được sử dụng như là Query Router, dùng để điều hướng truy cập đến chính xác Shard đang chứa dữ liệu, mỗi Shard Cluster có thể có nhiều Mongos.
  • Config Server : Là các Server được dùng để chứa meta data và cấu hình của Cluster. Config Server là một Replica Sets.

Cài Đặt.

Chuẩn bị.

Ở đây do là cấu hình mô hình demo nên mình chỉ sử dụng 3 VPS.

  • Tất cả 3 VPS này đều được cài đặt CentOS 7 với MongoDB v4.2.3
  • Tài khoản Root của 3 VPS.

Cài Đặt.

Đầu tiên để chuẩn bị thì ta sẽ cấu hình file hosts tại /etc/hosts trên toàn bộ VPS để việc cấu hình truy cập sẽ dễ dàng hơn.

Nội dung của file hosts sẽ là địa chỉ IP local của 3 VPS cùng với hostname tương ứng.

Tới đây ta sẽ tiến hành bắt đầu cấu hình các thành phần của Mongo Shard.

Cấu hình Config Server.

Tiến hành chỉnh sửa lại file mongod.conf với nội dung như sau:

  • Mục Bind Ip : ta sẽ thêm IP local của VPS ta đang cấu hình cho phép Mongo lắng nghe trên IP local.
  • Mục Replication : ta sẽ thêm dòng ( retSetName: “tên của replica set” ) để tiến hành cấu hình Replica Set.
  • Mục Shard : ta sẽ thêm dòng  ( clusterRole : configsvr ) để cấu hình chức năng của VPS này trên Shard Cluster.

vi /etc/mongod.conf

Sau khi hoàn tất bước trên, tiến hành khởi động MongoDB.

systemctl start mongod

Tiếp theo tiến hành truy cập vào MongoDB để cấu hình Replica Set cho VPS này.

mongo --host config

rs.initiate({_id: "replconfig", members:[{_id:1, host: "config:27017", priority:3}]})

Trong đó  mục “Id “là tên của Replica Set, member là tên của các Mongo thuộc Replica Set đó.

Sau đó có thể xem lại các member của replica set bằng câu lệnh sau :

rs.status()

Mọi người có thể tham khảo bài viết cấu hình MongoDB Replica Set tại đường link này.

Cấu hình Shard Server.

Tương tự với với cấu hình Config Server, ta sẽ tiến hành chỉnh sửa lại file mongod.conf với nội dung như sau:

  • Mục Bind Ip : ta sẽ thêm IP local của VPS ta đang cấu hình cho phép Mongo lắng nghe trên IP local.
  • Mục Replication : ta sẽ thêm dòng ( retSetName: “tên của replica set” ) để tiến hành cấu hình Replica Set.
  • Mục Shard : ta sẽ thêm dòng  ( clusterRole : shardsvr ) để cấu hình chức năng của VPS này trên Shard Cluster.

Tiến hành cấu hình Replica Set.

rs.initiate({_id: "shardreplica", members:[{_id:1, host: "shard:27017", priority:3}]})

Cấu hình Mongos.

Khác với cấu hình Config và Shard Cluster ở cấu hình file /etc/mongod.conf Mongos ta sẽ comment lại block storage, không tiến hành cấu hình Replica Set mà chỉ tiến hành cấu hình Sharding với nội dung “configDB : connectstring của Config Server”.

vi /etc/mongod.conf

Khác với việc khởi động MongoDB tại Config Cluster và Shard Cluster, ở  Mongos ta sẽ khởi động bằng cầu lệnh sau:

mongos --config /etc/mongod.conf

Sau đó tiến hành truy cập vào MongoDB và thêm Shard Cluster bằng các câu lệnh sau :

mongo --host mongos

sh.addShard( "shardreplica/shard:27017")

Như vậy, tới đây việc cấu hình MongoDB Shard Cluster đã hoàn tất.

Ta có thể thể test lại như sau :

Tạo một database với tên demo và enable Shard cho database này.

sh.enableSharding("demo")

Tiến hành enable Shard Collection cho database demo với collection “stacklamp”  và shard key là “test1”.

sh.shardCollection("demo.stacklamp, {"test1":1})

Tạo nội dung cho Colletion “stacklamp”.

db.stacklamp.save({
"test1": "LEMP STACK",
"apps": ["Linux", "Nginx", "MySQL", "PHP"],
})

Tiến hành truy cập vào Shard Cluster để kiểm tra lại.

Bài viết của mình về cấu hình MongoDB Shard dựa theo kinh nghiệm và tìm hiểu tới đây là hết, cảm ơn mọi người đã theo dõi.

Tài Liệu Tham Khảo.

https://docs.mongodb.com/manual/tutorial/deploy-shard-cluster/

https://www.howtoforge.com/tutorial/deploying-mongodb-sharded-cluster-on-centos-7/

Tagged:

Rate This Article