Hướng Dẫn Thiết Lập MongoDB Replica Set và Virtual IP

0 0 0

Người đăng: TruongItt

Theo Viblo Asia

Bài viết này hướng dẫn bạn cách thiết lập một cụm MongoDB replica set và cấu hình virtual IP với Keepalived để đảm bảo tính sẵn sàng cao. Hãy cùng thực hiện các bước dưới đây!

1. Chuẩn bị môi trường

Cài đặt các công cụ mạng cần thiết:

  • Hệ điều hành: Ubuntu 22.04
  • Máy chủ:
    • core-1: 192.168.65.11 (Leader)
    • core-2: 192.168.65.12 (Replica)
    • core-3: 192.168.65.13 (Replica)
apt install -y net-tools telnet traceroute

2. Cài đặt MongoDB

Thực hiện các lệnh sau để cài đặt MongoDB phiên bản 8.0 cả 3 server:

wget -qO- https://www.mongodb.org/static/pgp/server-8.0.asc | sudo tee /etc/apt/trusted.gpg.d/server-8.0.asc
sudo apt-get install gnupg
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
echo "deb http://security.ubuntu.com/ubuntu focal-security main" | sudo tee /etc/apt/sources.list.d/focal-security.list
sudo apt-get update
sudo apt-get install libssl1.1
sudo apt-get install -y mongodb-mongosh
mongosh --version
sudo apt install mongodb-org -y
sudo apt update

Khởi động và kiểm tra dịch vụ MongoDB:

systemctl start mongod
systemctl enable mongod
systemctl status mongod

start mongo complete

Kiểm tra IP của MongoDB:

netstat -tlpun

change host default

Thay đổi cấu hình để cho phép kết nối từ mọi server:

vi /etc/mongod.conf

Thay 127.0.0.1 bằng 0.0.0.0 trong phần bind IP, sau đó khởi động lại:

systemctl restart mongod

change host default mongo

Kiểm tra kết nối sau khi thay đổi:

telnet 192.168.65.11 27017 # Ping từ server khác

accept host mongo

3. Cấu hình Replica Set

Cấu hình replication trên core 1 tệp /etc/mongod.conf:

replication: replSetName: "mongo_truongitt"

Khởi tạo replica set trong mongosh:

rs.initiate( { _id: "mongo_truongitt", members: [ { _id: 0, host: "core-1:27017" }, { _id: 1, host: "core-2:27017" }, { _id: 2, host: "core-3:27017" } ] }
)

Kiểm tra trạng thái:

rs.status()
rs.isMaster()

config mongo replica status success

Tạo database và collection để kiểm tra:

use truongitt
db.hihi.insertOne({"name":"truongitt"})
show collections
db.hihi.find().pretty()
show dbs

Điều chỉnh độ ưu tiên cho các node:

cfg = rs.conf()
cfg.members[0].priority = 100
cfg.members[1].priority = 90
cfg.members[2].priority = 80
rs.reconfig(cfg)
rs.conf()

change prioriry mongo cluster

4. Cấu hình Virtual IP với Keepalived

Cài đặt Keepalived trên 3 server:

sudo apt install -y keepalived

Cấu hình tệp /etc/keepalived/keepalived.conf trên server 1 (MASTER):

vrrp_instance VI_1 { state MASTER # Sử dụng BACKUP cho server 2 và 3 interface ens33 virtual_router_id 51 priority 100 # Sử dụng 90 và 80 cho server 2 và 3 advert_int 1 authentication { auth_type PASS auth_pass password } virtual_ipaddress { 192.168.65.14 }
}

Khởi động lại dịch vụ:

systemctl restart keepalived

Kiểm tra kết nối qua virtual IP và trạng thái master:

mongosh "mongodb://192.168.65.14:27017"
rs.status()

connect mongo by virtual ip

5. Kiểm tra Failover

Tắt server 1 để kiểm tra failover:

root@core-1:~# reboot

Kết nối từ server 2 qua virtual IP:

root@core-2:~# mongosh "mongodb://192.168.65.14:27017"
Current Mongosh Log ID: 685968d19fc5189ac5baa8b8
Connecting to: mongodb://192.168.65.14:27017/?directConnection=true&appName=mongosh+2.5.3
Using MongoDB: 8.0.10
Using Mongosh: 2.5.3
mongo_truongitt [direct: primary] test>

Vẩn giữ kết nối đến primary cả virtual ip và mongo: success virtual ip

6. Xóa và làm sạch MongoDB (nếu cần)

Để xóa MongoDB và dữ liệu:

sudo apt-get purge -y mongodb-org* mongodb-mongosh* mongosh*
sudo apt-get autoremove -y
sudo apt-get clean
sudo rm -f /usr/bin/mongosh
sudo rm -rf /var/lib/mongodb
sudo rm -rf /var/log/mongodb
sudo rm -rf /etc/mongod.conf /etc/mongosh.conf

7. Hoàn thành

Chúc mừng bạn Với mô hình này, bạn đã thiết lập thành công một cụm MongoDB replica set với virtual IP tự động phát hiện master. Mô hình này phù hợp cho các ứng dụng yêu cầu tính sẵn sàng cao và khả năng phục hồi tự động khi có sự cố. Hãy tiếp tục tối ưu hóa và giám sát hệ thống để đảm bảo hiệu suất ổn định !!!

Bình luận

Bài viết tương tự

- vừa được xem lúc

TÌM HIỂU VỀ MONGODB

. 1. Định nghĩa về MongoDB. . MongoDB là một cơ sở dữ liệu mã nguồn mở và là cơ sở dữ liệu NoSQL(*) hàng đầu, được hàng triệu người sử dụng.

0 0 58

- vừa được xem lúc

Mongo DB cho người mới bắt đầu !

Lời nói đầu. Gần đây, mình mới bắt đầu nghiên cứu và sử dụng mongo db nên có chút kiến thức cơ bản về Mongo muốn share và note ra đây coi như để nhở (Biết đâu sẽ có ích cho ai đó).

0 0 43

- vừa được xem lúc

Áp dụng kiến trúc 3 Layer Architecture vào project NodeJS

The problem encountered. Các framework nodejs phổ biết như Express cho phép chúng ta dễ dàng tạo ra Resful API xử lí các request từ phía client một cách nhanh chóng và linh hoạt.

0 0 92

- vừa được xem lúc

Mongo DB cho người mới bắt đầu ! (P2)

Lời nói đầu. Gần đây, mình mới bắt đầu nghiên cứu và sử dụng mongo db nên có chút kiến thức cơ bản về Mongo muốn share và note ra đây coi như để nhở (Biết đâu sẽ có ích cho ai đó).

0 0 189

- vừa được xem lúc

Xây dựng CRUD RESTful API sử dụng Node, Express, MongoDB.

Introduction. Trong phạm vi bài viết này chúng ta sẽ cùng tìm hiểu về cách tạo restful api với Node, Express và MongoDB. . Xử lý các hoạt động crud.

0 0 235

- vừa được xem lúc

MongoDB là gì? Cơ sở dữ liệu phi quan hệ

Bài viết này mình sẽ giúp các bạn có cái nhìn tổng quan về MongoDB. Chúng ta không lạ gì với cơ sở dữ liệu quan hệ, còn với cơ sở dữ liệu phi quan hệ thì sao? MEAN stack (MongoDB, Express, AngularJS,

0 0 64