Tomcatで実行され、MySQLデータベースを使用するSpringFrameworkアプリがあるとします。
この場合、社交性(価格/パフォーマンス/統合時間)を可能にする最良のソリューションは何でしょうか?
より正確には、Webロードバランサボックスには何が表示され、TomcatWebサーバーは誰がクラスタ化する必要がありますか?データベースロードバランサーボックスには何が表示され、データベースサーバーをどのようにクラスター化する必要がありますか?そして、可能であれば、特定の技術統合リンクが大いに役立つでしょう。
Web負荷分散には、オープンソースと有料の複数のソリューションがあります。私は個人的にCiscoロードバランサー(CSMとACE)とF5を使用しており、それらが好きです(ただし、これらのソリューションは高価になる可能性があります)。オープンソースには複数ありますが、頭に浮かぶのは http://www.linuxvirtualserver.org/
Mysqlの負荷分散については、msyqlのマスター間レプリケーションを確認できます。見てください: http://www.howtoforge.com/mysql_master_master_replication 。私が過去にプロジェクトのために行ったことは、大きなIP(F5)の背後に3つのWebサーバーサーバーファームがあり、それらはすべて1つのmysqlサーバーと通信していました。そして、私は別のサイトでまったく同じセットアップを行い、両方のmysqlサーバーにマスター間レプリケーションがありました。したがって、ユーザーはすべてのWebサーバーとDBサーバーを使用し、DBサーバーの1つがダウンすると、そのサイトのWebファームがダウンし、ユーザーは他のサイトのみを使用します。 (DNSフェイルオーバーと複数サイトの監視とフェイルオーバーの監視)。よりきめ細かくする予算がある場合は、グローバルロードバランサーを使用できます。
プレーンMySQLには負荷分散オプションがありませんが、 MySQL Cluster にはあります。
複数のMySQLインスタンスにMySQLClusterを使用することをお勧めします。
次に、MySQL Connector/Jを透過的に負荷分散するJDBCURLで使用できます。 http://dev.mysql.com/doc/ndbapi/en/mccj-using-connectorj.html を参照してください。
PS:この質問をServerFault.comに移動することに投票しました。
MySQLClusterの使用はお勧めしません。私はそれがうまく機能し、たくさんクラッシュしないのを見たことがありません。しかし、Haventはしばらくの間それを使用しました(1年ほど前には実際には機能しなかったため)。
マスターとスレーブを使用するだけです。スレーブですべての読み取り操作を実行します(msに現在の独自の書き込みまたはデータを読み取る必要がある場合を除く)。それがあなたにとって十分にスケーリングしない場合(あなたは多くの書き込みをしなければなりません)。シャーディングを検討する時が来ました。
アプリケーションで許可されている場合(または許可に変更できる場合)、別のオプション