<![CDATA[Latest posts for the topic "Xây dựng hệ thống HA Load Balancer Mysql Cluster"]]> /hvaonline/posts/list/24.html JForum - http://www.jforum.net Xây dựng hệ thống HA Load Balancer Mysql Cluster 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:
apt-get install libaio1
Đị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ở>]]>
/hvaonline/posts/list/43883.html#271442 /hvaonline/posts/list/43883.html#271442 GMT
Xây dựng hệ thống HA Load Balancer Mysql Cluster /hvaonline/posts/list/43883.html#271471 /hvaonline/posts/list/43883.html#271471 GMT Xây dựng hệ thống HA Load Balancer Mysql Cluster /hvaonline/posts/list/43883.html#271767 /hvaonline/posts/list/43883.html#271767 GMT Xây dựng hệ thống HA Load Balancer Mysql Cluster Code:
apt-get install haproxy
2. Cấu hình Backup lại file /etc/haproxy/haproxy.cfg Cấu hình như sau: nano /etc/haproxy/haproxy.cfg Code:
# this config needs haproxy-1.4.20 
global 
        log 127.0.0.1   local0 
        log 127.0.0.1   local1 notice 
stats socket /var/run/haproxy.stat mode 600 
        maxconn 4096 
#        uid 99 
#        gid 99 
        daemon 
        #debug 
        #quiet 
defaults 
        log     global 
        mode    http 
        option  tcplog 
        option  dontlognull 
 
 
        retries 3 
        option        redispatch 
        maxconn 2000 
        contimeout      5000 
        clitimeout      50000 
        srvtimeout      50000 
 
listen mysql-cluster 0.0.0.0:3306 
    mode tcp 
    balance roundrobin 
   # option mysql-check user root 
#    listen webcluster *:80 
#    stats   enable 
#    stats   auth admin:admin 
   option httpchk 
    server db01 192.168.2.53:3306 check port 9200 
    server db02 192.168.2.54:3306 check port 9200
3. Config tiếp Code:
nano /etc/default/haproxy
ENABLED=1 4. Xong restart haproxy II. Cài đặt xinetd script trên SQL Node Chúng ta thực hiện các bước sau trên 2 SQL Node Đầu tiên cài đặt xinetd Code:
apt-get install xinetd
Step 1: Trên con mysql server, ta tạo file /opt/mysqlchk_status Code:
#!/bin/bash 
MYSQL_HOST="localhost" 
MYSQL_PORT="3306" 
MYSQL_USERNAME="ngtrongtri" 
MYSQL_PASSWORD="ngtrongtri" 
ERROR_MSG=`/usr/local/mysql-cluster/bin/mysql  --host=$MYSQL_HOST --port=$MYSQL_PORT --user=$MYSQL_USERNAME --password=$MYSQL_PASSWORD -e "show databases;" 2>/dev/null` 
if [ "$ERROR_MSG" != "" ] 
then 
        # mysql is fine, return http 200         
/bin/echo -e "HTTP/1.1 200 OK\r\n"         
/bin/echo -e "Content-Type: Content-Type: text/plain\r\n"         
/bin/echo -e "\r\n"         
/bin/echo -e "MySQL is running.\r\n"         
/bin/echo -e "\r\n" 
else         
# mysql is fine, return http 503         
/bin/echo -e "HTTP/1.1 503 Service Unavailable\r\n"         
/bin/echo -e "Content-Type: Content-Type: text/plain\r\n"         
/bin/echo -e "\r\n"         
/bin/echo -e "MySQL is *down*.\r\n"         
/bin/echo -e "\r\n" 
fi
Step 2: Trên mysql server, thực hiện lệnh sau Code:
GRANT ALL PRIVILEGES ON *.* TO 'ngtrongtri'@'localhost' IDENTIFIED BY 'ngtrongtri';
Step 3: Code:
chown nobody /opt//mysqlchk_status  
chmod 744 /opt//mysqlchk_status
Step 4: Check Code:
root@server02:~# /opt/mysqlchk_status 
HTTP/1.1 200 OK 
Content-Type: Content-Type: text/plain 
MySQL is running.
Step 5: Thêm dòng sau đây vào /etc/services vào cuối Code:
mysqlchk_status         9200/tcp                        # mysqlchk
Step 6: Tạo file sau /etc/xinetd.d/mysqlchk_status Code:
# default: on 
# description: mysqlchk 
service mysqlchk_status 
{ 
        flags           = REUSE 
        socket_type     = stream 
        port            = 9200 
        wait            = no 
        user            = nobody 
        server          = /opt/mysqlchk_status 
        log_on_failure  += USERID 
        disable         = no 
        only_from       = 0.0.0.0/0 # recommended to put the IPs that need 
 
 
                                    # to connect exclusively (security purposes) 
        per_source      = UNLIMITED # Recently added (May 20, 2010) 
                                    # Prevents the system from complaining 
                                    # about having too many connections open from 
                                    # the same IP. More info: 
                                    # http://www.linuxfocus.org/English/November2000/article175.shtml 
}
Step 7: restart xinetd Code:
/etc/init.d/xinetd restart
Step 8: check Code:
root@server02:~# netstat --inet -nlp | grep :9200 
tcp        0      0 0.0.0.0:9200            0.0.0.0:*               LISTEN      6498/xinetd     
root@server02:~# telnet localhost 9200 
Trying ::1... 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
HTTP/1.1 200 OK 
 
Content-Type: Content-Type: text/plain 
 
MySQL is running. 
 
Connection closed by foreign host.
Ta telnet tới server HAProxy thử Code:
root@server02:~# telnet 192.168.2.58 3306 
Trying 192.168.2.58... 
Connected to 192.168.2.58. 
Escape character is '^]'. 
K 
5.1.63-ndb-7.1.24-cluster-gpl]GM,2WA~ceQFJ#lw5=tQ
Vậy là bạn đã cấu hình Load Balancer thành công. Hết phần 2.]]>
/hvaonline/posts/list/43883.html#271786 /hvaonline/posts/list/43883.html#271786 GMT
Xây dựng hệ thống HA Load Balancer Mysql Cluster /hvaonline/posts/list/43883.html#273525 /hvaonline/posts/list/43883.html#273525 GMT