• Ubuntuに関連したハード、ソフトの備忘録サイトです

LVSによる負荷分散対策を取り入れたSOHOネットワークの構築方法(基礎編)

  • 2013年10月29日

次の図が、宅内メインサーバーからロードバランサーにアクセスした図です。

lv01

トップページです。

lv02

ダッシュボード(管理画面)にログインするページです。

lv03

管理画面のページです。

【6】Keepalivedによる死活監視

負荷分散で使っているサーバーの1台以上がダウンすると、サイトが見えなくなります。そこで、Keepalivedと組み合わせる必要があります。Ubuntuでのインストールは、$ apt-get install keepalivedです。設定ファイルは、/etc/keepalived/keepalived.confですが、設定ファイルの例がたくさんインストールされます。最初にかかげたサイトに非常に分かりやすく基本的な設定の仕方が書いてありますので、それを参考に次のようにしました。

! Configuration File for keepalivedglobal_defs {
notification_email {
nomura@it-ishin.com ! ←通知メールの送信先メールアドレスを指定
}
notification_email_from nomura@it-ishin.com ! ←通知メールの送信元メールアドレスを指定
smtp_server 157.7.156.150 ! ←メール送信に使用するSMTPサーバーのIPアドレスを指定
smtp_connect_timeout 30
router_id LVS_DEVEL ! ←ロードバランサを識別するための名前を指定
}
virtual_server 192.168.1.2 80 { ! ←対象とする仮想サービスを指定
delay_loop 5 ! ←死活監視のためのポーリング間隔を秒で指定
lvs_sched rr ! ←負荷分散方式を指定
lvs_method NAT ! ←パケットの転送方式を指定
protocol TCP ! ←対象とするプロトコルを指定
sorry_server 192.168.1.2 80 ! ←サーバーがすべて停止した場合のパケット転送先を指定real_server 192.168.10.10 80 { ! ←仮想サービスに対応するサーバーを指定
weight 1 ! ←負荷分散の重みを指定
inhibit_on_failure ! ←サービスが停止した場合には重みを0にする
HTTP_GET { ! ←ポーリングに使用するプロトコルを指定
url {
path / ! ←ポーリング先URLを指定
status_code 200 ! ←正常な場合に返されるステータスコードを指定
}
connect_timeout 5 ! ←ポーリングのタイムアウト時間を秒で指定
nb_get_retry 3 ! ←リトライ回数を指定
delay_before_retry 3 ! ←リトライ時に待機する時間を秒で指定
}
}real_server  192.168.10.11 80 {
weight 1
inhibit_on_failure
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 5
nb_get_retry 3
delay_before_retry 3
}
}
}

大体の概要は以上ですが、①クライアントからデータを更新することが完全にできるかどうか、検証する必要がある②安全にデータを更新するには、バックエンドから更新したほうが良さそう③プラグインなどを入れる場合は、バックエンドから1台ずつ入れざるを得ない―などの問題がありそうです。

負荷分散の一番の問題は、サーバー間のデータの同期のようです。

※電気代を食うのでその点は気をつける必要があります。ただし、KVMで仮想サーバーを作る手もあります。DBサーバー上にKVMで仮想サーバーを2台作り、それぞれのIPアドレスを192.168.10.13,192.168.10.14とし、Wordpressをインストールしましたら、同じ結果が得られました。

※Ubuntu13.10のApache2.4ではデフォルトで.htaccessが効かないようになっています。と言いますか、設定方法が変わっています。従いまして、mod_rewriteを有効にしただけでは、サイトのURLの書き換えができません。Allowoverride Allを設定ファイルに入れる必要がありますが、設定ファイルを精査する必要があります。

※本来は、DMZ(非武装地帯)に公開サーバーを置き、負荷分散・冗長化対策を行うべきです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA