こんにちは、ハブロビテス!
私の意見では、著者はJboss(Tomcat)でHAシステムを構築する可能性を完全には明らかにしていないため、この記事には多くのエラー(文法ではない)があるため、
このトピックを読んだ後、自分で書くことにしました。
このトピックでは、ノードの構成について段階的に説明するのではなく、ニュアンスがある場合にのみ選択的に説明します。
足はどこから成長しますか
少し前に、私は大規模な電気通信会社に就職しました。
新しい環境で1〜2か月習得した後、起動用のアーキテクチャ、Javaの国勢調査、更新されたプロジェクトの開発を担当しました。
入力データが取得された場合:
1. IPの登録ユーザー-9000000
2.アクティブユーザー-2,000,000
3.毎日のアクティブユーザー-500,000
結果はこのアーキテクチャです:
プロジェクトを開始するために、次の構成で6台のサーバーを注文しました。
2x WEB:16コア、12 GB DDR
2x APP:8コア、32 GB DDR
2x DB:8コア、16 GB DDR
そして、apache2 + mod_jkがWEBサーバーにインストールされました
APPサーバーJboss AS6、Java 6
Oracle 11Rはデータベースの役割を担っていましたが、他のデータベースへのデータソースの構成に大きな違いがあるとは思いません。
カスタマイズ
それで、セットアップに取りかかりましょう:
WEB:
このトピックでは、構成を基礎とすることができます。
両方のアプリで:
[user@app01 ~]$ echo "JBOSS_HOME=/opt/jboss" >> /home/user/.bash_profile [user@app01 ~]$ export JBOSS_HOME="/opt/jboss" [user@app01 ~]$ vim $JBOSS_HOME/server/default/deploy/jbossweb.sar/server.xml
行
<Engine name="jboss.web" defaultHost="localhost"
私たちは次のフォームに持ってきます
<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1">
APP2の場合、それぞれnode2。
この行により、スティッキーセッションを使用してmod_jkのバランスを取ることができます。
jvmRoute = "node1"は、mod_jkにリクエストをスローするインスタンスを指示します。
次に、アプリケーションを$ JBOSS_HOME / server / default / deploy /に入力し、Jbossを起動して喜びます。
おそらく多くの人が質問をするでしょう
なぜそんなに強力なサーバーなのか?
私は答えます:このスキームは、サーバーだけでなく、既存のサーバー上のインスタンスを水平方向に拡張することを可能にします。
これを行うには、ディレクトリをコピーします
[user@app01 ~]$ cp $JBOSS_HOME/server/default $JBOSS_HOME/server/node3 [user@app02 ~]$ cp $JBOSS_HOME/server/default $JBOSS_HOME/server/node4
したがって、server.xmlのそれぞれで必要なjvmRouteを指定します
また、Webサーバーでは、workers.propertiesの新しいインスタンスに新しいブロックを追加します
worker.list行に新しいインスタンスを追加します
新しいブロックを追加します。
worker.node3.type=ajp13 worker.node3.host=ip_app1 worker.node3.port=8009 worker.node3.lbfactor=50 worker.node3.cachesize=10 worker.node3.cache_timeout=600 worker.node3.socket_keepalive=1 worker.node3.socket_timeout=300 worker.node4.type=ajp13 worker.node4.host=ip_app2 worker.node4.port=8009 worker.node4.lbfactor=50 worker.node4.cachesize=10 worker.node4.cache_timeout=600 worker.node4.socket_keepalive=1 worker.node4.socket_timeout=300
実際、この構成でも、非常に多くの訪問者にサービスを提供する準備ができています。
このスキームが正しく機能するためには、バランサー上でスティッキーセッションも必要です。そうしないと、ユーザーがサーバー間で単に失われる可能性があることに注意してください。
UPD:データベースの接続数が限られていることを忘れないでください。そのため、新しいインスタンスを追加する場合、この微妙な点を考慮する必要があります。そうしないと、バトル環境で嘘データベースを取得できます。
おわりに
このトピックは本当のふりをするものではありませんが、大規模な組織のかなり大きなプロジェクトがどのような形で機能するか、およびどのような種類の血液が1,000万人の潜在的なユーザーに役立つかを示しています。