【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜】インフラ / サーバーサイドエンジニア募集中!

【2024年2月~】25年卒 エンジニア新卒採用の募集を開始!

【2024年2月~】25年卒 エンジニア新卒採用の募集を開始!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【低コスト】Wasabi オブジェクトストレージ 構築・運用サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【中国現地企業に対応】中国クラウド / サーバー構築・運用保守

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

「HyperDB」WordPressでDBの冗長化・負荷分散を行うプラグイン

インフラエンジニアの伊藤です。

AWSなどクラウドを使うと、簡単にサーバを複製してロードバランサー経由でサイトへのアクセスを冗長化・負荷分散出来るようになりました。

この状態であればWebサーバに関しては冗長化・負荷分散されていますが、データベースが冗長化・負荷分散されていません。

もしデータベースに対してのアクセスが多かった場合、
Webサーバへの負荷は大丈夫だけど、DBサーバ側の処理が詰まってサイトが表示されないという可能性が出てきます。

前置きが長くなりましたが、WordpressはいわゆるLAMP環境で動くコンテンツ。
ということはDBを使用しているので、Webサーバを冗長化していてもDBが詰まってしまうと…

503 Service Temporarily Unavailable

見たくないエラーが出てきます。。

そんなとき、DBも冗長化してあげましょう!!
ということで、WorpdressのDB冗長化を実現するプラグイン「HyperDB」の紹介です。

AWSの場合、RDSの冗長化は簡単に可能ですよね。
マスターとなるRDSの「リードレプリカ」を作成するだけでOKです。
なので説明は割愛します。

HyperDBをインストールする

HyperDBプラグインのインストールは少々複雑です。
というのも、Wordpress管理画面からインストールは可能なのですが、
実際の設定はphpファイルに直接書き込む必要があります。

インストール後は、Wordpressのwp-content/plugins/hyperdbに以下のファイルがあるかと思います。
「db-config.php」
サーバにSSHで接続出来る方はSSHで、ftp等のみで接続出来る方は事前に設定を入れて対象のディレクトリに
アップロードする必要があります。

まずはwp-config.phpに以下の内容を記載します。「DBの設定ファイルはdb-config.phpだよ」です。

# vim /pass/to/docroot/wp-config.php
define('DB_CONFIG_FILE', ABSPATH . 'db-config.php');

続けて設定をしていきましょう。

HyperDBの設定

設置したdb-config.phpに対して、以下の設定をしていきます。

まずはマスターサーバの設定をします。(217行目付近、v1.1にて確認)

# vim /pass/to/docroot/db-config.php
$wpdb->add_database(array(
        'host'     => 'RDS(マスターサーバ)のエンドポイントを入力',
        'user'     => DB_USER,
        'password' => DB_PASSWORD,
        'name'     => DB_NAME,
        'write'    => 1,
        'read'     => 2,
));

hostはRDSのエンドポイントを入力しますが、デフォルトの3306ポート以外を使用する場合、
<エンドポイント>:<ポート番号>とコロンに続けてポート番号を入力する必要があります。

write、readがポイントです。

  • write:DBへの書き込み優先度
  • read:DBへの読み込みの優先度

「0」に設定すると書き込み、読み込みを行わない設定になります。
上記の場合だと、マスターサーバへの書き込み優先度が高く、読み込み優先度は低くなります。

続けてスレーブサーバの設定です。
先ほどのマスターサーバの設定の下にでも追記してください。

# vim /pass/to/docroot/db-config.php
$wpdb->add_database(array(
        'host'     => 'RDS(スレーブサーバ)のエンドポイントを入力',
        'user'     => DB_USER,
        'password' => DB_PASSWORD,
        'name'     => DB_NAME,
        'write'    => 0,
        'read'     => 1,
));

ここでもwrite,readが威力を発揮します。

  • write:0=そのサーバに対して書き込みを行わない
  • read:1=読み込みの優先度が高く、writeが0なので読み込み専用

この設定をすると、スレーブサーバにはreadのみが行われます。
同様に、複数のスレーブサーバを登録してあげると、読み込みがスレーブサーバにのみ行われるようになります。
これでスレーブサーバでDBへの読み込み(つまり通常のアクセス)が負荷分散されるようになりました。

WordPressではDBに書き込みを行うのは、設定の変更や記事の追加など、管理画面から行うものばかりになります。
それはマスターサーバへ書き込み優先度を高く設定しているので問題ありません。

ということで、これでWordpressのDBの冗長化・負荷分散がされるようになりました!

これで急なアクセスにも安心!ですね。
HyperDB — WordPress Plugins

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
0
読み込み中...
0 票, 平均: 0.00 / 10
4,217
X facebook はてなブックマーク pocket
【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【2024.6.30 CentOS サポート終了】CentOS サーバー移行ソリューション

【2024年2月~】25年卒 エンジニア新卒採用の募集を開始いたします!

【2024年2月~】25年卒 エンジニア新卒採用の募集を開始いたします!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

この記事をかいた人

About the author