Giải Pháp  Giải Pháp Loadbalacing
 
Xây dựng một hệ thống MySQL Cluster
09:53 | 10/04/2010
Xin giới thiệu với các bạn về cách thiết lập hệ thống MySQL Cluster .
Ưu điểm của MySQL Cluster.
- Tính sẵn sàng cao.
- Hiệu suất tải khi hoạt động.

Mô hình tối thiểu yêu cầu bao gồm 4 node:

1 . 1 x MySQL mgm – quản lý và đồng bộ các data node và sql node
2 . 2 x sQL node – chạy service mysql để nhận các query.
3 . 2 x Data node- chứa dữ liệu – database.

Số lượng Data node tối thiểu 2 node.

Về phần cứng và phần mềm yêu cầu tùy thuộc vào ứng dụng và số lượng truy vấn . Đối với cấu hình P4 3GHZ ram 1GB cho 1 Data node có thể đáp ứng truy cập cho khoảng 200 000 người online cùng lúc trên 1 forum.

Phần mềm :

MySql cluster có thể triển khai trên windows hoặc trên hệ thông *nix ( nix nói chung bao gồm các hệ thống thuần unix hoặc like unix như GNU/Linux )
Môi trường triển khai

- Windows
- Unix ( SunOS, AIX, *BSD )
- Linux ( HP linux, Linux nói chung như Fedora Core , RedHat Linux phiên bản cho doanh nghiệp, Debian, OpenSUSE hoặc các phiên bản tương tự sử dụng linux kernel)

Các cách cài đặt.

- Cài đặt từ gói biên dịch sẵn
- Cài đặt từ source code.

Một số hệ thống đã được các nhà phát triển đóng gói sẵn phiên bản mysql cluster . Tùy thuộc vào các hệ thống và các trình quản lý gói phần mềm khác nhau nên cách cài đặt khác nhau. Ở phần này tôi không đi sâu vào cài đặt từ gói đóng sẵn nên tôi sẽ không đề cập đến.

Ở trong mô hình này tôi lựa chọn sử dụng các biên dịch từ source code, hệ thống môi trường sử dụng OS FreeBSD , Phần cứng bao gồm 2 server sử dụng CPU intel xeon 2.6Ghz Ram 1GB – Rack 1U .Sử dụng công nghệ ảo hóa để tận dụng toàn bộ tài nguyên và hiệu suất còn dư khi sử dụng server chạy 1 process đơn lẻ.

Cách cài đặt từ source code.
Nguồn source : http://dev.mysql.com/downloads
Link download: http://dev.mysql.com/get/Downloads/MySQL-Cluster-6.3/mysql-cluster-gpl-6.3.24.tar.gz/from/http://mirror-fpt-telecom.fpt.net/mysql/

-Yêu cầu các lib và trình biên dịch như gcc,gmake,libtool, automake,autoconf…

Sau khi download file nén chứa source code có tên mysql-cluster-gpl-6.3.24.tar.gz từ mirror của mysql tại fpt-telecom. Ta tiến hành cài đặt. Mô hình bao gồm:
2 server chạy ảo hóa 6OS sẽ giúp tiết kiệm tài nguyên và nâng cao hiệu suất hoạt động.

Danh sách các node trong demo
Dải ip 10.1.11.0/24

MGM node : 10.1.11.56
SQL node : 10.1.11.57
4 Data Node : 10.1.11.58 – 61

Giả sử file source đặt tại thư mục /tmp ta tiến hành cài đặt như sau

$/tmp> su
Password: (ghõ password của root vào đây – pass sẽ không hiện ra)
root@/tmp# groupadd mysql
root@/tmp# useradd –c ‘Mysql user’ –g mysql –s /sbin/fail \ mysql
root@/tmp# tar –zxvf mysql-cluster-gpl-6.3.24.tar.gz

root@/tmp# cd mysql-cluster-gpl-6.3.24

root@/tmp/mysql-cluster-gpl-6.3.24#umask 022

root@/tmp/mysql-cluster-gpl-6.3.24#./configure\ prefix=/usr/local/mysql \
–with-plugins = all

root@/tmp/mysql-cluster-gpl-6.3.24#make ( hoặc gmake )

root@/tmp/mysql-cluster-gpl-6.3.24#make install

Lặp lại toàn bộ thao tác trên 5 server còn lại

Sau khi cài đặt mysql-cluster vào thư mục /usr/local/mysql ta tiến hành cấu hình mysql.

Đoạn cấu hình dành cho cả SQL node và Data Node

