検索
連載

障害時にサブサーバへ自動で切り替える「高可用性WordPressシステム」の作り方 前編DRBDの仕組みを学ぶ(5)(1/4 ページ)

サービスを止めてはならない環境で活躍する冗長化支援ツール「DRBD」。今回は、CMSツールとして多くのWebサイトで利用されている「WordPressサーバ」の高可用性をDRBDで確保する方法を解説します。前編は、必要なソフトウェアのインストールと初期設定までを説明します。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

連載バックナンバー

 サービスを止めてはならない環境で活躍する冗長化支援ツール「DRBD(Distributed Replicated Block Device)」が有効な実用シーンとして、前回は「Sambaサーバの冗長化」に関する構築ノウハウを解説しました。この回は障害発生時の切り替えを手動で行う方法を解説しましたが、「自動」での切り替えを望まれる方も多いでしょう。そこで今回は、「自動切り替え」を実装した「高可用性WordPressサーバ」の構築ノウハウを紹介します。

 高可用性システムとは、「サービスのダウンタイムが少ないシステム」を指します。HA(High Availability)構成、HAサーバ、HAクラスタなどとも呼ばれますが、本稿では高可用性システムの呼び方で統一します。DRBDを用いたシステムでは、「Pacemaker」「Corosync」というソフトウェアを組み合わせて、障害発生時に自動で切り替えを行う高可用性システムを実現します。今回はCentOS 7へインストールしたWordPressサーバを題材とし、DRBD 8.4.6、Pacemaker 1.1.13、Corosync 2.3.4をベースにインストール手順、設定ファイルの解説、構築手順を追って解説していきます。


DRBDで冗長化した「高可用性WordPressシステム」を構築する

 今回構築する高可用性WordPressシステムの構成イメージは、図1の通りです。

photo 図1 DRBDで冗長化した高可用性WordPressシステムの構成図

前提条件

  • WordPressは、プライマリ機とセカンダリ機へ共にインストール済みとして解説します
  • WordPressのインストール手順は、本稿では割愛します(WordPressについては、別途こちらなどを参照ください)
  • プライマリ機とセカンダリ機で「Apache」および「MariaDB」が起動している場合は一時停止して、自動起動もオフにしてください
  • WordPressをインストールした領域は「/var/www/html/wordpress」、MariaDBの領域は「/var/lib/mysql」として解説します

 二台のWordPressサーバは、メインの一号機(ホスト名:wp-ha1)を「プライマリ機」、他方の二号機(ホスト名:wp-ha2)を「セカンダリ機」として、高可用性システムを構成します。

 DRBDでデータをリアルタイムに複製(レプリケーション)し、Pacemakerで各サービスの起動や停止を管理。そして、Corosyncで二台のサーバをお互いに監視します。監視の経路は二つのネットワークインタフェースで冗長化されています。

 ユーザーはVIP(仮想IPアドレス)である「192.168.0.50」へアクセスして、WordPressによるWebサイトを閲覧します。ユーザーはVIPにアクセスしますが、通常時は一号機へアクセスすることになります。データの流れは、前出の図1の赤線のようになります。

 障害発生時は、図2のように切り替わります。

photo 図2 プライマリ機の障害を検知し、セカンダリ機へ自動で切り替わる

 障害発生時は、自動的に二号機側に切り替わりますが、ユーザーのアクセス手順は変わりません。また、WordPressのデータはリアルタイムで二号機にレプリケーション(複製)されていますので、プライマリ機を切り替えた後も、障害が発生する直前より再開できるということになります。

 DRBDのレプリケーションは「リソース」と呼ばれる単位で行われます。今回はWordPress用(リソース名:r0)と、データベース用(リソース名:r1)の二つのリソースを作成し、リアルタイムにレプリケーションします。

 ネットワーク構成は以下の通りです。

インタフェース プライマリ機 セカンダリ機 用途
VIP 192.168.0.50 仮想IPアドレス
eth0 192.168.0.51 192.168.0.52 サービス用LAN
eth1 10.0.0.1 10.0.0.2 Corosync監視用
eth2 10.0.1.1 10.0.1.2 DRBD同期+監視用

 ここでのネットワークインタフェース名は便宜上eth0、eth1、eth2としましたが、CentOS 7では「enXXX」のようになります。

Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ
ページトップに戻る