12/08/2018, 14:47

Xây dựng Loadbalancer cho các server MySQL với HAproxy trên Ubuntu

1 - Load Balancer Hostname: haproxy OS: Ubuntu server 16.04 Private IP: 172.17.3.102 2 - Node 1 Hostname: mysql-1 OS: Ubuntu server 16.04 Private IP: 172.17.3.103 3 - Node 2 Hostname: mysql-2 OS: Ubuntu server 16.04 Private IP: 172.17.3.104 Chuẩn bị các node database server : Tiến ...

1 - Load Balancer
Hostname: haproxy 
OS: Ubuntu server 16.04
Private IP: 172.17.3.102

2 - Node 1
Hostname: mysql-1 
OS: Ubuntu server 16.04 
Private IP: 172.17.3.103

3 - Node 2 
Hostname: mysql-2 
OS: Ubuntu server 16.04 
Private IP: 172.17.3.104

Chuẩn bị các node database server :

Tiến hành cài đặt MySQL lần lượt trên các node :

mysql-1@ubuntu:~$ sudo apt-get install mysql

Sau khi cài đặt, tiến hành chỉnh sửa file mysql.cnf trong đường dẫn /etc/mysql/mysql.conf.d/ (Lưu ý là các OS khác như CenOS thì đường dẫn có thể khác nhé !) Dùng bất kỳ trình editor nào trên linux mà bạn thích để thao tác, ở đây mình dùng nano. Sau khi mở file lên, tiến hành edit 2 dòng như sau :

  • Comment hoặc xóa dòng blind-address = 127.0.0.1, commend bằng cách thêm dấu # vào phía trước . - Thực hiện tương tự trên cả 2 máy MySQL server nhé. Mục đích của việc này là để cho user login local được . Chuẩn bị cho việc test thôi, nếu ai không bị ảnh hưởng thì bỏ qua nhé.
  • Bỏ Comment dòng server-id = 1 và lần lượt cho cái giá trị ID mà mình mong muốn trên mỗi server MySQL. Ở đây mình cho ID lần lượt là 1 và 2 tương ứng với 2 máy mysql-1mysql-2 . Mục đích của bước này chỉ dùng để test. Ai có cách test khác thì cứ sử dụng nhé, ko nhất thiết phải làm theo mình đâu ^^.

Sau khi edit thì restart MySQL nhé : sudo service mysql restart

Tiếp theo là tiến hành tạo User để connect với HAproxy. Trên mỗi node database cần tạo 2 user. 1 dùng cho HAproxy check status và 1 dùng connect sử dụng. Username và password nên tạo như nhau ở cả 2 server vì trên thực tế sử dụng thì 2 node database này sẽ đồng bộ với nhau.

User thứ nhất

mysql > Inser into mysql.user (Host,User,ssl_cipher,x509_issuer,x509_subject) values ('IP_HAproxy','USER','abc','abc','abc');

Lưu ý : trường Host thì các bạn điền IP của HAproxy vào nhé,còn user thì thích điền gì thì điền. Ví dụ : mysql > Inser into mysql.user (Host,User,ssl_cipher,x509_issuer,x509_subject) values ('172.17.3.102','haproxy_checkstatus','abc','abc','abc');

Vì lý do chả hiểu sao mình tạo user với 2 trường (Host,User) thì nó lại trả về kết quả kêu 3 thằngssl_cipher,x509_issuer,x509_subject kia không được null. Thế là mình gán luôn giá trị cho 3 thằng đó. Cao nhân nào biết chỗ này tại sao thì comment hướng dẫn mình với nghen             </div>
            
            <div class=

0