Galera Clusterは、MySQLで最も人気のある高可用性ソリューションの1つです。これは実質的に同期クラスターであり、レプリケーションの遅延を制御するのに役立ちます。フロー制御のおかげで、Galeraクラスターはそれ自体を抑制し、より多くのロードされたノードがクラスターの残りの部分に追いつくことを可能にします。 Galera 4の最近のリリースは、新しい機能と改善をもたらしました。それらについては、MariaDB 10.4 Galera Clusterについて説明しているブログ投稿と、Galera4の既存および今後の機能について説明しているブログ投稿で取り上げました。
AmazonEC2で使用した場合のGalera4の運賃はどうなりますか?ご存知かもしれませんが、Amazonはリレーショナルデータベースサービスを提供しています。これは、可用性の高いMySQLデータベースを簡単にデプロイする方法をユーザーに提供するように設計されています。私の同僚であるAshrafSharifは、彼のブログ投稿でRDSMySQLとRDSAuroraのフェイルオーバー時間を比較しました。 Auroraのフェイルオーバー時間は本当に素晴らしいように見えますが、しかしあります。まず第一に、あなたはRDSを使用することを余儀なくされています。管理するインスタンスにAuroraをデプロイすることはできません。 Auroraで利用可能な既存の機能とオプションでは不十分な場合は、他のオプションはありませんが、自分で何かを展開する必要があります。ここにガレラが入ります。ガレラは、オーロラとは異なり、独自のブラックボックスではありません。逆に、これはオープンソースソフトウェアであり、サポートされているすべての環境で自由に使用できます。 AWS Elastic Computing Cloud(EC2)にGalera Clusterをインストールし、それによって、フェイルオーバーがほぼ瞬時に行われる高可用性環境を構築できます。ノードの障害を検出するとすぐに、他のGaleraノードに再接続できます。 EC2にGalera4をデプロイするにはどうすればよいですか?このブログ投稿では、それを見て、それを達成するための最も簡単な方法を示すステップバイステップガイドを提供します。
EC2にGalera4クラスターをデプロイする
最初のステップは、Galeraクラスターに使用する環境を作成することです。 Ubuntu18.04LTS仮想マシンを使用します。
このブログでは、t2.mediumインスタンスサイズを使用します役職。予想される負荷に基づいてインスタンスをスケーリングする必要があります。
クラスターに3つのノードをデプロイします。なぜ3つ? Galeraが高可用性を維持する方法を説明するブログがあります。
最後に、既存のキーパーを選択するか、新しいキーパーを作成します。このステップの後、3つのインスタンスが起動されます。
起動したら、SSH経由で接続して構成を開始できますデータベース。
「node1、node2、node3」の命名規則を採用することにしたため、すべてのノードの/ etc / hostsを編集し、それぞれのローカルIPと一緒にリストする必要がありました。また、ノードに新しい名前を使用するように/ etc/hostnameを変更しました。これが完了すると、Galeraクラスターのセットアップを開始できます。執筆時点では、Galera 4のGAバージョンを提供するベンダーは10.4のMariaDBのみであるため、クラスターにはMariaDB10.4を使用します。 MariaDBWebサイトからの提案とガイドを使用してインストールを進めます。
MariaDB10.4ガレラクラスターのデプロイ
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
bash ./mariadb_repo_setup
リポジトリを設定するためのスクリプトをダウンロードして実行し、すべてが正しく設定されていることを確認しました。この構成済みリポジトリーは、執筆時点では10.4である最新のMariaDBバージョンを使用します。
[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.
ご覧のとおり、MariaDB10.4およびMaxScale2.4のリポジトリーが構成されています。これで、MariaDBをインストールできます。それを段階的に、ノードごとに行います。 MariaDBは、クラスターをインストールおよび構成する方法に関するガイドを提供します。
apt-get install mariadb-server mariadb-client galera-4 mariadb-backup
このコマンドは、MariaDB10.4Galeraを実行するために必要なすべてのパッケージをインストールします。 MariaDBは、構成ファイルのセットを作成します。必要なすべての設定を含む新しいものを追加します。デフォルトでは、構成ファイルの最後に含まれるため、設定した変数の以前の設定はすべて上書きされます。理想的には、後で、既存の構成ファイルを編集して、galera.cnfに設定した設定を削除し、特定の設定が構成されている場所での混乱を避けます。
[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"
構成の準備ができたら、開始できます。
[email protected]:~# galera_new_cluster
これにより、最初のノードで新しいクラスターがブートストラップされます。次に、残りのノードで同様の手順を実行する必要があります。必要なパッケージをインストールし、ローカルIPが変更されることを念頭に置いて構成するため、それに応じてgalera.cnfファイルを変更する必要があります。
構成ファイルの準備ができたら、スナップショット状態転送(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)
[email protected]:~# service mysql start
[email protected]:~# service mysql start
そして、クラスターが実際に形成されていることを確認します:
MariaDB [(none)]> show global status like 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
1 row in set (0.001 sec)
すべてが順調で、クラスターは稼働しており、3つのGaleraノードで構成されています。なんとかMariaDB10.4GaleraClusterをAmazonEC2にデプロイできました。