Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> 仮想マシンからコンテナにWeblogicを移行する方法

仮想マシンからコンテナにWeblogicを移行する方法

  

PaaSおよびDevOpsソリューションの需要が高まるにつれて、実際には仮想マシン上で実行されるか、または直接ベアメタル上で実行されるレガシーアプリケーションが見られるようになります。一連の障害に遭遇しました。分解と移行のプロセスは非常に複雑です。多くの場合、PaaSまたはCaaSモードの恩恵を受けるために、アプリケーション所有者は自分のアプリケーションアーキテクチャを再設計しなければなりません。

この記事では、仮想マシンで実行されているJavaレガシーアプリケーションをコンテナベースのプラットフォームに移行する際の具体的な課題について分析します。ケースとしてOracle WebLogic Serverを使用して、分解プロセスの具体的な手順と移行の結果を示します。

コンテナへの移行の動き

ベアメタル時代のJava EEアプリケーションを比較すると、ハードウェア仮想化は大きな一歩前進でした。これにより、複数のアプリケーション間の分離を解決し、ハードウェア使用率を改善することができます。ただし、ハイパーバイザーはホスト上で大量のCPUとメモリを使用するため、各仮想マシンには完全なオペレーティングシステム
、TCPスタック、およびファイルシステムが必要です。

各仮想マシンには固定メモリがあり、メモリバルーニングメカニズムを使用して仮想マシンを実行するためのメモリを再配分できるのは、ハイパーバイザーのサブセットだけです。そのため、アプリケーションの将来を拡張するために、各仮想マシンにいくつかのリソースを予約しますが、これらのリソースは完全には利用されていません。同時に、仮想マシン内のインスタンス間に適切な分離がないため、これらのリソースを他のプログラムと共有することはできません。

コンテナは、OSカーネル、TCPスタック、ファイルシステム、および共有ホストの他のシステムリソースを介して、わずかなリソースとCPUで実行できます。これにより、パフォーマンスとリソース使用率がさらに向上します。 。

コンテナには、アプリケーションコンテナとシステムコンテナの2種類があります。通常、アプリケーションコンテナは単一のプロセスとして実行されます。システムコンテナは、systemd、SysVinit、およびopenrcによって生成されたopenssh、crond、syslogdなどの他のプロセスなど、単一のコンテナ内でオペレーティングシステムのすべての機能を実行できる完全なオペレーティングシステムのようなものです。どちらの種類のコンテナも、さまざまな使用シナリオで非常に役立ち、冗長管理プロセスでメモリを浪費することはありません。通常、仮想マシンよりも少ないメモリを消費します。ただし、Javaレガシーアプリケーションの移行に必要なのは、システムコンテナを使用した大量のアプリケーションリファクタリングだけです。

仮想マシンとは異なり、実行中のインスタンスのコンテナリソースに対する制限を再起動せずに簡単に変更できます。さらに、制限された境界内で消費されないこれらのリソースは、同じ物理ノード上の他のコンテナーと自動的に共有されます。

さらに、コンテナは、アプリケーションの作成を迅速に行い、アプリケーションのスケーラビリティを向上させるために、アプリケーションを作成、パッケージ化、およびテストするための機敏なアプローチを使用して開発にも非常に役立ちます。

物理マシンで使用されていないこれらのリソースは、新しいアプリケーションコンテナで簡単に拡張または使用できます。コンテナーの分離性が高まると、異なる種類のアプリケーションが互いに影響を与えることなく同じ物理ノード上で実行できるようになります。これらは、既存のインフラストラクチャリソースの平均3〜10倍の使用率です。

分解とは何ですか?

移行プロセスでは、プログラム分解は基本的な部分です。これは、大きな単一ブロックのアプリケーションを小さな論理ブロックに分割するのに役立ち、独立して実行できます。プログラム

この図は、仮想マシンからコンテナへの移行時に適用される単純な分解プロセスを示しています。


仮想マシンでのJavaレガシーの実行アプリケーション

ソフトウェアプログラムの開発には古くからのことわざがあります。レガシソフトウェアはいいのですが、まだ実行中の古いソフトウェアです。 Oracle Weblogic Serverでどのように機能するかを詳しく見てみましょう。

仮想マシンでのOracle Weblogic Serverの構造

