レビューメディア「ジグソー」

原子星雲レビュー HAクラスタ、ロードバランサに挑戦

レビューインフィニティ第3弾「原始星雲」のレビュアーに選出していただきありがとうございます。
まさかレビューに選出されるとは思ってなかったのでびっくりです。
皆さんに見てもらえるよう頑張ってレビューしていきたいと思います。
また、こういった所を検証してほしいみたいな意見があれば可能な限り検証してみたいと思います。

本レビューはCentOS6.0のRHCSを使ってのHAクラスタの構築をして、その同期、障害などの試験を行います。
また、HAクラスタがうまくいけばさらにロードバランサ用にも1台組み上げての試験を行いたいと思ってます。

手さぐりでの構築ですので失敗も多いでしょうが暖かく見守ってください。

8月11日(レビュー1日目)
 zigsow様から荷物が届きました。早速開梱!


 なかなか壮観ですね。マザーボード4台も使えるなんて、なんて贅沢!!
 これでいいろんな実験できるな~なんて心躍らせるも、この日は検品のみで終わりです。
 明日からがんばって構築していきたいと思います。


8月12日(レビュー2日目)
 今日から早速構築していきます。

 全体の構成を以下に予定して構築します。


 ・h0.zigsow.net:クラスタ管理サーバ、ストレージサーバ(WEBコンテンツ用)、状態監視サーバ(cacti)
 ・h1~h3.zigsow.net:クラスタメンバ、httpd

 h1~h3.zigsow.netにはOS等の入るHDDは搭載しておりますが、ストレージサーバ上の
 ディスクをgfsにてマウントし、コンテンツ等データ共有しています。

 まずはh0.zigsow.netの構築です。
 HDDにはこれを



 メモリにはこれの1枚を利用します。



 初めにBIOSの確認。
 

 バージョンは0069のようです。
 現時点での最新は0086のようですので早速UPDATEです。
 

 ちょっと見づらいですがUPDATE中・・・UPDATE方法はINTELのHP
を参照してください。

 UPDATE完了したので確認。
 

 きちんと0086にあがってます。
 ついでに少しでもHDDの性能を引き出す為にSATAの項目もAHCIに変更します。
 
 それではOSのインストールです。
 

 細かいところは省きますがだいたい以下で設定してます。
 
 パーティションは下記で設定
 ・/boot 500M
 ・/ 20G

 下記のみインストール
 ・ベースシステム-ベース
 ・開発-開発ツール

 余分なものは一切いれず、サーバ目的なのでGUIもいれません。

 OSインストール後はSSHにて作業していきます。
 また、selinuxやFWの検証は今回省きますので、それぞれ停止します。
 ・iptablesの停止 
 ・selinuxはpermissive

 初めにクラスタメンバをwebで管理できるluciをyumでインストールします。 

 これでluciを起動すれば、他端末からアクセスできるはずです。

 ブラウザからhttps://192.168.10.230:8084にアクセスします。
 証明書のエラーが出ますが気にせず進めればluciのログイン画面が表示されます。


 CentOS6.0では認証はサーバのログインID、PASSと連動しているようです。以前のバージョンのような初期設定は必要ないようです。


 管理画面にログインできたので今日はここまで。

 15日(レビュー3日目)
 3日目にはメンバーサーバであるh1~h3.zigsow.netの構築をします。

 ハードウェア構成はほぼ管理サーバと同じですが、h3.zigsow.netのみHDDが足りませんでしたので、引き出しの奥で眠ってたHDDをつないでます。
 当然マザーボードのファームウェアも更新しています。
 また、OSのインストール項目も同じです。

 OSインストール完了後管理サーバにはcacti、各サーバにsnmpのインストールと設定をしてサーバの各状態をみれるようにしておきます。

 次にクラスタ管理のクライアントソフトのricciをインストールします。
 これで管理サーバのluciからアクセスできるようになります。
 
 そこでzigsow-clusterというクラスタグループを作成し、h1~h3.zigsow.netを登録してみます。
 ここで必要なパッケージ等があればricciが勝手にインストールしてくれます。便利ですね~・・・

 登録完了・・・かと思いきやメンバーとして参加できない。なんでかな~
 
 3台のインストールに時間がかかったので原因は明日調べることにします。
 

