2024年版、高可用性WordPressサイトをゼロから構築!パート6:MariaDBマルチマスター

2024年版、高可用性WordPressサイトをゼロから構築!パート6:MariaDBマルチマスター

高可用性WordPress

このチュートリアル シリーズでは、可用性の高い WordPress Web サイトを最初から設定します。

パート1 – 概要、考慮事項、アーキテクチャ
パート2 – VPSの注文
パート3 – Ansible
パート4 – 輝き
パート5 – WordPressのインストール
パート6 – MariaDBマルチマスター(この記事)
パート7 – ラウンドロビンDNS、Let's Encrypt、そしてまとめ

MariaDB のセットアップを簡単にするために、Gluster を引き続き活用していきます。

私たちが使用しているのは、MariaDBのGaleraクラスターです。Galeraは3つのノードすべてを同期させ、マルチマスター構成を採用しているため、ノード1に投稿、訪問者がノード2にコメント、あるいは別の訪問者がノード3に返信すると、3つのデータベースすべてが即座に更新され、同じ変更が反映されます。

Gluster の状態は次のとおりです。

 root@node1:/gluster/www.lowend.party# cd /gluster/
ルート@node1:/gluster# ll
合計13
drwxrwxrwx 5 ルート ルート 4096 3 月 2 日 19:13 。
drwxr-xr-x 21 root root 4096 3月 2日 19:09 ..
-rw-r--r-- 1 ルート ルート 50 3月 2日 19:11 テストファイル.txt
drwxrwxr-x 5 www-data adm 4096 3月 2日 19:31 www.lowend.party

ノード1にWordPressをセットアップし、ノード1のMariaDBにインストールしたことを思い出してください。ノード1で、そのデータベースをGlusterボリュームにダンプしてみましょう。

 root@node1:/gluster# mysqldump wp > wp.sql
ルート@node1:/gluster# ll
合計44
drwxrwxrwx 5 ルート ルート 4096 3 月 2 日 19:32 。
drwxr-xr-x 21 root root 4096 3月 2日 19:09 ..
-rw-r--r-- 1 ルート ルート 50 3月 2日 19:11 テストファイル.txt
-rw-r--r-- 1 ルート ルート 31529 3月 2日 19:32 wp.sql
drwxrwxr-x 5 www-data adm 4096 3月 2日 19:31 www.lowend.party

これをノード 2 と 3 にインポートします。

 mysql wp < /gluster/wp.sql

すべてのノードで、MariaDB をシャットダウンします。

 servicectl 停止 mariadb

ノード1で、次のように/etc/mysql/mariadb.conf.d/60-galera.cnfを作成します。

 [ガレラ]
# 必須設定
wsrep_on = オン
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name = "MariaDB Galera クラスター"
wsrep_cluster_address = gcomm://5.78.68.150,5.78.91.194,5.78.74.126
binlog_format = 行
デフォルトストレージエンジン = InnoDB
innodb_autoinc_lock_mode = 2
wsrep_sst_method=rsync

# サーバーがすべてのインターフェースで接続を受け入れることを許可します。
バインドアドレス = 0.0.0.0

そして、そのファイルを Gluster に配置します。つまり、すべてのノードにすぐに配置されます。

 cp /etc/mysql/mariadb.conf.d/60-galera.cnf /gluster

ノード2と3の場合:

 cp /gluster/60-galera.cnf /etc/mysql/mariadb.conf.d/

Galeraクラスターの初期化

ノード 1:

 galera_new_cluster

これにより、MariaDB も起動します。

ノード2および3の場合:

 systemctl で mariadb を起動します。

ノード 1:

 MariaDB [(なし)]> SELECT VARIABLE_VALUE as "cluster size" FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_cluster_size";
+--------------+
| クラスター サイズ |
+--------------+
| 3 |
+--------------+
セット内の1行(0.001秒)

では、試してみましょう。私のお気に入りのテレビ番組に基づいて、テストテーブルを作成します。

ノード 1:

 MariaDB [(なし)]> use wp;
テーブル名と列名の補完のためのテーブル情報の読み取り
-A でこの機能をオフにすると起動が速くなります

データベースが変更されました
MariaDB [wp]>テーブル hogans_heroes ( id integer, rank varchar(15), name varchar(30) ) を作成します。
クエリは正常、影響を受けた行は 0 行です (0.008 秒)

MariaDB [wp]> hogans_heroes (id, rank, name) の値を挿入 
( 1、「大佐」、「ロバート・ホーガン」)
クエリは正常、1行が影響を受けました(0.002秒)

MariaDB [wp]> hogans_heroes (id, rank, name) の値を挿入 
(2、「軍曹」、「ジェームズ・キンクロエ」)
クエリは正常、1行が影響を受けました(0.002秒)

MariaDB [wp]> hogans_heroes (id, rank, name) の値を挿入 
( 3、「伍長」、「ピーター・ニューカーク」)
クエリは正常、1行が影響を受けました(0.002秒)

MariaDB [wp]> hogans_heroes (id, rank, name) の値を挿入 
(4、「伍長」、「ルイ・ルボー」)
クエリは正常、1行が影響を受けました(0.002秒)

MariaDB [wp]> hogans_heroes (id, rank, name) の値を挿入 
( 5、「軍曹」、「アンドリュー・カーター」)
クエリは正常、1行が影響を受けました(0.002秒)

では、node2のMariaDBを見てみましょう。node2では次のようになります。

 MariaDB [wp]> hogans_heroes から * を選択します。
+------+----------+----------------+
| ID | ランク | 名前 |
+------+----------+----------------+
| 1 | 大佐 | ロバート・ホーガン |
| 2 | 軍曹 | ジェームズ・キンクロエ |
| 3 | 伍長 | ピーター・ニューカーク |
| 4 | 伍長 | ルイ・ルボー |
| 5 | 軍曹 | アンドリュー・カーター |
+------+----------+----------------+
セット内の行数は5行(0.000秒)

完璧!でもちょっと待って…シーズン6で、ジェームズ・キンクロ軍曹役のアイヴァン・ディクソンが番組を去り、ケネス・ワシントン演じる新キャラクター、リチャード・ベイカー軍曹に交代しました。ノード3でそのアップデートをしましょう。

 MariaDB [wp]> name = 'James Kinchloe' である hogans_heroes から削除します。
クエリは正常、1行が影響を受けました(0.003秒)
MariaDB [wp]> hogans_heroes (id,rank,name) の値を挿入
(6、「軍曹」、「リチャード・ベイカー」)
クエリは正常、1行が影響を受けました(0.002秒)
それがノード1に複製されたかどうかを確認しましょう。

MariaDB [wp]> hogans_heroes から * を選択します。
+------+----------+---------------+
| ID | ランク | 名前 |
+------+----------+---------------+
| 1 | 大佐 | ロバート・ホーガン |
| 3 | 伍長 | ピーター・ニューカーク |
| 4 | 伍長 | ルイ・ルボー |
| 5 | 軍曹 | アンドリュー・カーター |
| 6 | 軍曹 | リチャード・ベイカー |
+------+----------+---------------+
セット内の行数は5行(0.000秒)

当社の MariaDB Galera マルチマスター レプリケーションは問題なく動作しています。

残っているのはラウンドロビン DNS と Let's Encrypt のセットアップだけです。これは明日のチュートリアルの最後の部分で実行します。

おすすめの記事