root@/tmp/mysql-cluster-gpl-6.3.24# cd
root@~# export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/libexec
root@~# cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
root@~# cat << EOF >> /etc/my.cnf
>#Option for mysqld process
>[mysqld]
>Ndbcluster
>Ndbcluster-connectstring=10.1.11.56
>#Option for ndbd process
>[mysql-cluster]
>Ndb-connectstring=10.1.11.56
>EOF
Đoạn cấu hình dành riêng cho SQL Node
root@~# mysql_install_db –-user=mysql
root@~# mysqld_safe –-user=mysql &
root@~# mysqladmin –u root password ‘123456’
root@~# mysql –u root –p
Enter password: ( nhập pass của user root có quyền đăng nhập vào mysql service )

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.32-ndb-7.0.5-log Source distribution

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql>

Hiện ra màn hình như trên là ta đã cài đặt thành công mysql server.
Với thao tác cấu hình như trên ta chỉ tiến hành cho SQL Node để chạy Service Mysql nhận các query từ client.

Đối với các server còn lại đảm nhiệm việc quản lý và chứa data node ta không cần thiết phải cài đặt và cấu hình cho service mysqld chạy trên các server đó.

Cấu hình MGM
> cd /usr/local/mysql
> mkdir –p var/lib/mysql-cluster
> mkdir –p data
> cp share/mysql/ndb-config-2-node.ini var/lib/mysql-cluster
> ee var/lib/mysql-cluster
Sửa nội dung cho phù hợp mô hình
# Example Ndbcluster storage engine config file.
#
[ndbd default]
NoOfReplicas= 2
MaxNoOfConcurrentOperations= 10000
DataMemory= 80M
IndexMemory= 24M
TimeBetweenWatchDogCheck= 30000
DataDir= /usr/local/mysql/data
MaxNoOfOrderedIndexes= 512

[ndb_mgmd default]
DataDir= /usr/local/mysql/data

[ndb_mgmd]
Id=1
HostName= 10.1.11.56

[ndbd]
Id=2
HostName= 10.1.11.58

[ndbd]
Id=3
HostName= 10.1.11.60

[ndbd]
Id=4
HostName= 10.1.11.59

[ndbd]
Id=5
HostName= 10.1.11.61

[mysqld]
Id=6
HostName= 10.1.11.57

# choose an unused port number
# in this configuration 63132, 63133, and 63134
# will be used
[tcp default]
PortNumber= 63132

Save file lại, sau đó khởi động NDB CLUSTER MGM

>ndb_mgmd –f var/lib/mysql-cluster/config.ini
2009-06-09 18:25:08 [MgmSrvr] INFO — NDB Cluster Management Server. mysql-5.1.32 ndb-7.0.5-beta
2009-06-09 18:25:08 [MgmSrvr] INFO — Loaded config from ‘/usr/local/mysql/mysql-cluster/ndb_1_config.bin.1′
>ps –aux|grep ndb|grep –v grep
root 27818 0.0 0.5 28896 5312 ?? Is Mon06PM 5:23.76 ./libexec/ndb_mgmd -f var/lib/mysql-cluster/confi
root 27821 0.0 0.5 8576 5092 ?? IsJ Mon06PM 0:00.00 ./libexec/ndbd
root 27822 0.0 7.5 394128 78084 ?? IJ Mon06PM 12:30.84 ./libexec/ndbd
root 27824 0.0 0.5 8576 5104 ?? IsJ Mon06PM 0:00.00 ./libexec/ndbd
root 27825 0.0 7.5 394128 77976 ?? IJ Mon06PM 10:16.44 ./libexec/ndbd

Như vậy là service ndb_mgmd đã chạy, kiểm tra kết nối bằng ndb_client
>ndb_mgm
– NDB Cluster — Management Client –
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
———————
[ndbd(NDB)] 4 node(s)
id=2 (not connected, accepting connect from 10.1.11.58)
id=3 (not connected, accepting connect from 10.1.11.60)
id=4 (not connected, accepting connect from 10.1.11.59)
id=5 (not connected, accepting connect from 10.1.11.61)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.1.11.56 (mysql-5.1.32 ndb-7.0.5)

[mysqld(API)] 1 node(s)
id=6 (not connected, accepting connect from 10.1.11.57)

ndb_mgm>
ndb_mgm>quit

Khởi động kết nối đến MGM tại 4 Data node

> ndbd -c 10.1.11.56
2009-06-09 11:54:42 [ndbd] INFO — Configuration fetched from ‘10.1.11.56:1186′, generation: 1
>ps –aux|grep ndbd|grep –v grep
root 27821 0.0 0.5 8576 5092 ?? IsJ Mon11AM 0:00.00 ./libexec/ndbd
root 27822 0.0 7.5 394128 78084 ?? IJ Mon11AM 12:36.62 ./libexec/ndbd
Như vậy là service ndbd của Data node đã chạy

