- PR -

クラスタリングについて教えてください。

投稿者投稿内容
たかぴ
会議室デビュー日: 2004/08/24
投稿数: 18
投稿日時: 2006-12-13 15:52
私は、サイト製作・管理等の業務を行っている会社の者です。
どなたか、アドバイスいただけたら嬉しいです。

弊社の管理下にあるサイトで、アクセス増大の為クラスタリングを考えなければならない事態となりました。いままでは、負荷分散しなければならないようなサイトを運営した事は無いのですが、このサイトは新しい試みを行ったASPサービスという事もありまして、日々アクセス数が増大しています。トラフィック増大には帯域枠を増やし続けて対応していたのですが、CPU自体の負荷も大きくなってきたのです。

その為、現在2台のサーバで運用していた(1台はローカル接続し、ストレージとして利用)のを増やして負荷分散しようという事になりました。

そこで、疑問なのですが

例えば、もう2台を追加してロードバランサーで負荷分散する場合、両構成のマシンはあくまで1台のサーバとして取り扱う事ができるのでしょうか?

一番心配な点は、クライアント側からの呼び出しは良いとして、データの書き込み(変更)が要求された場合、両方のサーバに対し同一データが書き込まれるのでしょうか?

それとも、呼び出された方のサーバのみにしか反映しないのでしょうか?
そうなると、両サーバの整合性が取れなくなってしまう為、動的コンテンツを保存する為のサーバをもう1台設置しなければなりませんよね。ただ、その場合クラスタリングの意味が無いような気もするので…



NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2006-12-13 16:27
んと。
要するに簡単に書くと

【現状の構成】
Web−ASPサーバ−DBサーバ

って構成を

【望んでいる構成】
Web−ロードバランサ−ASPサーバ−DBサーバ
              |
              └ASPサーバ−DBサーバ

って構成にしたいって事だよね?

んでもって、疑問点として

(1)両構成のマシンはあくまで1台のサーバとして取り扱う事ができるのでしょうか?
(2)データの書き込み(変更)が要求された場合、両方のサーバに対し同一データが書き込まれるのでしょうか?
(3)それとも、呼び出された方のサーバのみにしか反映しないのでしょうか?

だよね。

上記構成及び質問を踏まえて。

(1)扱えません←(内部的にと言う意味で)
   外部から見れば他の方が書いている様に1つに見えます。
(2)書かれません
(3)その通りです

動的コンテンツを扱うならばその元ネタはDBにあるはずなので以下の様な構成(例)で組まないとDBが不一致を起こします。

Web−ロードバランサ−ASPサーバ−DBサーバ
              |       |←クラスタ構成
              └ASPサーバ−DBサーバ

ロードバランサがどちらかのASPサーバに負荷を考慮して負荷分散かけますので、
それに対して元ネタのDB上のデータが一致していないとNGです。

詳細はこの記事を一通り読むと解ると思います。 

http://www.atmarkit.co.jp/flinux/index/indexfiles/index-linux.html#cluster

【修正】
#内部的に見た場合と外部的に見た場合を追記


[ メッセージ編集済み 編集者: NAO 編集日時 2006-12-13 16:47 ]
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2006-12-13 16:27
引用:

たかぴさんの書き込み (2006-12-13 15:52) より:
例えば、もう2台を追加してロードバランサーで負荷分散する場合、両構成のマシンはあくまで1台のサーバとして取り扱う事ができるのでしょうか?



外から見れば同じサーバと見えるようになります。
具体的には仮想IPを振って接続単位で振り分ける構成ですね。

引用:

一番心配な点は、クライアント側からの呼び出しは良いとして、データの書き込み(変更)が要求された場合、両方のサーバに対し同一データが書き込まれるのでしょうか?



この辺りは「どんなデータをどこに格納しているか」次第です。

ローカルファイルだとすれば個別になってしまいますし、
NFSやCIFS等で共有しているのであれば当然ながら同一です。
他にもDBを使ったり共有ストレージを使う場合もあるでしょう。

セッションを使っているのならばSession Replicationが必要になりますし、
ファイル共有やDBだとしても可用性を求めるならば構成は変わってきます。
BackDoor
ぬし
会議室デビュー日: 2006/02/20
投稿数: 831
投稿日時: 2006-12-13 16:36
こんにちは。

引用:

たかぴさんの書き込み (2006-12-13 15:52) より:

弊社の管理下にあるサイトで、アクセス増大の為クラスタリングを考えなければならない事態となりました。

例えば、もう2台を追加してロードバランサーで負荷分散する場合、両構成のマシンはあくまで1台のサーバとして取り扱う事ができるのでしょうか?