8月16日(レビュー4日目)
 どうもクラスタメンバーとして登録してもcmanというデーモンがエラーで動いてなかった様子。
 原因は名前解決。hostsに自分以外のhostsは書いてましたが、どうも自分自身も必要だった様子。

 
luci2
luci2


 丸一日かかっちゃいましたがなんとかメンバー登録に成功しました。

8月17日(レビュー5日目) 
 続いてクラスタの設定をどんどん行っちゃいましょう。
 FailoverDomain、Resource、Serviceの順に設定します。構築ガイドになっちゃいそうなのでこの辺は簡単に・・・
 ・FailoverDomain:フェイルオーバーするサーバ群設定
 ・Resource:Failoverする対象サービスの登録
 ・Service:FailoverDomainとResourceのくくりつけ
 といったところでしょうか・・・
 
 また、各サーバはストレージサーバにiscsiで接続し、ファイルシステムgfs2でclvmを構築しています。
 WEBのコンテンツはclvm上に置いています。 

 うまくいったっぽいので確認

[root@h1 ~]# clustat
Cluster Status for zigsow-cluster @ Wed Aug 17 13:15:14 2011
Member Status: Quorate

Member Name ID Status
------ ---- ---- ------
h1.zigsow.net 1 Online, Local, rgmanager
h2.zigsow.net 2 Online, rgmanager
h3.zigsow.net 3 Online, rgmanager

Service Name Owner (Last) State
------- ---- ----- ------ -----
service:httpd h1.zigsow.net started

 ここでhttpdを落としてみます。

[root@h1 ~]# service httpd stop
httpd を停止中: [ OK ]


[root@h1 ~]# clustat
Cluster Status for zigsow-cluster @ Wed Aug 17 13:15:27 2011
Member Status: Quorate

Member Name ID Status
------ ---- ---- ------
h1.zigsow.net 1 Online, Local, rgmanager
h2.zigsow.net 2 Online, rgmanager
h3.zigsow.net 3 Online, rgmanager

Service Name Owner (Last) State
------- ---- ----- ------ -----
service:httpd (h2.zigsow.net) recoverable
[root@h1 ~]# clustat
Cluster Status for zigsow-cluster @ Wed Aug 17 13:15:42 2011
Member Status: Quorate

Member Name ID Status
------ ---- ---- ------
h1.zigsow.net 1 Online, Local, rgmanager
h2.zigsow.net 2 Online, rgmanager
h3.zigsow.net 3 Online, rgmanager

Service Name Owner (Last) State
------- ---- ----- ------ -----
service:httpd h1.zigsow.net starting

 h2に行った後、h1のhttpdサービスが再起動して戻ってきたみたいです。
 
 次にh1の強制切断です。LANケーブル引き抜きます。
 本来ならここで自動で切り替わるのですが、本検証ではFenceDevice対応機器がなかったため設定してません。
 なのでh1をコマンドでfenceingします。これで自動で切り替わります。
 この構成で実運用するなら状態監視して落ちたらfencingするスクリプトを書く必要がありそうですね。
 (18日終わりに簡易fencingスクリプト記載)

8月18日(レビュー5日目)
 ようやく本マザーボードでの検証らしいクラスタ動作中の各負荷等の検証をしてみます。

 まずはricciのみの状態です。(クラスタメンバ未登録)
 

 
 さすがに負荷も低いし、帯域も最大で150bits/sec程度です。

 次に仮想IPのみのクラスタ構成です。
 まずActiveとして動いているh1.zigsownetです。

 次にStandbyで動いていたh3.zigsow.netです。


 さすがにCPU USAGEやeth0の負荷があがってます。当然Activeの方が高くなってます。
 しかしCPU USAGEもActive側で10%程度。帯域も2~3kといったところでしょうか。

 次にhttpdのクラスタ構成時です。12:40頃に秒間10回程度30kのデータ読み込み負荷をかけました。
 最初はActiveのh1.zigsow.netです。

 eth0の帯域を使った以外特におおきな変化はないようです。

 次はStandbyのh3.zigsow.netです。

 stanby側の負荷はほとんど仮想IP時のstanby時から大きな変化はないようです。
 読み込み負荷だけならストレージサーバへのアクセスもほぼないようです。

 
