Trong hướng dẫn này, tôi sẽ hướng dẫn bạn cài đặt cụm MariaDB Galera trên CentOS 7 có bộ cân bằng tải HAProxy ở phía trước. Thiết lập tổng thể bao gồm 4 máy chủ. Tôi sẽ sử dụng 3 máy chủ CentOS 7 cho các nút cơ sở dữ liệu, 2 nút sẽ hoạt động và 1 nút đóng vai trò là nút sao lưu. Máy chủ thứ tư sẽ được sử dụng cho bộ cân bằng tải HAProxy. Đối với thuật toán cân bằng, chúng tôi sử dụng leastconn (nhưng bạn có thể sử dụng các thuật toán khác).
MariaDB là một trong những máy chủ cơ sở dữ liệu quan hệ phổ biến nhất do nhà phát triển ban đầu của máy chủ Cơ sở dữ liệu MySQL tạo ra. MariaDB là một nhánh của MySQL hỗ trợ công cụ lưu trữ XtraDB, công cụ lưu trữ InnoDB và một công cụ lưu trữ mới có tên là aria.
MariaDB Galera Cluster là một cụm đa chủ đồng bộ cho MariaDB chỉ khả dụng trên các hệ điều hành dựa trên GNU/Linux. Galera Cluster chỉ hỗ trợ các công cụ lưu trữ XtraDB và InnoDB. Nó sử dụng thư viện Galera để sao chép với điều khiển thành viên tự động, tự động tham gia nút và để đọc và ghi vào các nút cụm.
Điều kiện tiên quyết
192.168.1.132
mariadb2
192.168.1.133
mariadb3
192.168.1.134
HAProxy
192.168.1.135
Chuyển sang người dùng root bằng lệnh sudo:
Chỉnh sửa tệp hosts trên mỗi máy chủ MariaDB và thêm tất cả địa chỉ IP máy chủ và tên máy chủ của các nút khác:
Xem cấu hình /etc/hosts của tôi bên dưới:
Lưu tệp và thoát.
Tiếp theo, tắt SELinux trên mỗi máy chủ vì nó gây ra sự cố với MariaDB Galera. Vô hiệu hóa SELinux bằng lệnh sed này:
sed (trình chỉnh sửa luồng): thay thế "SELINUX=permissive" bằng "SELINUX=disabled" trên tệp /etc/sysconfig/selinux.
Tạo một tệp .repo mới trong thư mục yum.repos.d bằng lệnh vi:
Dán thông tin chi tiết về kho lưu trữ MariaDB Galera bên dưới và lưu lại:
Bây giờ hãy cài đặt MariaDB Galera Server và Client cùng một số gói khác cần thiết cho hướng dẫn này:
Chờ cho đến khi quá trình cài đặt hoàn tất.
3306 = Được sử dụng cho các kết nối máy khách MySQL/MariaDB.
4567 = Lưu lượng sao chép cụm Galera.
873 = Cổng Rsync.
4444 = Dành cho tất cả các Chuyển ảnh chụp nhanh trạng thái (SST) khác.
9200 = xinetd - clustercheck.
Bật firewalld bằng lệnh systemctl này:
Bây giờ hãy mở các cổng bằng firewall-cmd:
và tải lại firewalld:
Bỏ chú thích và thêm một số dòng cấu hình, bạn có thể xem chi tiết bên dưới:
Lưu tệp và thoát.
Trên máy chủ mariadb1, hãy khởi động cụm bằng lệnh bên dưới:
kết quả:
Trên máy chủ mariadb2 và mariadb3, khởi động MariaDB bình thường:
Đang khởi động mariadb1.
mariadb2 và mariadb3 start.
MariaDB đã được khởi động trên tất cả các nút, bây giờ hãy cấu hình mật khẩu gốc cho MariaDB trên tất cả các máy chủ bằng lệnh bên dưới:
Đi đến thư mục /tmp và tải xuống tập lệnh bằng wget:
Bây giờ hãy thực thi tập lệnh bằng cách thay đổi quyền và di chuyển nó đến thư mục /usr/bin/:
Tiếp theo, tạo tập lệnh axinetd cho clusterchek bằng lệnh vi trong thư mục "/etc/xinet.d/":
Dán cấu hình bên dưới:
Lưu và thoát.
Thêm clustercheck vào danh sách dịch vụ:
Đi đến dòng 10101, bình luận các dịch vụ sử dụng cổng 9200 và thêm một dòng mới cho mysqlchk/clustercheck.
Lưu tệp và thoát.
Sau đó khởi động dịch vụ xinetd:
Để thực hiện clustercheck, bạn phải tạo một người dùng mới trong MySQL. Đăng nhập vào shell MariaDB và tạo một người dùng mới với tên "clustercheckuser" và mật khẩu "clustercheckpassword!".
Ở giai đoạn này, tất cả các dịch vụ MariaDB đều được đồng bộ hóa.
Testingclustercheck:
Đảm bảo mã kết quả là 200.
Trở thành người dùng root và thêm IP máy chủ MariaDB và tên máy chủ vào tệp "/etc/hosts":
HAProxy có sẵn trong kho lưu trữ cơ sở CentOS, hãy chạy lệnh yum này để cài đặt:
Sau đó cấu hình nhật ký cho HAProxy bằng cách chỉnh sửa tệp cấu hình thersyslog:
Bỏ chú thích cổng theudp:
Lưu tệp và thoát khỏi trình chỉnh sửa.
Thêm cấu hình HAProxy vào thư mục rsyslog.d:
Dán cấu hình bên dưới:
Lưu tệp và khởi động lại rsyslog:
Tiếp theo, tạo cấu hình HAProxy mới tập tin.
Đi đến thư mục /etc/haproxy và sao lưu tập tin cấu hình haproxy dafult.
Tạo tệp cấu hình haproxy mới:
Và dán cấu hình HAProxy bên dưới:
Cổng 3030 là cổng MariaDB cân bằng tải, chúng ta có thể truy cập cơ sở dữ liệu trên tất cả các máy chủ MariaDB với IP cân bằng tải và cổng đó.
Cổng 9000 là cổng cho web-gui, nó cho phép giám sát HAProxy từ trình duyệt.
Bây giờ hãy khởi động firewalld, mở các cổng 9000 và 3030, sau đó tải lại:
Khởi động HAProxy bằng lệnh systemctl:
Kiểm tra cơ sở dữ liệu:
Trước khi thực hiện thử nghiệm này, hãy bật quyền truy cập từ xa vào máy chủ MariaDB bằng cách tạo người dùng root mới với máy chủ "%".
Đăng nhập vào shell MariaDB và tạo người dùng mới "root" với mật khẩu "aqwe123":
Tiếp theo, truy cập bảng cơ sở dữ liệu 'mysql.user' qua máy chủ HAProxy:
Bạn có thể xem người dùng của máy chủ cơ sở dữ liệu bằng cách truy cập IP của bộ cân bằng tải trên cổng 3030. Bạn có thể truy cập cơ sở dữ liệu trên các nút MySQL bằng cách truy cập IP HAProxy trên cổng 3030.
Một thử nghiệm khác của máy chủ: thuật toán leastconn:
HAProxy đã được cài đặt thành công và bạn có thể thấy các máy chủ MariaDB đang được giám sát.
MariaDB là một trong những máy chủ cơ sở dữ liệu quan hệ phổ biến nhất do nhà phát triển ban đầu của máy chủ Cơ sở dữ liệu MySQL tạo ra. MariaDB là một nhánh của MySQL hỗ trợ công cụ lưu trữ XtraDB, công cụ lưu trữ InnoDB và một công cụ lưu trữ mới có tên là aria.
MariaDB Galera Cluster là một cụm đa chủ đồng bộ cho MariaDB chỉ khả dụng trên các hệ điều hành dựa trên GNU/Linux. Galera Cluster chỉ hỗ trợ các công cụ lưu trữ XtraDB và InnoDB. Nó sử dụng thư viện Galera để sao chép với điều khiển thành viên tự động, tự động tham gia nút và để đọc và ghi vào các nút cụm.
Điều kiện tiên quyết
- 4 máy chủ CentOS 7 - 64bit:
192.168.1.132
mariadb2
192.168.1.133
mariadb3
192.168.1.134
HAProxy
192.168.1.135
- Quyền root trên cả bốn máy chủ.
Bước 1 - Cài đặt và cấu hình MariaDB Galera Cluster
Trong bước này, chúng ta sẽ cài đặt và cấu hình MariaDB Galera Cluster trên 3 máy chủ CentOS. Chúng ta sẽ cài đặt máy chủ MariaDB-Galera, sau đó bật tường lửa và mở một số cổng cho cơ sở dữ liệu và các dịch vụ khác. Sau đó, chúng ta sẽ cài đặt tập lệnh clustercheck trên mỗi máy chủ MariaDB để có thể kiểm tra trạng thái máy chủ từ HAProxy.A. Cấu hình tên máy chủ và chuẩn bị hệ thống cơ sở
Đăng nhập vào tất cả các máy chủ cơ sở dữ liệu bằng tài khoản ssh của bạn:
Mã:
ssh [emailprotected]
ssh [emailprotected]
ssh [emailprotected]
Mã:
sudo su
Mã:
vi /etc/hosts
Mã:
192.168.1.132 mariadb1
192.168.1.133 mariadb2
192.168.1.134 mariadb3
Tiếp theo, tắt SELinux trên mỗi máy chủ vì nó gây ra sự cố với MariaDB Galera. Vô hiệu hóa SELinux bằng lệnh sed này:
Mã:
sed -i -e 's/SELINUX=permissive/SELINUX=disabled/g' /etc/sysconfig/selinux
B. Cài đặt MariaDB Galera Server
Trong bước này, chúng ta sẽ cài đặt MariaDB Galera 10.0 có sẵn trong kho lưu trữ MariaDB.Tạo một tệp .repo mới trong thư mục yum.repos.d bằng lệnh vi:
Mã:
vi /etc/yum.repos.d/mariadb.repo
Mã:
# MariaDB 10.0 CentOS repository list - created 2015-07-09 14:56 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Mã:
yum -y install MariaDB-Galera-server MariaDB-client galera rsync xinetd percona-toolkit precona-xtrabackup xinetd wget
C. Cấu hình Firewalld
Chúng ta sẽ bật tường lửa mặc định của CentOS 7 có tên là Firewalld. Chúng tôi sẽ bật nó lên và mở các cổng TCP được sử dụng bởi các dịch vụ mà chúng tôi sẽ cài đặt.3306 = Được sử dụng cho các kết nối máy khách MySQL/MariaDB.
4567 = Lưu lượng sao chép cụm Galera.
873 = Cổng Rsync.
4444 = Dành cho tất cả các Chuyển ảnh chụp nhanh trạng thái (SST) khác.
9200 = xinetd - clustercheck.
Bật firewalld bằng lệnh systemctl này:
Mã:
systemctl start firewalld
Mã:
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=4567/tcp
firewall-cmd --permanent --add-port=873/tcp
firewall-cmd --permanent --add-port=4444/tcp
firewall-cmd --permanent --add-port=9200/tcp
Mã:
tường lửa-cmd --reload
D. Cấu hình MariaDB Galera Cluster
Vào thư mục /etc/my.cnf.d/ và chỉnh sửa tệp server.conf bằng vi:
Mã:
cd /etc/my.cnf.d/
vi server.conf
Mã:
wsrep_provider=/usr/lib64/galera/libgalera_smm.so # Đường dẫn đến thư viện nhà cung cấp wsrep
wsrep_cluster_address="gcomm://192.168.1.132,192.168.1.133,192.168.1.134" # Nhóm nút, thêm tất cả Máy chủ MardiaDB IP
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0
# Thêm một số cấu hình bên dưới
# Tên cụm
wsrep_cluster_name="mariadb_cluster"
# Thêm IP máy chủ - trên mariadb2 = 192.168.1.133 - trên mariadb3 = 192.168.1.134
wsrep_node_address="192.168.1.132"
# Nhà cung cấp bản sao với rsync
wsrep_sst_method=rsync
Trên máy chủ mariadb1, hãy khởi động cụm bằng lệnh bên dưới:
Mã:
/etc/rc.d/init.d/mysql bootstrap
Mã:
Khởi động cụm.. Đang khởi động MySQL.. THÀNH CÔNG!
Mã:
/etc/init.d/mysql start
mariadb2 và mariadb3 start.
MariaDB đã được khởi động trên tất cả các nút, bây giờ hãy cấu hình mật khẩu gốc cho MariaDB trên tất cả các máy chủ bằng lệnh bên dưới:
Mã:
/usr/bin/mysql_secure_installation
E. Cấu hình Clustercheck
Clustercheck là một tập lệnh bash hữu ích để tạo proxy (ví dụ: HAProxy) có khả năng giám sát máy chủ MariaDB.Đi đến thư mục /tmp và tải xuống tập lệnh bằng wget:
Mã:
cd /tmp
wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck
Mã:
chmod +x clustercheck
mv clustercheck /usr/bin/
Mã:
vi /etc/xinetd.d/mysqlchk
Mã:
# default: on
# description: mysqlchk
service mysqlchk
{
disable = no
flags = REUSE
socket_type = stream
port = 9200 # Cổng này được xinetd sử dụng cho clustercheck
wait = no
user = nobody
server = /usr/bin/clustercheck
log_on_failure += USERID
only_from = 0.0.0.0/0
per_source = UNLIMITED
}
Thêm clustercheck vào danh sách dịch vụ:
Mã:
vi /etc/services
Mã:
mysqlchk 9200/tcp # mysqlchk
#wap-wsp 9200/tcp # Dịch vụ phiên không kết nối WAP
#wap-wsp 9200/udp # Dịch vụ phiên không kết nối WAP
Sau đó khởi động dịch vụ xinetd:
Mã:
systemctl start xinetd
Mã:
mysql -u root -p
CẤP QUY TRÌNH TRÊN *.* CHO 'clustercheckuser'@'localhost' ĐƯỢC XÁC ĐỊNH BỞI 'clustercheckpassword!' ;
exit;
Ở giai đoạn này, tất cả các dịch vụ MariaDB đều được đồng bộ hóa.
Testingclustercheck:
Mã:
/usr/bin/clustercheck
Bước 2 - Cài đặt và cấu hình HAProxy
Đăng nhập vào máy chủ HAProxy:
Mã:
ssh [emailprotected]
Mã:
sudo su
vi /etc/hosts
Mã:
yum -y install haproxy
Mã:
vi /etc/rsyslog.conf
Mã:
# Cung cấp khả năng tiếp nhận syslog UDP
$ModLoad imudp
$UDPServerRun 51
Thêm cấu hình HAProxy vào thư mục rsyslog.d:
Mã:
vi /etc/rsyslog.d/haproxy.conf
Mã:
local2.=info /var/log/haproxy-access.log
local2.notice /var/log/haproxy-info.log
Mã:
systemctl restart rsyslog
Đi đến thư mục /etc/haproxy và sao lưu tập tin cấu hình haproxy dafult.
Mã:
cd /etc/haproxy/
mv haproxy.cfg haproxy.cfg.orig
Mã:
vi /etc/haproxy/haproxy.cfg
Mã:
global
log 127.0.0.1 local2
maxconn 1024
user haproxy
group haproxy
daemon
stats socket /var/run/haproxy.sock mode 600 level admin # Tạo tệp sock cho haproxy
defaults
log global
mode http
option tcplog
option dontlognull
retries 3
option redispatch
maxconn 1024
timeout connect 5000ms
thời gian chờ máy khách 50000ms
thời gian chờ máy chủ 50000ms
lắng nghe mariadb_cluster 0.0.0.0:3030
## MariaDB cân bằng leastconn - cụm lắng nghe trên cổng 3030.
chế độ tcp
cân bằng leastconn
tùy chọn httpchk
máy chủ mariadb1 192.168.1.132:3306 kiểm tra cổng 9200
máy chủ mariadb2 192.168.1.133:3306 kiểm tra cổng 9200
máy chủ mariadb3 192.168.1.134:3306 kiểm tra cổng 9200 sao lưu # Đặt mariadb3 làm bản sao lưu - dữ liệu sao chép tự động
lắng nghe số liệu thống kê 0.0.0.0:9000
## HAProxy stats web gui chạy trên cổng 9000 - tên người dùng và mật khẩu: howtoforge.
mode http
stats enable
stats uri /stats
stats realm HAProxy\ Statistics
stats auth howtoforge:howtoforge
stats admin if TRUE
Cổng 9000 là cổng cho web-gui, nó cho phép giám sát HAProxy từ trình duyệt.
Bây giờ hãy khởi động firewalld, mở các cổng 9000 và 3030, sau đó tải lại:
Mã:
systemctl start firewalld
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=3030/tcp
firewall-cmd --reload
Mã:
systemctl start haproxy
Bước 3 - Kiểm tra HAProxy và MariaDB
A. Kiểm tra sao chép
Đăng nhập vào máy chủ MariaDB, truy cập shell MySQL và tạo cơ sở dữ liệu mới từ mariadb1, sau đó từmariadb2 và cuối cùng từ mariadb3.
Mã:
mysql -u root -p
create database this_mariadb1; # Chạy lệnh này trên máy chủ mariadb1
create database this_mariadb2; # Chạy lệnh này trên máy chủ mariadb2
create database this_mariadb3; # Chạy lệnh này trên máy chủ mariadb3
B. Truy cập Máy chủ MariaDB qua HAProxy
Bây giờ chúng ta truy cập cụm máy chủ MariaDB và cơ sở dữ liệu qua IP HAProxy trên cổng 3030.Trước khi thực hiện thử nghiệm này, hãy bật quyền truy cập từ xa vào máy chủ MariaDB bằng cách tạo người dùng root mới với máy chủ "%".
Đăng nhập vào shell MariaDB và tạo người dùng mới "root" với mật khẩu "aqwe123":
Mã:
mysql -u root -p
CẤP TẤT CẢ CÁC QUYỀN TRÊN *.* CHO root@'%' ĐƯỢC XÁC ĐỊNH BỞI "aqwe123";
Mã:
mysql -u root -p -h 192.168.1.135 -P 3030 -e "select Host, User, Password from mysql.user"
Bạn có thể xem người dùng của máy chủ cơ sở dữ liệu bằng cách truy cập IP của bộ cân bằng tải trên cổng 3030. Bạn có thể truy cập cơ sở dữ liệu trên các nút MySQL bằng cách truy cập IP HAProxy trên cổng 3030.
Một thử nghiệm khác của máy chủ: thuật toán leastconn:
C. Đăng nhập vào HAProxy Web-Gui
Bạn có thể truy cập máy chủ giám sát HAProxy trên cổng 9000, với tên người dùng và mật khẩu "howtoforge" để hiển thị giao diện người dùng web HAProxy:HAProxy đã được cài đặt thành công và bạn có thể thấy các máy chủ MariaDB đang được giám sát.