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-1 và mysql-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