Xin chào mọi người, mình tham gia diễn đàn cũng được 1 thời gian ngắn thôi nhưng đã nhận được rất nhiều kiến thức từ các anh chị trong diễn đàn. Những câu hỏi mình đưa ra đều được mọi người giải đáp, mình rất cảm kích điều ấy . Sau một thời gian chỉ biết đặt câu hỏi ^^, thì nay mình xin gởi đến mọi người một bài viết về hệ thống mình mà mình mới thực hiện xong. Đó là hệ thống HA Load Balancer Mysql Cluster (đây là hệ thống tổng hợp nên mình cũng đặt tên tổng hợp như vậy ), mình chỉ mới chạy demo trên local nên không dám chắc là có thể áp dụng thực tế được không, nên xin mọi người góp ý thêm cho mình ^^
Để thực hiện được hệ thống này, mình xin gởi lời cảm ơn sâu sắc đến anh quanta, nhờ những giải đáp của anh mà em mới hoàn thành được.
Mô hình như sau:
Dữ liệu được lưu tại các Storage Node (2 Storage được đồng bộ hoá dữ liệu), 2 SQL Node có chỉ có nhiệm vụ xử lý các câu lệnh SQL và lấy dữ liệu từ Storage Node để trả về. Tất nhiên do lấy chung 1 nguồn data nên 2 SQL Node đều được đồng bộ hoá dữ liệu. Quản lý phần này thuộc về Manager Node.
Mình xin chia bài viết thành 3 phần cho mọi người dễ theo dõi.
Xây Dựng Hệ Thống HA Load Balancer Mysql Cluster
Phần 1:
Xây dựng hệ thống Mysql Cluster
Phần 2:
Xây dựng hệ thống Load Balancer cho Mysql Cluster
Phần 3:
HA cho hệ thống Load Balancer
----------------------------------------------------------------------------------------------------------------------
PHẦN 1: XÂY DỰNG HỆ THỐNG MYSQL CLUSTER
Chuẩn bị:
Đầu tiên các bạn cần download file mysql-cluster-gpl-x.x.xx-linux-x86_64-glibc23.tar.gz tại http://dev.mysql.com/downloads/cluster/7.1.html#downloads
Các bạn cần chuẩn bị 5 server (mình thực hiện trên Ubuntu) sau:
Code:
192.168.2.52 là Manager Node
192.168.2.53 là SQL Node (hostname: server01)
192.168.2.54 là SQL Node (hostname: server02)
192.168.2.55 là Storage Node
192.168.2.56 là Storage Node
Chuyển qua quyền root
Step 1: Đầu tiên cấu hình trên manager node
Copy file mysql cluster vào folder /usr/local
Thực hiện lệnh:
Code:
groupadd mysql
useradd -g mysql mysql
Code:
cd /usr/local
tar -zxvf mysql-cluster-gpl-7.1.24-linux-x86_64-glibc23.tar.gz
ln -s mysql-cluster-gpl-7.1.14-linux-i686-glibc23 mysql-cluster
cd mysql-cluster
chown -R mysql:mysql /usr/local/mysql-cluster/
mkdir -p /var/lib/mysql-mgmd-config-cache
mkdir -p /var/lib/mysql-mgmd-data
Tạo file khai báo các thông tin Manager, SQL và Storage Node
Code:
cat >> /var/lib/mysql-mgmd-data/config.ini << EOF
[ndbd default]
NoOfReplicas = 2
DataDir= /var/lib/mysql-ndb-data
DataMemory = 64M
IndexMemory = 128M
[ndb_mgmd]
# Management process options:
DataDir = /var/lib/mysql-mgmd-data
PortNumber = 2205
HostName = 192.168.2.52
[ndbd]
# Options for data node ndb1
hostname = 192.168.2.55
[ndbd]
# Options for data node ndb2
hostname = 192.168.2.56
[mysqld]
# SQL node options for dbsrv3
hostname = 192.168.2.53
[mysqld]
# SQL node options for dbsrv4
hostname = 192.168.2.54
EOF
Code:
cd /usr/local/mysql-cluster/bin
Thực hiện lệnh sau để khởi động Manager Node
Code:
./ndb_mgmd --initial --configdir=/var/lib/mysql-mgmd-config-cache --config-file=/var/lib/mysql-mgmd-data/config.ini
Hiện thông báo như hình dưới là bạn đã tạo Manager Node thành công
Step 2: Cấu hình Storage Node
Copy file mysql cluster vào folder /usr/local
Thực hiện lệnh sau
Code:
groupadd mysql
useradd -g mysql mysql
Code:
cd /usr/local
tar -zxvf mysql-cluster-gpl-7.1.24-linux-x86_64-glibc23.tar.gz
ln -s mysql-cluster-gpl-7.1.14-linux-i686-glibc23 mysql-cluster
Code:
cd mysql-cluster
chown -R mysql:mysql /usr/local/mysql-cluster/
Thực hiện lệnh kết nối tới Manager Node
Code:
scripts/mysql_install_db --user=mysql --datadir=/var/lib/mysql-ndb-data
bin/ndbd --ndb-connectstring=192.168.2.52:2205
Thấy xuất hiện như thế này là đã connect thành công
Lập lại lệnh trên đối với các node data còn lại
Xong thì bạn login vô manager node để kiểm tra xem các data node này đã kết nối hay chưa
Code:
cd /usr/local/mysql-cluster
bin/ndb_mgm --ndb-connectstring=192.168.2.52:2205
show
Step 3: Cấu hình cho các SQL Node
Copy file mysql cluster vào folder /usr/local
Thực hiện các lệnh sau:
Code:
groupadd mysql
useradd -g mysql mysql
Code:
cd /usr/local
tar -zxvf mysql-cluster-gpl-7.1.24-linux-x86_64-glibc23.tar.gz
ln -s mysql-cluster-gpl-7.1.14-linux-i686-glibc23 mysql-cluster
cd mysql-cluster
chown -R mysql:mysql /usr/local/mysql-cluster/
Code:
scripts/mysql_install_db --user=mysql --datadir=/var/lib/mysql-node-data --basedir=/usr/local/mysql-cluster
Code:
Định nghĩa file kết nối Manager Node
Code:
cat >> /etc/mysqld-cluster.cf <<EOF
[mysqld]
ndbcluster
ndb-connectstring=192.168.2.52:2205
EOF
Thực hiện lệnh kết nối tới Manager Node
Code:
bin/mysqld_safe --defaults-extra-file=/etc/mysqld-cluster.cf --user=mysql --datadir=/var/lib/mysql-node-data --basedir=/usr/local/mysql-cluster &
Xong thì bạn login vô manager node để kiểm tra xem các sql node này đã kết nối hay chưa
Hiện như hình dưới là ok
*. Cấu hình password cho mysql server
Code:
/usr/local/mysql-cluster# bin/mysqladmin -u root password 'PaSSw0rd'
*. Đăng nhập
Code:
root@ubuntu:/usr/local/mysql-cluster# bin/mysql -u root -p
*. Shutdown sql node an toàn
Code:
root@ubuntu:/usr/local/mysql-cluster# ./bin/mysqladmin -u root -pPaSSw0rd shutdown
Lưu ý: để có thể đồng bộ hóa các bảng giữa 2 SQL Node thì tất cả các table phải thay đổi engine từ MyISAM hay InoDB sang engine NDBCLUSTER. Thao tác này có thể sử dụng lệnh alter table.
alter table tên_bảng engine=ndbcluster;
Ví dụ 1 câu lệnh tạo bảng mẫu:
create table mytable(col1 int not null primary key auto_increment, col2 varchar(100))engine=NDBCLUSTER;
Hết phần 1
Mình mới viết bài lần đầu, nên có gì sai và thiếu sót mong mọi người nhắc nhở>