2011-02-03 7 views
0

クラスタリング、私は現在、複数のサービスを提供するアプリケーションの負荷を分散する方法の問題に直面しています。私の質問のタイトルで述べたように、マルチサービスアプリケーション

アプリケーションはバケツで組織のユーザーのファイルを保存するストレージサービスです。ファイル自体は実際にはアプリケーションサーバに格納されず、ネットワークストレージに格納されます。アプリケーションサーバーは、データを暗号化/復号化し、ユーザーがデータにアクセスできるようにするいくつかのサービスを提供するために使用されます。 これらのサービスには現在、FTP、SFTP、HTTP、および内部使用のJNDI/RMIが含まれており、将来他の独自のプロトコルまたは独自のプロトコルで拡張される可能性があります。

2つのファイルバケットは、一度に2台のサーバーにアクセスできない場合がありますので、それはまだ実行している場合、私は、ルートに同じクラスタのノードへの任意のサービスのいずれかの呼び出しをしたいと思います。そうでない場合は、別のサーバーがバケットへの接続を開き、ユーザーに提供します。あなたは、このようなアプリケーションをクラスタ化するにはどうすればよい

?私は、TomcatとJBoss ASクラスタガイドの両方を見て、Java EEクラスタリングに関する記事を読んでいましたが、私の目標を達成する方法はまだ分かりません。私の主な問題の1つはロードバランシングだと思うし、ここでは標準的なソリューションを使用できないだろう。

+0

あなたはすべてのネットワーク転送を解読しなければならないように私は、あなたが例えばSFTPの負荷分散を行う方法疑問に思って? – Erik

答えて

1

私は、ファイル名からハッシュを作成し、負荷がそもそも比較的よくバランスが取れていることを確認するためにそれを使用するために誘惑されると思います。 (Cで)簡単な例については

:すべてのサーバーを尋ねると応答を組み合わせて、特定のグループ内のすべてのファイルを見つけるようなものについては

hash = 0 
for(i = 0; i < strlen(file_name); i++) { 
    hash ^= (hash << 5)^file_name[i]; 
} 
server_number_for_this_file = hash % total_servers; 

。例えば、最初のサーバは "hello"と "foo"を返し、2番目のサーバは "goodbye"と "bar"を返すので、これらの部分リストを組み合わせて4つのファイルのリストを取得します。

注:アプリケーションサーバーはディレクトリの内容をキャッシュしてネットワークストレージを常に嫌うと思いますので、キャッシュの効率も向上します(10個のアプリケーションサーバーで、各アプリケーションサーバーはディレクトリコンテンツデータの100%ではなく)。

私はまた、クライアントとアプリケーションサーバー間で(信頼できないインターネット経由で)転送されるファイルデータが暗号化されるようにクライアント上で暗号化/復号化を行いたいと思うでしょう。アプリケーションサーバーと(信頼できるネットワーク上の)ネットワークストレージ間で転送されるデータのみを暗号化します。

+0

ここでサポートされているランタイムでのフェイルオーバーまたは新しいサービスの追加はありますか?私はそれが起こると、キャッシュをきれいにしなければならないと思いますよね? – Erik

+0

フェイルオーバーの場合、フロントエンドサーバー(アプリケーションサーバーに要求を転送し、どのサーバーがアップ/ダウンしているかを監視する)を使用します。すべてのフロントエンドサーバーが同等であるため、いずれかが失敗した場合は他のサーバーも使用できます。アプリケーションサーバーはグリッドに配置されます。たとえば、20のアプリケーションサーバーはハッシュごとに2台のコンピューターであり、10台のハッシュがあります。すべてのアプリケーションサーバー(特定のハッシュ用)が互いに同期したままであることを保証するために、要求を行うアプリケーションサーバーは、そのハッシュのために他のアプリケーションサーバーに影響を受けるキャッシュデータを更新するよう指示します。 – Brendan

+0

新しいサーバーが既存のサーバーの冗長コピーである場合、実行時に新しいサーバーを追加するのは簡単です。ハッシュのサイズを大きくする必要がある場合は、新しいハッシュサイズ(新しいサーバーを含む)のすべてのサーバーを準備し、古いハッシュからすべてのサーバーを同時に新しいハッシュに切り替える(競争状態を避けながら)。 – Brendan

関連する問題