仮想マシンで実行している場合、Weblogic Serverには3種類のインスタンスがあります。

  • 管理サーバー。
  • ノードマネージャ

  • 管理対象サーバー

    管理サーバーは、クラスタの構成と管理に使用する中央ノードです。内のすべてのリソース。ノードマネージャに接続して、管理対象ノードを追加または削除します。管理対象ノードは、Webアプリケーション、EJB、Webサービス、およびその他のリソースを実行します。

    通常、各仮想マシンで1つのノードマネージャと複数の管理対象サービスサーバーが実行されており、1つの管理サーバーがすべての仮想マシンのすべてのインスタンスを管理します。

    仮想マシンを介したWebLogicの拡張

    トラフィックのピーク時にクラスタを拡張する必要があるとします。新しい管理対象サーバーが仮想マシンに追加され、増大する負荷に対応するまでリソース割り当てはありません。

    しかし、トラフィックがまだ増え続け、現在管理されているサービスのインスタンス数が負荷を処理するのに不十分な場合は、プログラムのさらなる成長を処理するために新しい仮想マシンを追加する必要があります。

    複数の仮想マシンを介したWebLogicの一般的な拡張には、3つのステップがあります。

  • 事前に設定されたWeblogic Serverテンプレートを使用した新しい仮想マシンの提供
  • 新しい仮想マシンでマシン上でノードマネージャを起動し、管理サーバに接続します。
  • 増大するビジネス負荷の一部を処理するための新しい管理対象サーバを追加します。次に、この拡張モジュールこの手順が繰り返され、リソースが制限されるまで、新しく追加された仮想ブートによってさらに管理対象サーバーが起動されます。



    仮想マシンでWebLogicを実行することの欠点

    Oracle WebLogicをこのように実行することは、リソース使用率が非常に低いことです。または未使用の点:

  • 各仮想マシンには、フルオペレーティングシステム、TCPスタック、およびファイルシステムが必要です。これには、ホスト上に大量のCPUとメモリが必要です。
  • これらのリソースの割り当てはそれほど細かく分割されているわけではありませんシナリオによっては、管理対象サーバーを追加するだけで完全な仮想マシンを準備する必要がある場合もあります。
  • 仮想マシンのリソースが不足しているときにCPUを追加するか、単にメモリを増やす場合は、仮想マシン全体を再起動する必要があります。
  • 各仮想マシンで管理対象ノードを追加または削除するには、ノードマネージャが必要です。これにより、追加のリソースが消費され、追加の複雑な構成が追加されます。
  • 同じ仮想マシンで実行されているインスタンスは、分離されていないため、互いのパフォーマンスに影響を与える可能性があります。このため、同じ仮想マシン上で異なるアプリケーションを混在させることはできません。
  • 仮想マシンの移植性は1社のベンダーに限られているため、あるクラウドから別のクラウドに移行したい場合、いくつかの問題があります。
  • CI /CDを仮想マシンにパッケージ化して実装するのは非常に遅くて複雑です。

    仮想マシンからコンテナへの移行

    最近、Spring Boot、WildFly Swarmなど、コンテナ内でマイクロサービスを実行するように設計された優れたアプリケーションサーバーとフレームワークがいくつか見つかりました。 、Payara Microなどいずれにせよ、Oracle WebLogic Serverなどの仮想マシンで実行される一連のサーバー設計があり、このタイプのインスタンスをコンテナに移行する作業はより複雑です。これが私たちがこのトピックについてもっと心配している理由です。

    WebLogic Serverの分解

    最近の分解は、Dockerコンテナを使用すると非常に簡単な作業です。まず、WebLogic Serverでコンテナイメージを用意する必要があります。 (ミラーリングはOracleの公式リポジトリから入手できます)。

    Dockerテンプレートの準備ができたら、各インスタンスを個別のコンテナー(管理サーバーと必要な数の管理対象サーバー)に指定します。

    ここでは、管理対象ノードを追加および削除するためのノードマネージャを断念しました。

    コンテナに移行した後、管理対象サーバインスタンスは、管理ノードと同じように、コンテナオーケストレーションプラットフォームと一連のWSLTスクリプトを通じて自動的に追加および削除できます。

    このようにして、非常に単純なWebLogic Serverクラスタ構造が得られます。

    コンテナは最初から設定したり複製したりするのが簡単なので、水平方向の展開プロセスはきめ細かくスムーズになります。また、各コンテナは、ほとんど停止することなくすばやく起動または停止できます。コンテナは仮想マシンに比べてはるかに軽いので、コンテナのスケジュールは仮想マシンのスケジュールよりも時間がかかりません。

    コンテナ内でWebLogicを実行する利点

    アプリケーションをコンテナに移行するのは困難ですが、その管理方法がわかっている場合は、次のような利点があります。

  • コンテナごとに個別の完全なオペレーティングシステムが不要になり、TCPスタックとファイルシステムによってシステムリソース(CPUとメモリ)の使用を減らすことができます。
  • クラスタトポロジからノードマネージャを削除して、水平方向の拡大縮小を単純化します。
  • コンテナを介して未使用のリソースを共有する機能により、垂直方向の拡大縮小を自動化し、再起動せずに再設定することが非常に簡単になります。
  • 別々のコンテナを使用して同じ物理マシン上で異なるアプリケーションを実行することで、インフラストラクチャの利用率を向上させます。
  • コンテナの移植性を通じた、さまざまなクラウドベンダーの移行の制約の解消。

    同じ方法を使用して、アプリケーションの他の層を分割したり、他のJava EEアプリケーションサービスを適用したりできます。次のトピックでは、特定のケースを通して分解されたデータの全プロセスを処理する方法について説明します。
    zh-CN"],null,[1],zh-TW"]]]

  • Copyright © Windowsの知識 All Rights Reserved