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
Kiểm tra IP của MongoDB:
netstat -tlpun
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
Kiểm tra kết nối sau khi thay đổi:
telnet 192.168.65.11 27017 # Ping từ server khác
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()
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()
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()
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:
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 !!!