Galera Cluster là một trong những giải pháp có tính khả dụng cao phổ biến nhất cho MySQL. Nó là một cụm hầu như đồng bộ, giúp kiểm soát độ trễ sao chép. Nhờ điều khiển dòng chảy, cụm Galera có thể tự điều tiết và cho phép nhiều nút tải hơn để bắt kịp phần còn lại của cụm. Bản phát hành gần đây của Galera 4 mang đến các tính năng và cải tiến mới. Chúng tôi đã đề cập đến chúng trong bài đăng blog nói về MariaDB 10.4 Galera Cluster và một bài đăng trên blog thảo luận về các tính năng hiện có và sắp có của Galera 4.
Galera 4 có giá vé như thế nào khi được sử dụng trong Amazon EC2? Như bạn có thể biết, Amazon cung cấp Dịch vụ cơ sở dữ liệu quan hệ, được thiết kế để cung cấp cho người dùng một cách dễ dàng để triển khai cơ sở dữ liệu MySQL có tính khả dụng cao. Đồng nghiệp của tôi, Ashraf Sharif, đã so sánh thời gian chuyển đổi dự phòng cho RDS MySQL và RDS Aurora trong bài đăng trên blog của anh ấy. Thời gian chuyển đổi dự phòng cho Aurora trông thực sự tuyệt vời nhưng vẫn có nhưng. Trước hết, bạn buộc phải sử dụng RDS. Bạn không thể triển khai Aurora trên các phiên bản bạn quản lý. Nếu các tính năng và tùy chọn hiện có trong Aurora không đủ cho bạn, bạn không có lựa chọn nào khác ngoài việc tự mình triển khai một thứ gì đó. Đây là Galera. Galera, không giống như Aurora, không phải là một hộp đen độc quyền. Ngược lại, nó là một phần mềm mã nguồn mở, có thể được sử dụng tự do trên tất cả các môi trường được hỗ trợ. Bạn có thể cài đặt Galera Cluster trên AWS Elastic Computing Cloud (EC2) và thông qua đó, xây dựng một môi trường có tính khả dụng cao, nơi chuyển đổi dự phòng gần như ngay lập tức:ngay sau khi bạn có thể phát hiện lỗi của nút, bạn có thể kết nối lại với nút Galera khác. Làm cách nào để triển khai Galera 4 trong EC2? Trong bài đăng blog này, chúng tôi sẽ xem xét nó và chúng tôi sẽ cung cấp cho bạn hướng dẫn từng bước chỉ ra cách đơn giản nhất để đạt được điều đó.
Triển khai Cụm Galera 4 trên EC2
Bước đầu tiên là tạo một môi trường mà chúng tôi sẽ sử dụng cho cụm Galera của mình. Chúng tôi sẽ sử dụng máy ảo Ubuntu 18.04 LTS.
Chúng tôi sẽ sử dụng kích thước phiên bản t2.medium cho mục đích của blog này đăng tải. Bạn nên chia tỷ lệ các phiên bản của mình dựa trên tải dự kiến.
Chúng tôi sẽ triển khai ba nút trong cụm. Tại sao lại là ba? Chúng tôi có một blog giải thích cách Galera duy trì tính khả dụng cao.
Chúng tôi sẽ định cấu hình bộ nhớ cho các phiên bản đó.
Chúng tôi cũng sẽ chọn nhóm bảo mật thích hợp cho các nút. Một lần nữa, trong trường hợp của chúng tôi, nhóm bảo mật khá cởi mở. Bạn nên đảm bảo quyền truy cập được giới hạn hết mức có thể - chỉ những nút phải truy cập cơ sở dữ liệu mới được phép kết nối với chúng.
Cuối cùng, chúng tôi chọn một mệnh giá khóa hiện có hoặc tạo một mệnh giá mới. Sau bước này, ba phiên bản của chúng tôi sẽ được khởi chạy.
Khi chúng hoạt động, chúng tôi có thể kết nối với chúng qua SSH và bắt đầu định cấu hình cơ sở dữ liệu.
Chúng tôi quyết định sử dụng quy ước đặt tên ‘node1, node2, node3’, do đó chúng tôi phải chỉnh sửa / etc / hosts trên tất cả các nút và liệt kê chúng cùng với IP cục bộ tương ứng của chúng. Chúng tôi cũng đã thực hiện thay đổi trong / etc / hostname để sử dụng tên mới cho các nút. Khi việc này hoàn tất, chúng ta có thể bắt đầu thiết lập cụm Galera của mình. Tại thời điểm viết bài, nhà cung cấp duy nhất cung cấp phiên bản GA của Galera 4 là MariaDB với 10.4 của nó, do đó chúng tôi sẽ sử dụng MariaDB 10.4 cho cụm của chúng tôi. Chúng tôi sẽ tiến hành cài đặt bằng cách sử dụng các đề xuất và hướng dẫn từ trang web MariaDB.
Triển khai Nhóm MariaDB 10.4 Galera
Chúng ta sẽ bắt đầu với việc chuẩn bị kho lưu trữ:
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
bash ./mariadb_repo_setup
Chúng tôi đã tải xuống tập lệnh nhằm mục đích thiết lập kho lưu trữ và chúng tôi đã chạy nó để đảm bảo mọi thứ được thiết lập đúng cách. Kho lưu trữ được định cấu hình này để sử dụng phiên bản MariaDB mới nhất, tại thời điểm viết bài, là 10.4.
[email protected]:~# apt update
Hit:1 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:3 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic-backports InRelease
Hit:4 http://downloads.mariadb.com/MariaDB/mariadb-10.4/repo/ubuntu bionic InRelease
Ign:5 http://downloads.mariadb.com/MaxScale/2.4/ubuntu bionic InRelease
Hit:6 http://downloads.mariadb.com/Tools/ubuntu bionic InRelease
Hit:7 http://downloads.mariadb.com/MaxScale/2.4/ubuntu bionic Release
Hit:8 http://security.ubuntu.com/ubuntu bionic-security InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
4 packages can be upgraded. Run 'apt list --upgradable' to see them.
Như bạn có thể thấy, kho lưu trữ cho MariaDB 10.4 và MaxScale 2.4 đã được cấu hình. Bây giờ chúng ta có thể tiến hành và cài đặt MariaDB. Chúng tôi sẽ làm điều đó từng bước, từng nút. MariaDB cung cấp hướng dẫn về cách bạn nên cài đặt và định cấu hình cụm.
Chúng tôi cần cài đặt các gói:
apt-get install mariadb-server mariadb-client galera-4 mariadb-backup
Lệnh này cài đặt tất cả các gói bắt buộc để MariaDB 10.4 Galera chạy. MariaDB tạo một tập hợp các tệp cấu hình. Chúng tôi sẽ thêm một cái mới, chứa tất cả các cài đặt cần thiết. Theo mặc định, nó sẽ được bao gồm ở cuối tệp cấu hình nên tất cả các cài đặt trước đó cho các biến mà chúng tôi đặt sẽ bị ghi đè. Tốt nhất là sau đó, bạn nên chỉnh sửa các tệp cấu hình hiện có để xóa cài đặt mà chúng tôi đặt trong galera.cnf để tránh nhầm lẫn nơi cấu hình cài đặt nhất định.
[email protected]:~# cat /etc/mysql/conf.d/galera.cnf
[mysqld]
bind-address=10.0.0.103
default_storage_engine=InnoDB
binlog_format=row
innodb_autoinc_lock_mode=2
# Galera cluster configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://10.0.0.103,10.0.0.130,10.0.0.62"
wsrep_cluster_name="Galera4 cluster"
wsrep_sst_method=mariabackup
wsrep_sst_auth='sstuser:pa55'
# Cluster node configuration
wsrep_node_address="10.0.0.103"
wsrep_node_name="node1"
Khi cấu hình sẵn sàng, chúng ta có thể bắt đầu.
[email protected]:~# galera_new_cluster
Điều này sẽ khởi động cụm mới trên nút đầu tiên. Tiếp theo, chúng ta sẽ tiến hành các bước tương tự trên các nút còn lại:cài đặt các gói bắt buộc và định cấu hình chúng, lưu ý rằng IP cục bộ thay đổi nên chúng ta phải thay đổi tệp galera.cnf cho phù hợp.
Khi các tệp cấu hình đã sẵn sàng, chúng tôi phải tạo một người dùng sẽ được sử dụng cho Chuyển trạng thái Ảnh chụp nhanh (SST):
MariaDB [(none)]> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'pa55';
Query OK, 0 rows affected (0.022 sec)
MariaDB [(none)]> GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
Query OK, 0 rows affected (0.022 sec)
Chúng ta nên làm điều đó trên nút đầu tiên. Các nút còn lại sẽ tham gia vào cụm và chúng sẽ nhận được ảnh chụp trạng thái đầy đủ để người dùng sẽ được chuyển đến chúng. Bây giờ điều duy nhất chúng ta phải làm là khởi động các nút còn lại:
[email protected]:~# service mysql start
[email protected]:~# service mysql start
và xác minh rằng cụm thực sự đã được hình thành:
MariaDB [(none)]> show global status like 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
1 row in set (0.001 sec)
Tất cả đều tốt, cụm đã hoạt động và nó bao gồm ba nút Galera. Chúng tôi đã triển khai MariaDB 10.4 Galera Cluster trên Amazon EC2.