Azure Kubernetes Service (AKS) は、エンタープライズアプリケーションの開発とデプロイのためのKubernetesコンテナオーケストレーターに基づくMicrosoftによるオープンソースのコンテナアプリケーションプラットフォームです。
.NET/を使用している場合.NET Core またはAzureKubernetesで実行されているJavaを使用する NCache ピークトランザクション負荷に対するパフォーマンスとスケーラビリティを向上させるために、次のことをご安心ください。 NCache この環境を完全にサポートします。
このビデオを見て、展開がいかに簡単かを確認してください NCache DockerデプロイメントとしてのAzureKubernetesクラスター用。
AKSは、MicrosoftAzureパブリッククラウドで利用できるマネージドコンテナーサービスです。 これは、Dockerを利用したアプリケーションコンテナを中心に構築されており、オーケストレーションと管理サービスはKubernetesによって提供されています。本日は、 NCache このプラットフォームで。 さっそくこれから始めましょう。
まず、復習しましょう NCache AKSでの展開。
これが典型的な展開です NCache AKSで。 さまざまなアプリケーションがデプロイされた単一のKubernetesクラスターと NCache クラスターの展開。 さまざまなポッドでDockerImageを使用するJavaWebアプリがあります。 また、Java Webサービスもあり、これもさまざまなポッドにデプロイされており、これらのJavaアプリケーションは次のJavaクライアントを使用しています。 NCache キャッシュクラスターに接続します。
同様に、私はASPを持っています.NET Core Docker Imageを使用してさまざまなポッドにデプロイされたWebアプリと、これらのインスタンスが使用している .NET Core のインストール NCache キャッシュクラスターに接続します。 My Cache Clusterも、LinuxベースのイメージであるDockerイメージに基づいています。 NCache、当社のWebサイトとDocker Hubで入手できます。これは、さまざまなポッドでキャッシュクラスターを作成するために使用したものです。
さらに、私はこれを持っています NCache リモートモニタリングゲートウェイ。 これは、キャッシュクラスターを管理および監視するためにこのKubernetesクラスターの外部から実行される監視および管理操作のゲートウェイであり、このキャッシュ検出サービスを利用できます。 これも名前が付けられたヘッドレスサービスであり、クライアントが接続する場所であり、キャッシュクラスターとのあらゆる種類のサーバー通信を管理します。 ポッド10、11、12のIPアドレスについて知る必要はありません。クライアントアプリケーションはこの検出サービスにのみ接続し、これらのコマンドまたは基になるポッドへのこれらの操作の検出とルーティングを管理します。
この検出サービスとリモート監視ゲートウェイを実際に作成する方法と、キャッシュクラスター、およびこれらのクライアントアプリケーションの展開について、手元に届いたら、段階的に詳しく説明します。 しかし今のところ、これはの典型的な展開です NCache 単一のKubernetesクラスターを使用するAKSで。
デモ環境のセットアップの詳細は次のとおりです。
2を使用しています NCache キャッシュクラスターをホストするサーバー。このキャッシュに接続するために2つのクライアントアプリケーションを実行します。 LinuxベースのDockerイメージを使用しています NCache このデプロイメントでは、このタグ「enterprise-server-linux-5.0.1」で表されます。このイメージを使用するには、このタグもDockerプルコマンドの一部である必要があります。 使っています NCache Enterprise 5.0 ServicePack1および .NET Core それのリリース。 Linux環境だけでなくWindowsにも展開できますが、AKSでの展開には、このリリースでLinuxベースのイメージを使用しています。 のJavaクライアントを使用するJavaアプリケーションを使用しています NCache そして私は1を使用しています .NET Core 使用しているアプリケーションも .NET Core のクライアント NCache。 これらのアプリケーション内で、CRUDオペレーションを使用します。これは、アプリケーションのAppDataCachingのユースケースを表します。
最初のステップはデプロイすることです NCache AKSのサーバー。 それでは、すぐに始めましょう。 OK、Azure管理ポータルにログインしました。ここから、すべての展開を開始します。
最初に行う必要があるのは、リソースグループを作成することです。その後、すべての展開で[追加]をクリックすると、実際にこの手順を開始します。
すべてをシンプルに保ち、「レビュー+作成」、「作成」をクリックすると、リソースグループが作成され、Kubernetesサービスがデプロイされます。 だから、これをリフレッシュすると。 その後、先に進んでKubernetesサービスを作成します。
それをクリックすると、この中のすべての展開を見ることができるはずです。
現時点では空です。次は、「Kubernetes」を作成する必要があります。これで、Kubernetesサービスを作成できます。
ちなみに、これはAzure Cloud Shellでも実行できます。これは、ここにあり、「再接続」します。 または、便利な管理ポータルを使用することもできます。 したがって、サブスクリプションを選択し、リソースグループは「aksdemo」である必要があります。これは最近作成したものです。 Kubernetes Clusterに「myaks」という名前を付けます。ご覧のとおり、DNS名も自動的に事前入力されています。 私は選ぶつもりです」(US) 私の場所としての中央米国。 「Kubernetesバージョン」を指定する必要があります。デフォルトを使用しますが、必要なものを選択して、残りはすべてシンプルにします。 「プライマリノードプール」には、「ノードサイズ」と「ノード数」を指定する必要があります。 したがって、標準を選択するか、サイズを変更することができます。 これは、Kubernetesサービスが実際にホストされる場所です。 したがって、十分なメモリ、CPU、およびネットワークリソースを備えたサービスの選択肢を正しく理解する必要があります。
これにより、VMサイズ内から選択し、RAM、CPU、ディスク、その他のパラメーターなどのさまざまなパラメーターに基づいて選択できる多くのオプションが提供されます。 したがって、このテストに使用できる最小値である「B2ms」を選択します。「ノード数」は2になりますが、2や3などの任意のノード数を考え出すことができます。これが、KubernetesClusterがホストされるサーバーの数です。
したがって、これを実行した後、「レビュー+作成」を選択すると、Kubernetesクラスターが作成されます。
Microsoft Azureで一連の検証を実行しますが、「スケール」、「認証」、「ネットワーク」などのさまざまな設定を確認できます。 すべてをデフォルトのままにするか、必要に応じて変更することができます。また、監視を確認できます。[レビュー+作成]をクリックすると、検証プロセスが開始されます。
したがって、最終的な検証が完了したら、[作成]をクリックします。 Microsoft Azureでこれを実際に完了するには5〜10分かかりますが、その後、展開を開始できるようになります。 展開が進行中であることがわかるように、これが完了すると、ステータスマークが緑色に変わるため、この時点でこのビデオを一時停止し、これが完了したら戻ってくる必要があります。 ご覧のとおり、これはすでに完了しています。
5〜10分でデプロイが完了し、「リソース」に移動できます。これに基づいて、「myaks」であるAKSサービスが正常に作成されていることがわかります。
それをクリックすると、Kubernetesバージョン、APIサーバーアドレスなど、このサービスのすべてのデプロイの詳細が表示され、そのステータスは成功し、場所は指定したものになります。 これで、Kubernetesサービスが完了しました。
配置図に戻ると、AzureKubernetesサービスはMicrosoftAzureで作成されていますが、現時点では空です。 次のステップは先に進むことです NCache キャッシュクラスターをデプロイするためのサーバー側デプロイメント。 それでは、その方法を見てみましょう。
これで、AKSクラスターが構成され、デプロイメントに使用できるようになりました。 Azure管理ポータルを使用しましたが、次のステップでは、すべての展開でAzure Cloud Shellを使用します。最初に行う必要があるのは、このシェル内のAKSクラスターを指すことです。 だから、そのために私は走ります 'az aksget-credentials' 指図。 したがって、「azaks」内はAzureKubernetesService用です。 「get-credentials」コマンドを使用すると、現在のコンテキストを「myaks」に移動できます。これは、AKSサービスであり、「aksdemo」内で、これが作成されるリソースグループの名前です。 つまり、「myaks」Azure Kubernetes Serviceを指すことができ、管理とデプロイの操作を開始できます。
したがって、最初に確認する必要があるのは、既存の展開があるかどうかです。 だから、私は先に進んでコマンドを本当に速く実行します、それは 'kubectl get pods' そしてそれは私に既存のポッドを与えるでしょう。 したがって、デフォルトの名前空間にはリソースが見つかりません。これは、まだデプロイメントがないことを示しています。
しかし、展開する必要があります NCache サーバーとそのために、私は持ってきます NCache YAMLファイルとそれは私が使用するものです NCache サーバー側の展開。 したがって、種類は「展開」に選択され、名前はもちろん「ncache'、つまり、サーバー側でのすべての展開について、これから言及します。 NCache 他のサービス内およびクライアントアプリケーション内でも同様です。 使用しているイメージは、LinuxベースのDockerイメージです。 NCache そして私はXNUMXつのレプリカを使用しています。 基本的に、XNUMXつのポッドがあります。 NCache クラスターをデプロイして開始し、後の段階でポッドを追加できます。 Docker Image、それについてもう少し話しましょう。 使用しているDockerイメージはLinux5.0.1Dockerイメージであり、 Alachisoft DockerHubページ。
デフォルトでWindowsイメージをフェッチする「dockerpull」コマンドがありますが、ここでこのタグを使用することでLinuxを使用することもできます。「enterprise-server-linux-5.0.1」を使用すると、それが私が使っているものです。
それでは、先に進んでこのYAMLを追加して始めましょう NCache サーバー側の展開。 だから、私は実行するつもりです 'kubectl create -f' 開始するには、このYAMLファイルを提供してください NCache サーバーの構成とロード NCache AKSクラスター内のLinuxベースのイメージ。 さあ、 NCache デプロイメントが作成されます。 とても簡単です。
デプロイの一環として、これによりいくつかの管理および監視ポート8250および8251も開かれました。したがって、すべてのポッドでこれらのポートが管理および監視用に開かれ、このKubernetesクラスターの外部からも開かれます。 「client-port」はポート9800であり、メインのクライアントからサーバーへの通信ポートであり、アプリケーションがこのキャッシュクラスターを使用して接続します。 この時点で、 NCache EKSでのサーバー側の展開が完了しました。
次に、Discovery and Management Gatewayを作成してから、戻ってこれらすべての展開を一度に確認します。
今、私たちの NCache サーバーポッドはAKSに正常にデプロイされます。次のステップは、AKSに管理ゲートウェイだけでなくキャッシュ検出サービスを作成することです。 検出サービスにより、クライアントアプリケーションは、作成するキャッシュクラスター内の基盤となるポッドを検出して接続し、使用できるようになります。次に、リモートモニタリングゲートウェイにより、このKubernetesクラスターの外部のシステム管理者がキャッシュクラスターのこれらのポッドを管理および監視できるようになります。 。
それでは、ここですべての手順を確認しましょう。 これらのサービスを作成するために、ここにこの「services.yaml」ファイルがあり、これらのサービスを作成できます。 そこで、ゲートウェイとキャッシュ検出サービスのXNUMXつのサービスを作成しています。 ゲートウェイは監視と管理用ですが、検出サービスは、キャッシュクラスター内の基盤となるポッドへのルーティングと検出のためのクライアントまたはサーバー通信用です。
したがって、最初のサービスは、ここにある「ゲートウェイ」サービスです。 種類は「サービス」として選択され、8251ポートを下線付きのポッドにマッピングします。これは、外部が管理および監視用のオンラインポッドに実際に接続できるようにするためであり、これが私がタイプを選択した理由です。 'LoadBalancer'およびアプリセレクターは'ncache'および'sessionAffinity'は非常に重要な概念です。 これを「ClientIP」として選択する必要があります。 これは必須の手順であり、基になるポッドへの接続を固定することができます。 管理と監視には、Webベースの管理ツールを使用しています NCache ポッド。 これによりセッションが作成されるため、最初のリクエストがポッドXNUMXに送信された場合、そのポッドに固定する必要があります。そのため、そのセッションは後続の呼び出しでもそのまま残ります。 したがって、このゲートウェイサービスでは、必須として「sessionAffinity」ビットを「ClientIP」に設定する必要があります。 これは必須の手順であり、これの展開を開始できます。
XNUMX番目のサービスは、クライアントからサーバーへの通信のためにキャッシュサーバーノードを自動検出するためのヘッドレスサービスです。 名前を「cacheserver」に選択しました。 繰り返しになりますが、この種類は「サービス」であるため、これもサービスであり、ヘッドレスであり、実際にヘッドレスにするのは「clusterIP」であり、これは「なし」に選択されます。 したがって、IPはありません。 クライアントアプリケーションの内部検出とルーティングを管理して、 NCache ポッド。 そしてそれがどのように接続するか NCache ポッド? 'であるセレクターの助けを借りてncache'そしてそれは私たちが使用したものです NCache デプロイしたときもデプロイ NCache サーバーポッドとこれには基本的にマッピングがあります。この検出サービスには、基盤となるポッドへの8250のマッピング、8251マッピング、そしてクライアントサーバー通信用の9800があります。
そこで、先に進んでこのYAMLファイルをロードします。これも同じものを使用します 'kubectl create' / fを指定してコマンドを実行すると、これらXNUMXつのサービスがAKSクラスターにデプロイされます。 「aksconfigs/services.yaml」というタイプミスがあると思います。 これでEnterキーを押すと、作成されたXNUMXつのサービスを確認できるはずです。 ゲートウェイサービスとキャッシュサーバー。 NCache サーバーポッド。
さて、私がすぐにあなたに見せれば 'kubectl get pods' コマンド、それは私に最初に表示されます NCache サーバーポッド。これらはサーバー側に展開されるXNUMXつのポッドであるためです。 あなたは私たちが持っているのを見ることができます NCache これらのIDを持つポッドと、これらにもIPSが割り当てられています。 それらは実行されており、最初のポッドは10.244.1.4 IPで実行されており、次に.0.9IPのXNUMX番目のポッドも実行されています。
私もあなたに見せます 'kubectl get services' 'svc'と言うだけで、作成したすべてのサービスが停止します。 つまり、ヘッドレスサービスである「cacheserver」があり、次に「gateway」もあります。これには、実際に監視および管理できるIPアドレスもあります。 NCache 外界からのポートマッピングの助けを借りたポッド。 したがって、8251は、これについても実際に開いており、キャッシュサーバーにIPが表示されていないことがわかります。これは、基本的に、クライアントアプリケーションがキャッシュクラスターに接続するためのヘッドレスサービスです。
したがって、この外部IPを使用して、管理コンソールにログインできるはずです。 そこで、この8251を使用してWebベースの管理ツールを起動します。変更させてください。8250、そうです。 したがって、私はこの管理ツールにログインしており、実際のところ、10.244.0.9サーバーに接続しています。これにより、実際に当社のサービスが完全に機能するようになります。 実際に監視および管理することができます NCache、自分のマシンから管理ツールを開くことができたので。 次のステップは、実際にキャッシュクラスターの作成を開始することです。 それで、それをレビューします。 この時点で、すべての展開が完了しています。
これで、先に進んで作成できます NCache 次にクラスターをキャッシュします。 次に、[新規]をクリックしてキャッシュクラスターを作成します。これにより、作成ウィザードでキャッシュが開きます。
キャッシュクラスターに「democache」という名前を付けます。 ここではすべてをデフォルトのままにします。 最初のIPは自動的に提案され、1.4番目のIPはここから選択してXNUMXに戻し、これも追加できるはずです。[次へ]をクリックすると、さらにいくつかのパラメーターが表示されます。 すべてをデフォルトのままにして、それだけです。 これで、キャッシュクラスターが作成されました。 [詳細を表示]をクリックすると、完全に作成されていることがわかります。
したがって、先に進んで両方のポッドでこのキャッシュクラスターを開始すると、キャッシュクラスターが開始され、クラスターが完全に機能していて開始されていることを示すステータスメッセージが表示されます。
これで、監視ツールを開くことができます。これもWebベースの監視ツールです。 NCache これにより、サービスとクライアントを監視できるようになり、これらXNUMXつのポッド間で完全に接続されていることが示されます。これが完全に接続されたステータスです。 ですから、クラスターの作成に関する限り、私は良いことです。 一連のパラメーター。この時点ではクライアントアプリケーションは接続されていませんが、クライアントアプリケーションをデプロイして実行すると、実際に実行できます。
次のステップは、クライアントアプリケーションをデプロイして実行し、AKSのキャッシュクラスターに接続することです。 さて、今度はデプロイメントのクライアントもデプロイする必要があります。そのために、デプロイする別のコンテナーがあります。これは、JavaとJavaの両方を備えた単一のクライアントコンテナーです。.NET Core それにバンドルされているクライアントアプリケーション。
したがって、先に進んで「client.yaml」ファイルをロードします。このデプロイメントが作成されるとすぐに、キャッシュクラスターに対して使用できるようになるXNUMXつのアプリケーションが作成されます。 これらが適切に展開されているかどうかを確認するために、まず最初に実行します 'kubectl get pods' コマンドを実行すると、コンテナが作成されていることがわかります。 ですから、現在の状況はであり、追加のコンテナを見ることができるので、それは良いスタートです。
そのため、クライアント側の展開が進行中であり、以前にこのコマンドを実行したことを覚えている場合は、 'kubectl get pods' 以前は NCache そこにXNUMXつのポッドを展開しますが、クライアント展開の下に追加のポッドがあり、独自のパラメーターセットがあり、いくつかのIPSが割り当てられます。 したがって、これをもう一度実行すると、完全に機能して実行され、この特定のIDで独自のIPが割り当てられます。
ここで、クライアントアプリケーションを実行してこのキャッシュクラスターに接続するには、次のコマンドを実行します。 'kubectl exec' このポッドのIDを入力すると、ここのディレクトリ、アプリ/テスターに移動し、最初に .NET Core クライアントと私はそのrun.shスクリプトを実行します。 それは私がスピンすることを可能にするでしょう .NET Core キャッシュに接続するアプリケーション。 さらに、キャッシュの名前「democache」が必要です。次に、「cacheserver」であるキャッシュ検出サービスも必要です。 これにより、内部のすべてのポッドを検出して接続できるようになります NCache 展開とそれは内の機能です NCache この検出サービスを指定するだけで、すべてのポッドに自動的に接続するクライアント。 だから、私の「デモキャッシュ」は初期化されました。
監視ツールに戻ると、いくつかのパラメーター、いくつかのパフォーマンスマトリックスが表示されます。 9つのクライアントが.4と.1.5にも完全に接続されており、リクエスト/秒があります。 すべてのカウンターでのキャッシュ操作、追加、フェッチ、および更新ごとの平均マイクロ秒がアクティビティを示しており、クライアントプロセスが表示されています。これは9であり、両方のサーバーに接続されているクライアントポッドのIPです。 4および.XNUMX。 つまり、クライアントアプリケーションコンテナと .NET Core アプリケーションは、キャッシュクラスターに完全に接続できます。
Javaアプリケーションを実行してみましょう。そのためには、「dotnet」を「java」に変更して実行する必要があります。 だから、それはその中で別のスクリプトを実行するだけで、それは実行されます'NCacheTester.jar'ファイル、つまり、接続して作成/読み取りおよび更新/削除操作の実行を開始するJavaファイルです。 そのため、現在CRUD操作が実行されています。
したがって、再度監視に戻ると、XNUMXつのクライアントプロセスがあります。 サーバーがXNUMXつあるため、XNUMXつ表示されます。 したがって、各クライアントプロセスはすべてのサーバーに接続しますが、キャッシュクラスターに対してXNUMXつのクライアントが実行されており、キャッシュクラスターにはXNUMXつのポッドがあります。
サーバー側のカウンターと両方のポッドからのレプリカを表示するサーバー側のレポートビューなど、より高度な「レポートダッシュボード」があります。次に、クライアント側のカウンターも表示するクライアントレポートもあります。 そのため、AKS内では、問題なくクライアントとサーバーの展開を完全に管理および監視できます。
次にデモンストレーションするのは、 NCache AKSプラットフォームのキャッシュクラスター。 これにより、リクエスト処理能力を向上させることができます NCache そしてそれも一度に。 ここに含まれるすべてのステップを見てみましょう。
ここで、AKSでキャッシュクラスターを停止したり、親切なアプリケーションを停止したりせずに、実行時に2ノードから3ノードに拡張するために、これを簡単に説明できます。 それで、まず最初に、現在の展開を示します。 現在のポッドを見てみましょう。XNUMXつのポッドがあることに気付いた場合は NCache 展開.4および.9IPアドレスの場合、ここでこのコマンドを実行する必要があります。ここで、レプリカ数を3に設定し、'deployment/に対して実行します。ncache'そしてそれは自動的に新しいポッドを回転させてそれに追加するはずです ncache/deployment。 タイプミスがあると思うので、デプロイメントを修正してこれを実行させてください。これでうまくいきました。 それで、 NCache 展開は拡大しました。
これで、3つのポッドが含まれます NCache 展開。 したがって、同じコマンドを再度実行すると、内に追加のポッドが表示されるはずです。 NCache 展開。 したがって、以前は、次のXNUMXつの展開がありました。 NCache .4と.9で、4番目のポッドが追加されました。 .9、.6に加えて、.XNUMXもあります。 これがXNUMX番目に追加されたポッドで、現在は完全に機能しています。
アプリケーションまたはキャッシュ自体を停止しなかったことに気づきました。 今、私はこのポッドをポッドに追加する必要があります NCache キャッシュクラスター。 そのため、AKSに導入されました。
ここに追加してから、「開始」してキャッシュクラスターに参加します。これは、実行時に行われます。 したがって、遅延なしで、実行中のキャッシュクラスターに参加し、完全に機能します。
すぐに監視ツールに戻ると、実行時に6番目のノードが参加していることがわかります。 したがって、.3が完全に結合されました。 それはすべてのデータを持っています。 カウントを確認すると、すべてのリクエストが2つではなくXNUMXつのノードに完全に分散されます。
クラスターのステータスも確認できます。.6はそれに接続された2つのクライアントと完全に接続されており、3つではなく2つのサーバーのカウンターが表示され、クライアントプロセスは.3、.6の4つのサーバーすべてに再び接続されています。 、.9にも。
これで、AKSの自動スケーリング部分が完了しました。ここでは、実行時にポッドを追加でき、キャッシュまたはそれに接続されているクライアントを停止する必要はありません。 すべては実行時に行われます。
これでビデオは終わりです。 デプロイ方法のデモンストレーションに成功しました NCache AKSプラットフォームでの使用方法と使いやすさ NCache Java内から .NET Core アプリケーション。 また、どの程度効果的に管理および監視できるかについても確認しました。 NCache AKSでの展開。 これがお役に立てば幸いです。
フィードバックや質問を私たちと共有してください Alachisoft サポート support@alachisoft.com。 ありがとうございました!