以上の検証から、DualCore,HyperThreadingが効いてるのか本マザーでも十分クラスタ構築は可能なように思えます。
しかしあくまで単独動作とクラスタ構築した後の負荷の差が容認できるくらいそれほど大きくないというだけです。
単体でも厳しいような高負荷処理が必要なサーバには不向きかもしれません。
また、運用形態にもよるのでしょうが回線負荷を考えるとクラスタ管理サーバ、ストレージサーバへのアクセスは公開用とは別にNICを構えたほうがいいかもしれません。


現在自宅では


こいつでWEB,DNS,MAILサーバを運用してますが、十分置き換えてもやっていけそうです。
今回は時間的にhttpdのみクラスタ化しましたが、DNSならZONEファイル、MAILならMAIL BOXをストレージサーバに置き、共有化してやればこれらのクラスタリングも可能に思えます。

少し休憩して次はロードバランサを構築しその負荷等を見ていきたいと思います。

余談ですが、何台もケース並べるのもあれなのできちんとしたケースも作りたいですね・・・
 
 17日に記載していたfencing用スクリプトの雛型を作ったので記載します。

############fencing.sh###############
#!/bin/sh
#---------定数------
TARGET_HOST="h1.zigsow.net"

#--------死活監視----
ping -c 3 ${TARGET_HOST}
ret=$?
read fid < /tmp/fenc.dat

if test ${ret} -eq 0
then
echo "正常稼働中"
echo 1 > /tmp/fenc.dat
else
if test ${fid} -eq 1
then
echo "障害発生中。fencingします"
sleep 2; echo absolutely | /usr/sbin/fence_ack_manual -n ${TARGET_HOST}
echo 0 > /tmp/fenc.dat
fi
fi
###################################

 h1.zigsow.netにpingが飛ばなくなったらfencingします。
 これをcronに登録するなりループさせてサービス登録すればfencingを完全自動化できます。
 これを書き換えてh2,h3.zigsow.netのfencingにも対応できます。
 
8月19日(レビュー6日目)
 今まで仮想IPとhttpdだけクラスタ化してましたが、bind(DNS)とpostfix(mail)もクラスタ化しました。
 そのときのactive側のh1.zigsow.netの各状態です。

 

 
 httpdだけの時と対した差はなさそうです。まぁ負荷かけてないから当然といえば当然かもしれませんが・・・・
 クラスタで制御するサービスが増えても制御による負荷はほとんどかからないようです。
 
 次に各サービスのActiveサーバを振り分けます。
 

 こんな感じです。
 ・h1.zigsow.net:httpd active(192.168.10.246)
 ・h2.zigsow.net:DNS active(192.168.10.247)
 ・h3.zigsow.net:MAIL active(192.168.10.248)

[root@h3 ~]# clustat
Cluster Status for zigsow-cluster @ Fri Aug 19 13:50:00 2011
Member Status: Quorate

Member Name ID Status
------ ---- ---- ------
h1.zigsow.net 1 Online, rgmanager
h2.zigsow.net 2 Online, rgmanager
h3.zigsow.net 3 Online, Local, rgmanager

Service Name Owner (Last) State
------- ---- ----- ------ -----
service:http h1.zigsow.net started
service:mail h3.zigsow.net started
service:named h2.zigsow.net started


 こうすることで今までstandbyで何もしてなかったサーバも有効利用することができます。
 当然サービスが停止したり、サーバがダウンすると生き残ってるサーバがサービスを引き継ぎます。
 (サーバダウンは前述のfencingスクリプト利用)
 
 このときの各サーバの状態です。
 

 程良く同じような負荷が3台共にかかっているようです。
 先ほどの1台で3つサービスを動かしてクラスタリングするより、このほうが無駄なく使えてるような気がします。