一番心配な点は、クライアント側からの呼び出しは良いとして、データの書き込み(変更)が要求された場合、両方のサーバに対し同一データが書き込まれるのでしょうか?


最初の疑問に関しては、アクセスする側に1台のサーバとして見せる手法であり
運用上は複数サーバであることは変わりません。

次のデータ更新に関しては、ASPサービスのケースだと、サーバサイト側を2階層
(APサーバとDBサーバ)に分離し、データを一元化することで整合性を維持する
方法が一般的かと思われます。
→ Webシステムではありませんが、ウチでは上記のような対応でCPU負荷分散を
  してます。

コメント追加:
思い切りかぶりました・・・。

[ メッセージ編集済み 編集者: BackDoor 編集日時 2006-12-13 16:38 ]
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2006-12-13 16:52
msoです。

もともとは1台のサーバで運用されていましたよね?
ASPサービスということは何かプログラムが
動作していると思います。

そのプログラムの作りは大丈夫でしょうか?
セッション情報を使っているときはそれなりの
スケールアウトの方法が必要になってくると思います。
たかぴ
会議室デビュー日: 2004/08/24
投稿数: 18
投稿日時: 2006-12-13 17:16
皆様、アドバイスありがとうございました。

取り寄せたロードバランサーのパンフには、そこらへんの説明が無かったので困っていました。予算を取るにも自信が無かったので。。。助かりました。

引用:

msoさんの書き込み (2006-12-13 16:52) より:
msoです。

もともとは1台のサーバで運用されていましたよね?
ASPサービスということは何かプログラムが
動作していると思います。

そのプログラムの作りは大丈夫でしょうか?
セッション情報を使っているときはそれなりの
スケールアウトの方法が必要になってくると思います。



そうなんです。プログラム自体も改良しなければならないのか?その必要が無いのか?によってエンドユーザさんに提出する見積りが違うので(間違うと、うちがウン百万を負担しなければならない事態に陥りますので)慎重にしなければならないのです。
たかぴ
会議室デビュー日: 2004/08/24
投稿数: 18
投稿日時: 2006-12-13 17:21
引用:

NAOさんの書き込み (2006-12-13 16:27) より:
んと。
要するに簡単に書くと

【現状の構成】
Web−ASPサーバ−DBサーバ

って構成を

【望んでいる構成】
Web−ロードバランサ−ASPサーバ−DBサーバ
              |
              └ASPサーバ−DBサーバ

って構成にしたいって事だよね?

んでもって、疑問点として

(1)両構成のマシンはあくまで1台のサーバとして取り扱う事ができるのでしょうか?
(2)データの書き込み(変更)が要求された場合、両方のサーバに対し同一データが書き込まれるのでしょうか?
(3)それとも、呼び出された方のサーバのみにしか反映しないのでしょうか?

だよね。

上記構成及び質問を踏まえて。

(1)扱えません←(内部的にと言う意味で)
   外部から見れば他の方が書いている様に1つに見えます。
(2)書かれません
(3)その通りです

動的コンテンツを扱うならばその元ネタはDBにあるはずなので以下の様な構成(例)で組まないとDBが不一致を起こします。

Web−ロードバランサ−ASPサーバ−DBサーバ
              |       |←クラスタ構成
              └ASPサーバ−DBサーバ

ロードバランサがどちらかのASPサーバに負荷を考慮して負荷分散かけますので、
それに対して元ネタのDB上のデータが一致していないとNGです。

詳細はこの記事を一通り読むと解ると思います。 

http://www.atmarkit.co.jp/flinux/index/indexfiles/index-linux.html#cluster

【修正】
#内部的に見た場合と外部的に見た場合を追記


[ メッセージ編集済み 編集者: NAO 編集日時 2006-12-13 16:47 ]



そうです、その通りです。分かりにくい説明で、申し訳ありませんでした。
やっぱそうでしたか。。。大変、勉強になりました。
たかぴ
会議室デビュー日: 2004/08/24
投稿数: 18
投稿日時: 2006-12-13 17:27
引用:

あしゅさんの書き込み (2006-12-13 16:27) より:

この辺りは「どんなデータをどこに格納しているか」次第です。

ローカルファイルだとすれば個別になってしまいますし、
NFSやCIFS等で共有しているのであれば当然ながら同一です。
他にもDBを使ったり共有ストレージを使う場合もあるでしょう。

セッションを使っているのならばSession Replicationが必要になりますし、
ファイル共有やDBだとしても可用性を求めるならば構成は変わってきます。



簡単に言うと動画データのダムです。
動画データをローカルサーバに保存して、オラクルと何とかって言う(かなりマイナーな有償のDBソフト:かなり使いづらい)を使って特定業界向けに配信したりと、色々な事をやってます。

スキルアップ/キャリアアップ(JOB@IT)