Bài viết này hướng dẫn bạn cách thiết lập một cụm MariaDB sử dụng Galera để đảm bảo tính sẵn sàng cao và tích hợp MaxScale để quản lý tải và giám sát. Hãy 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 và cấu hình MariaDB với Galera
Tham khảo tài liệu cài đặt: MariaDB Installation.
Cài đặt MariaDB và các gói cần thiết:
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
Kiểm tra thư mục cấu hình MariaDB:
ls /etc/mysql
Tạo và chỉnh sửa tệp cấu hình Galera tại /etc/mysql/conf.d/gelara.cnf
:
vi /etc/mysql/conf.d/gelara.cnf
Thêm nội dung sau:
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0 # Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so # Cluster Configuration
wsrep_cluster_name="mariadb-cluster-devopseduvn"
wsrep_cluster_address="gcomm://192.168.65.11,192.168.65.12,192.168.65.13" # Galera Synchronization Configuration
wsrep_sst_method=rsync # Node Configuration
wsrep_node_address="192.168.65.11" # 192.168.65.12 cho server 2, 192.168.65.13 cho server 3
wsrep_node_name="core-1" # core-2 cho server 2, core-3 cho server 3
Khởi tạo cụm trên server 1:
galera_new_cluster
Kiểm tra kích thước cụm:
mysql -u root -e "show status like 'wsrep_cluster_size'"
Khởi động lại dịch vụ trên server 2 và 3:
systemctl restart mariadb
Kết quả:
Tạo database và bảng để kiểm tra:
mysql
create database truongitt;
use truongitt;
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO users (username, email) VALUES ('admin', 'admin@example.com');
3. Cấu hình quyền truy cập
Chỉnh sửa tệp /etc/mysql/mariadb.conf.d/50-server.cnf
:
vi /etc/mysql/mariadb.conf.d/50-server.cnf
thay đổi host: 127.0.0.1 thành 0.0.0.0
Khởi động lại dịch vụ:
systemctl restart mariadb
Tạo user và cấp quyền:
create user 'truongitt'@'%' identified by 'truongitt123';
GRANT REPLICATION CLIENT ON *.* TO 'truongitt'@'%';
GRANT REPLICATION SLAVE ADMIN ON *.* TO 'truongitt'@'%';
GRANT REPLICA MONITOR ON *.* TO 'truongitt'@'%';
FLUSH PRIVILEGES;
4. Cài đặt và cấu hình MaxScale
Tải và cài đặt MaxScale:
wget https://dlm.mariadb.com/2344079/MaxScale/6.4.1/packages/ubuntu/jammy/x86_64/maxscale-6.4.1-1.ubuntu.jammy.x86_64.deb
dpkg -i maxscale-6.4.1-1.ubuntu.jammy.x86_64.deb
cp /etc/maxscale.cnf /etc/maxscale.cnf.org
Chỉnh sửa tệp /etc/maxscale.cnf
trên cả 3 server:
vi /etc/maxscale.cnf
Thêm nội dung sau:
[server1]
type=server
address=192.168.65.11
port=3306
protocol=MariaDBBackend [server2]
type=server
address=192.168.65.12
port=3306
protocol=MariaDBBackend [server3]
type=server
address=192.168.65.13
port=3306
protocol=MariaDBBackend [MariaDB-Monitor]
type=monitor
module=mariadbmon
servers=server1,server2,server3
user=truongitt
password=truongitt123
monitor_interval=2000 [Read-Only-Service]
type=service
router=readconnroute
servers=server1
user=truongitt
password=truongitt123
router_options=slave [Read-Write-Service]
type=service
router=readwritesplit
servers=server1,server2,server3
user=truongitt
password=truongitt123
Khởi động và kiểm tra trạng thái MaxScale:
systemctl start maxscale
systemctl status maxscale
Liệt kê trạng thái server:
maxctrl list servers
5. Kiểm tra Failover
Tắt server 2 để kiểm tra failover:
root@core-2:~# reboot
Kiểm tra trạng thái sau khi reboot:
┌─────────┬───────────────┬──────┬─────────────┬─────────────────┬──────┐
│ Server │ Address │ Port │ Connections │ State │ GTID │
├─────────┼───────────────┼──────┼─────────────┼─────────────────┼──────┤
│ server1 │ 192.168.65.11 │ 3306 │ 0 │ Running │ │
├─────────┼───────────────┼──────┼─────────────┼─────────────────┼──────┤
│ server2 │ 192.168.65.12 │ 3306 │ 0 │ Master, Running │ │
├─────────┼───────────────┼──────┼─────────────┼─────────────────┼──────┤
│ server3 │ 192.168.65.13 │ 3306 │ 0 │ Running │ │
└─────────┴───────────────┴──────┴─────────────┴─────────────────┴──────┘
6. Hoàn thành
Chúc mừng bạn hoàn thành cấu hình MariaDB Galera Cluster với MaxScale. Mô hình này cung cấp tính sẵn sàng cao nhờ replication Galera và cân bằng tải hiệu quả với MaxScale. Hãy tiếp tục giám sát và tối ưu hóa hệ thống để đảm bảo hiệu suất ổn định !!!