8月23日(レビュー7日目)

 せっかく


 これを手に入れたので消費電力チェックです。

 だいたい33~34Wで揺れています。

 普通のPCに比べれば断然省電力ですね。


8月24日(レビュー8日目)
 さて、HAクラスタが一区切りついたのでロードバランサの導入を行います。
 構成はこれで
 


 ちょっとわかりずらいかもしれませんが、VIP:192.168.10.249で受けたリクエストをh1~h3に順番に
処理(ルーティング)させます。
 つまり、1回目のリクエストはh1が処理、2回目のリクエストはh2が処理・・・みたいな感じですね。

 さて早速設定します。VIPはh0.zigsow.netが制御しますので、h0にyumでpiranhaをインストールします。
 次にpiranha-passwdでログインパスワードの設定をしたあとはpiranhaの起動すればWEBであとは設定できます。
 http://h1.zigsow.net:3636/にアクセスするとログイン画面が出てきます。

 また設定ガイドにならないように簡単に・・・
 GLOVAL SETTING -> VIRTUAL SERVERS -> REAL SERVERSの順で設定します。

・GLOVAL SETTING:h0サーバとネッワーク方式(今回はDirect)の登録
・VIRTUAL SERVERS:VIP、対象ポート、分散方式(今回はラウンドロビン)の登録
・REAL SERVERS:実サーバの登録

 設定後pulseの起動で仮想IPが立ち上がり、VIPにきたリクエストが各サーバに分配されます。

 次にh1~h3でループバックインターフェースにVIPを持たせVIP宛の通信を受け取れるようにします。
#######ifcfg-lo:0#################
DEVICE=lo:0
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.255
################################

 さらにarpリクエストはVIP側に任せるようにします。

########sysctlcfg#############
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
################################

これで設定完了です。実際にブラウザで見てみます。


順番にサーバが切り替わっているのがわかります。

ロードバランサを立ち上げた時のサーバ状態です。


 今までの検証からすると当然といえば当然ですが、とりわけ負荷は低くロードバランサを入れたからといって特別負荷がかかるということはなさそうです。


 ずいぶん長くなってしまいましたがこれで一通りの検証が終わりました。
 結論としてクラスタ、ロードバランサも制御に関しては十分D525で処理できるといえそうです。
 ですので、D525単体で動かせるサービスであればクラスタリング、ロードバランスで冗長構成は作れます。
 実際私は 


でWEB,DNS,MAILサーバを自宅で動かしてますが、普通に使ってる分には不具合はなかったので個人レベルの自宅サーバ用途としては十分ではないでしょうか?
ファンレスで省電力なので、サーバ用途としては非常に有力なマザーだと思います。

今後もコメント等で要望があれば検証項目追加して追加したいと思います。

コメント (13)

  • daiyanさん

    2011/08/18

    プロの仕事を見た…
    続きも期待してます。
  • eulerさん

    2011/08/24

    コメントありがとうございます。
    プロというほどしっかり検証してないので恥ずかしいですが・・・
    期待に添えるようがんばります。
他10件のコメントを表示

ZIGSOWにログインするとコメントやこのアイテムを持っているユーザー全員に質問できます。

YouTube の動画を挿入

YouTube の URL または動画の ID を入力してください

動画の ID が取得できません。ID もしくは URL を正しく入力してください。

ニコニコ動画の動画を挿入

ニコニコ動画の URL または動画の ID を入力してください

動画の ID が取得できません。ID もしくは URL を正しく入力してください。

ZIGSOWリンク挿入

検索対象とキーワードを入力してください

    外部リンクを挿入

    リンク先の URL とタイトルを入力してください

    URL を正しく入力してください。

    画像を挿入(最大サイズ6MB)

    画像を選択してください

    ファイルサイズが6MBを超えています

    別の画像を追加

    ZIGSOW にログイン

    ZIGSOW会員登録(無料)はこちらから