KVMで2つ仮想サーバーを立ち上げて、Wordpressのサイトをリプリケーションして、サーバーの冗長化と負荷分散の実験してみました。
最初に1つのサーバーにWordpressをインストールして、それからKVMのクローンでサーバーをもう一つ作ってしまいます。IPアドレスを別にして2つWordpressのサイトが動く状態にします。
次に、MySQLのリプリケーションの設定をします。設定方法は、
辺りを参考にしました。Wordpressの負荷分散は、HyperDBというプラグインを使用します。これもまた、
辺りを参考に設定します。
これで、片方のサーバーのMySQLを停止してもWordpressのサイトを参照できるかを確認します。
よく考えれば当たり前なのですが、MySQLをマスターにリプリケーションに設定したほうのMySQLを停止したら、参照ができるが更新ができないようになっていました。これで成功なのです。マスターのMySQLに障害が発生したら、スレーブのMySQLからDBを復旧する手順になるのでしょう。
更新は、強制的にマスターサーバーになります。これはHypeDBの機能なのでしょう。スレーブサーバーで更新してしまったら、MySQLのリプリケーションのトラブルになってしまいます。
記事を追加したら、すぐにスレーブサーバーでも参照できるようになります。こちらはMySQLのリプリケーションが正常に動作してしているからです。
マスターとスレーブの切り替えは、DNSのラウンドロビンの機能で実現できそうです。必ず管理ページからはマスターのMySQLのデータベースに格納されるかが確認する必要がありますが、こちらはローカルにDNSを置いていないので未確認です。
以上でWordpressの二重化の実験は完了と言いたいところですが、一つ忘れていました。Wordpressのメディア機能でアップロードしたファイルは、マスターに存在することになります。スレーブのサーバーにアクセスした場合は、存在しないことになります。そこで、/var/www/wp-content/uploads/以下のファイルをマスターからスレーブサーバーに同期を取ってあげないといけません。
cronでrsyncを実行していいのですが、ここではlsyncdでサーバー間をリアルタイム(数秒の遅延はありますが)で同期を取ってしまいます。
を参考に設定しました。これでマスターとスレーブのWordpressのサイトで、アップロードされた画像が正しく参照できるを確認します。
コメント
“#WordPress サイトの負荷分散の実験をした話し” への1件のコメント
[…] Post navigation ← Previous […]