kilobai.comkilobai.com
Trang chủPhần mềmGiới thiệu
Đăng nhậpĐăng ký
kilobai.comkilobai.com

Blog chia sẻ kiến thức về công nghệ và phần mềm, cập nhật những thông tin và nội dung hữu ích cho người dùng.

Giới thiệuQuy địnhBảo mậtLiên hệ
© 2026 kilobai.com
Trang chủ
DevOps17 tháng 4, 20264 phút đọc9 lượt xem

Hướng dẫn thiết lập và kết nối MongoDB từ xa (Remote MongoDB)

Tác giả: Đoạn Mã Khách

Chưa có đánh giá

Đăng nhập để đánh giá bài viết

Hướng dẫn thiết lập và kết nối MongoDB từ xa (Remote MongoDB)

Trong nhiều hệ thống hiện đại—đặc biệt là các kiến trúc microservices—MongoDB thường được sử dụng như một lớp lưu trữ dữ liệu chính. Tuy nhiên, nếu bạn từng triển khai MongoDB trong môi trường production, bạn sẽ nhận ra một điều quan trọng:

Không nên chạy database chung server với ứng dụng.

Bài viết này sẽ giúp bạn đi từ tư duy kiến trúc đến cách triển khai thực tế để thiết lập một MongoDB server từ xa và kết nối tới nó một cách an toàn, ổn định.

Vì sao cần tách MongoDB ra server riêng?

Kể từ phiên bản 3.4, MongoDB sử dụng WiredTiger Storage Engine, vốn tiêu thụ RAM khá đáng kể. Cụ thể:

  • MongoDB sẽ sử dụng:

    • 50% RAM (sau khi trừ 1GB)

    • hoặc tối thiểu 256MB
      → lấy giá trị lớn hơn

Điều này có nghĩa là nếu bạn chạy MongoDB cùng server với backend/service, tài nguyên sẽ bị cạnh tranh rất mạnh, dễ gây nghẽn hệ thống.

Giải pháp chuẩn: dùng một server riêng (remote DB server) và để các service kết nối vào.

Tổng quan quy trình thiết lập

Để dựng một MongoDB server từ xa hoàn chỉnh, bạn sẽ đi qua các bước chính:

  1. Tạo server (EC2 hoặc bất kỳ cloud nào)

  2. Tạo user và phân quyền database

  3. Bật cơ chế authentication

  4. Mở port kết nối

  5. Test kết nối từ bên ngoài

1. Tạo server MongoDB

Bạn có thể dùng Amazon Web Services hoặc bất kỳ cloud nào tương tự.

Một số lưu ý quan trọng khi chọn cấu hình:

  • RAM phụ thuộc vào dung lượng dữ liệu

  • Một kinh nghiệm thực tế:

    • 16GB data → cần ~1GB RAM cho cache

    • → tổng RAM nên ít nhất 2GB

Sau khi tạo server:

  • SSH vào máy

  • Cài đặt MongoDB

2. Tạo user và phân quyền

MongoDB hỗ trợ phân quyền rất chi tiết. Bạn nên tách rõ:

User Admin (quyền toàn hệ thống)

use admin;

db.createUser({
  user: "admin",
  pwd: "yourpassword",
  roles: [
    { role: "userAdminAnyDatabase", db: "admin" },
    { role: "readWriteAnyDatabase", db: "admin" },
    { role: "dbAdminAnyDatabase", db: "admin" }
  ]
});

User này có thể:

  • Tạo user khác
    Quản lý toàn bộ database

User cho từng database (khuyến nghị)

db.createUser({
  user: "user1",
  pwd: "password",
  roles: [
    { role: "userAdmin", db: "sampledb" },
    { role: "dbAdmin", db: "sampledb" },
    { role: "readWrite", db: "sampledb" }
  ]
});

Best practice:

  • Mỗi database nên có user riêng
    Tránh dùng admin cho application

3. Bật authentication (bắt buộc trong production)

Mở file config:

sudo vim /etc/mongod.conf

Thêm:

security:
  authorization: enabled

Sau bước này:

  • MongoDB sẽ bắt buộc login bằng user
    Không còn truy cập tự do

4. Cho phép kết nối từ xa

Mặc định MongoDB chỉ cho phép localhost.

Bạn cần sửa:

net:
  port: 27017
  bindIp: 0.0.0.0

Ý nghĩa:

  • Cho phép kết nối từ mọi IP

Sau đó restart:

sudo service mongod restart

5. Mở port trên server

MongoDB dùng port mặc định:

27017

Bạn cần:

  • Mở port trong Security Group (AWS)
    Hoặc dùng iptables:

sudo iptables -A INPUT -p tcp --destination-port 27017 -j ACCEPT
sudo iptables -A OUTPUT -p tcp --source-port 27017 -j ACCEPT

6. Test kết nối từ máy local

Từ máy local:

mongo -u user1 -p password <server_ip>/sampledb

Nếu kết nối thành công → hệ thống đã hoạt động.

Một số lưu ý thực tế (quan trọng)

1. Không mở port public 100%

  • Tránh 0.0.0.0 + open toàn bộ internet
    Nên:

    • whitelist IP backend
      hoặc dùng VPN / private network

2. Lỗi kết nối thường gặp

Dù setup đúng, bạn vẫn có thể gặp lỗi từ driver:

  • Node.js → mongoose
    Python → pymongo
    Go → mgo

Nguyên nhân thường do:

  • connection string sai
    authSource thiếu
    network firewall

3. Production nên làm thêm

  • TLS / SSL cho MongoDB
    Replica Set (HA)
    Backup định kỳ
    Monitoring (Prometheus / Grafana)


Kết luận

Việc tách MongoDB ra thành một server riêng không chỉ là best practice mà gần như là bắt buộc nếu bạn muốn hệ thống:

  • ổn định
    dễ scale

  • dễ kiểm soát bảo mật

Một khi đã setup đúng từ đầu, bạn sẽ tránh được rất nhiều vấn đề về hiệu năng và vận hành sau này.

#mongodb#deploy
Đoạn Mã Khách

Đoạn Mã Khách

Co-Founder tại kilobai.com

Kết nối với mình qua
Tại hạ lập nên kilobai.com như một tàng thư các giữa chốn mạng hải mênh mông, ngày ngày chép lại những điều lĩnh ngộ được trong con đường công nghệ và lập trình. Khi thì là vài tuyệt kỹ khô khan khiến đầu óc quay cuồng, khi lại chỉ là mấy mẹo nhỏ nhặt nhưng hữu dụng bất ngờ. Ngoài ra, tại hạ cũng âm thầm sưu tầm và lưu giữ các “bí kíp” phần mềm, mong rằng ai hữu duyên ghé qua đều có thể tìm thấy thứ mình cần. Nếu có đôi lúc nơi này hơi bề bộn, xin chư vị rộng lòng bỏ qua — bởi suy cho cùng, đây chỉ là một góc nhỏ mà tại hạ đồng dựng nên, để cùng thiên hạ chia sẻ, học hỏi, và đôi khi… cười nhẹ một tiếng giữa dòng đời số hóa.

Bình luận (0)

Đăng nhập để bình luận và đánh giá. Chưa có tài khoản? Đăng ký

Chưa có bình luận nào. Hãy là người đầu tiên!

Nội dung