Kiểm tra kết nối tại NDBCLUSTER MGM
>ndb_mgm
ndb_mgm> show
Cluster Configuration
———————
[ndbd(NDB)] 4 node(s)
id=2 @10.1.11.58 (mysql-5.1.32 ndb-7.0.5, starting, Nodegroup: 0, Master)
id=3 @10.1.11.60 (mysql-5.1.32 ndb-7.0.5, starting, Nodegroup: 0)
id=4 @10.1.11.59 (mysql-5.1.32 ndb-7.0.5, starting, Nodegroup: 0)
id=5 @10.1.11.61 (mysql-5.1.32 ndb-7.0.5, starting, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.1.11.56 (mysql-5.1.32 ndb-7.0.5)

[mysqld(API)] 1 node(s)
id=6 (not connected, accepting connect from 10.1.11.57)

ndb_mgm>

Các Data node đang tiến hành kết nối.

ndb_mgm> show
Cluster Configuration
———————
[ndbd(NDB)] 4 node(s)
id=2 @10.1.11.58 (mysql-5.1.32 ndb-7.0.5, Nodegroup: 0, Master)
id=3 @10.1.11.60 (mysql-5.1.32 ndb-7.0.5, Nodegroup: 0)
id=4 @10.1.11.59 (mysql-5.1.32 ndb-7.0.5, Nodegroup: 1)
id=5 @10.1.11.61 (mysql-5.1.32 ndb-7.0.5, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.1.11.56 (mysql-5.1.32 ndb-7.0.5)

[mysqld(API)] 1 node(s)
id=6 @10.1.11.57 (mysql-5.1.32 ndb-7.0.5)

ndb_mgm>

Kết nối thành công.

Để sử dụng engine ndbcluster 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.

Ví dụ đối với db fsoftweb làm như sau

Dump db cũ
> mysqldump –u root –p fsoftweb > /home/root/fsoftweb.sql
Password:
> mysql –u root –p
Password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.32-ndb-7.0.5-log Source distribution

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql> show databases;
mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| test |
+——————–+
3 rows in set (0.00 sec)
mysql> create database fsoftweb;
Query OK, 1 row affected (0.10 sec)
Mysql> quit

Restored database
> mysql –u root –p fsoftweb
Password:
> mysql –u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.32-ndb-7.0.5-log Source distribution

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql>show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| fsoftweb |
| mysql |
| test |
+——————–+
4 rows in set (0.00 sec)
mysql> use fsoftweb;
Database changed
mysql> show tables;
+——————–+
| Tables_in_fsoftweb |
+——————–+
| news |
| news_fr |
| news_jp |
| newsletter |
| newsletter_fr |
| newsletter_jp |
| user |
+——————–+
7 rows in set (0.01 sec)

mysql>
mysql> alter table news engine=ndbcluster;
Query OK, 337 rows affected (2.70 sec)
Records: 337 Duplicates: 0 Warnings: 0

mysql> alter table news_fr engine=ndbcluster;
Query OK, 1991 rows affected (4.37 sec)
Records: 1991 Duplicates: 0 Warnings: 0

mysql> alter table news_jp engine=ndbcluster;
Query OK, 207 rows affected (2.83 sec)
Records: 207 Duplicates: 0 Warnings: 0

mysql> alter table newsletter engine=ndbcluster;
Query OK, 24 rows affected (1.79 sec)
Records: 24 Duplicates: 0 Warnings: 0

mysql> alter table newsletter_fr engine=ndbcluster;
Query OK, 2 rows affected (2.09 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> alter table newsletter_jp engine=ndbcluster;
Query OK, 16 rows affected (1.55 sec)
Records: 16 Duplicates: 0 Warnings: 0

mysql> alter table user engine=ndbcluster;
Query OK, 1 row affected (1.80 sec)
Records: 1 Duplicates: 0 Warnings: 0

mysql>select * from news\G;
…………
*************************** 337. row ***************************
id: 65
title: November 11th, 2002: Buckingham Technology kicked off the Pilot Project with FPT-SOFT
content: November 11th, 2002 – Mr. Ron Lavery-Founder and EVP of Buckingham Technology arrived in FPT-Soft to start the pilot project under abc/Buckingham Technology Master Agreement signed in September this year. After the full week working tirelessly, abc development team had successfully demonstrated their capabilities to master the project\’s technology and requirement. In the last meeting at abc, Mr. Lavery spoke highly confidence on the abc development team.
postingdate: 0000-00-00
rate: 0
visible: Y
ishotnews: N
shortnews: NULL
imagepath: NULL
337 rows in set (0.20 sec)

ERROR:
No query specified

Như vậy là toàn bộ database đã được chuyển sang cluster.
Để kiểm tra ta có thể shutdown hệ thống cluster và thực hiện query như bình thường xem có lỗi xảy ra hay không ?

>ndb_mgm
ndb_mgm> show
Cluster Configuration
———————
[ndbd(NDB)] 4 node(s)
id=2 @10.1.11.58 (mysql-5.1.32 ndb-7.0.5, Nodegroup: 0, Master)
id=3 @10.1.11.60 (mysql-5.1.32 ndb-7.0.5, Nodegroup: 0)
id=4 @10.1.11.59 (mysql-5.1.32 ndb-7.0.5, Nodegroup: 1)
id=5 @10.1.11.61 (mysql-5.1.32 ndb-7.0.5, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @10.1.11.56 (mysql-5.1.32 ndb-7.0.5)

[mysqld(API)] 1 node(s)
id=6 @10.1.11.57 (mysql-5.1.32 ndb-7.0.5)

ndb_mgm> shutdown
Connected to Management Server at: localhost:1186
Node 2: Cluster shutdown initiated
Node 3: Cluster shutdown initiated
Node 4: Cluster shutdown initiated
Node 5: Cluster shutdown initiated
Node 2: Node shutdown completed.
Node 4: Node shutdown completed.
Node 3: Node shutdown completed.
Node 5: Node shutdown completed.
4 NDB Cluster node(s) have shutdown.
Disconnecting to allow management server to shutdown.
ndb_mgm>
ndb_mgm> show
Unable to connect with connect string: nodeid=0,localhost:1186
Retrying every 5 seconds. Attempts left: 2

Như vậy là hệ thống cluster đã shutdown – hiện tại chỉ còn SQL node là đang chạy service mysqld – nhưng toàn bộ database không chứa trên SQL Node đó.
Để kiểm tra ta thực hiện truy vấn tại SQL Node

mysql> select * from news\G;
ERROR 1296 (HY000): Got error 157 ‘Unknown error code’ from NDBCLUSTER
ERROR:
No query specified

Như vậy không có dữ liệu nào được trả về từ hệ thống cluster.

Qua demo trên các bạn có thể xây dựng một hệ thống cluster hoàn chình cho nhu cầu của bạn.

Chúc các bạn thành công.

Nguyễn Thăng Long (Kenhgiaiphap.vn)

 
Ý kiến phản hồi và bình luận Góp ý kiến của bạn

Các tin mới nhất :
- Inbound và Phương án Dự phòng Rủi ro
- Cân bằng tải trên Diện rộng cho các Trung tâm Dữ liệu phân tán với Array Networks APV
- Giải pháp cân bằng tải truy cập Inbound với thiết bị Peplink
- Giải pháp cân bằng tải hiểu quả cho VPN với thiết bị mạng Peplink
- Giải pháp truy cập Internet tập trung
- Giải pháp Load Balancing và Fail Over toàn diện dành cho Web Server
- Tăng hiệu quả hoạt động của ứng dụng bằng cách sử dụng Array đa tầng (Multitiered Arrays)
- Giải pháp thiết lập SQL Server luôn sẵn sàng
- Load Balancing từ công nghệ đến giải pháp (Phần 1)
- Ứng dụng giải pháp replicate database để cân bằng tải các ứng dụng
Các tin liên quan :
- Pen simple load balancer for tcp
- Linux Cluster
Bài nhiều người đọc cùng chuyên mục
Giải pháp Load Balancing và Fail Over toàn diện dành cho Web Server
 
Inbound và Phương án Dự phòng Rủi ro
 
Cân bằng tải trong các ứng dụng Web
 
Từng buớc một để triển khai hệ thống Cluster
 
Server Load Balancing (Phần 1)
 
Công nghệ Clustering cho các hệ thống máy tính
 
Giải pháp Loadbalancing cho doanh nghiệp trong xu thế hiện nay
 
Trang chủ | Giới thiệu | Quảng cáo | Liên hệ
Giấy phép ICP số 199/GP-TTĐT. Bộ Thông tin và Truyền thông cấp.
Cơ quan quản lý  : Công Ty Cổ Phần Kênh Giải Pháp
Bản quyền © 2010-2011 Kenhgiaiphap.vn . Giữ toàn quyền.
Ghi rõ nguồn "Kenhgiaiphap.vn" khi phát hành lại thông tin từ website này.

return false; });