5丁目通信(仮称)

とある5丁目で活動する還暦を過ぎたWebプログラマーの覚え書きです。それとかかってくる迷惑電話や、家業のアパート経営について。

#WordPress サイトの負荷分散の実験をした話し


KVMで2つ仮想を立ち上げて、のサイトをリプリケーションして、サーバーの冗長化と負荷分散の実験してみました。

最初に1つのサーバーにWordpressをして、それからKVMのクローンでサーバーをもう一つ作ってしまいます。IPアドレスを別にして2つWordpressのサイトが動く状態にします。

次に、のリプリケーションのをします。設定方法は、

MySQL レプリケーションの設定 – とみぞーノート

辺りを参考にしました。Wordpressの負荷分散は、HyperDBというを使用します。これもまた、

HyperDBでWordPressとMySQLのレプリケーションを組み合わせて使う | ひげろぐ

たった30分でWordPressを冗長化する方法 » (っ´∀`)っ ゃー

辺りを参考に設定します。

これで、片方のサーバーのMySQLを停止してもWordpressのサイトを参照できるかを確認します。

よく考えれば当たり前なのですが、MySQLをマスターにリプリケーションに設定したほうのMySQLを停止したら、参照ができるがができないようになっていました。これで成功なのです。マスターのMySQLにが発生したら、スレーブのMySQLからDBを復旧する手順になるのでしょう。

更新は、強制的にマスターサーバーになります。これはHypeDBの機能なのでしょう。スレーブサーバーで更新してしまったら、MySQLのリプリケーションのトラブルになってしまいます。

記事を追加したら、すぐにスレーブサーバーでも参照できるようになります。こちらはMySQLのリプリケーションが正常に動作してしているからです。

マスターとスレーブの切り替えは、のラウンドロビンの機能で実現できそうです。必ず管理ページからはマスターのMySQLのに格納されるかが確認する必要がありますが、こちらはローカルにDNSを置いていないので未確認です。

以上でWordpressの二重化の実験は完了と言いたいところですが、一つ忘れていました。Wordpressのメディア機能でアップロードしたファイルは、マスターに存在することになります。スレーブのサーバーにアクセスした場合は、存在しないことになります。そこで、/var/www/wp-content/uploads/以下のファイルをマスターからスレーブサーバーに同期を取ってあげないといけません。

cronでrsyncを実行していいのですが、ここではlsyncdでサーバー間をリアルタイム(数秒の遅延はありますが)で同期を取ってしまいます。

lsyncd2+rsyncdでのミラーサーバー構築 | Nibelungen Code

lsyncd を使ってWinSCP的なリアルタイム同期を実現する. – ブックマクロ開発に

を参考に設定しました。これでマスターとスレーブのWordpressのサイトで、アップロードされた画像が正しく参照できるを確認します。

ブログランキング・にほんブログ村へ 人気ブログランキング

“#WordPress サイトの負荷分散の実験をした話し” への1件のコメント