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

このチュートリアル シリーズでは、可用性の高い 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 のセットアップだけです。これは明日のチュートリアルの最後の部分で実行します。