0

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

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 !!!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí