世界中で、仮想化に対するコンテナ化の勝利により、さまざまなコンピューティング環境で実行されているアプリケーション間のパフォーマンスと信頼性がもたらされました。 コンテナの概念は、ソフトウェアコードとそのすべての依存関係を分離して、インフラストラクチャの均一性と一貫性を確保することです。 Amazonは、他の多くのクラウドプラットフォームと同様に、AWSクライアントの増大するコンピューティングニーズを満たすために、ElasticKubernetesServicesを急速に成熟させています。
Amazon Elastic Kubernetes Service自体は完全に管理された安全で信頼性の高いKubernetesサービスですが、クラスターを管理するには多くの手動設定が必要です。 このような環境でアプリケーションのパフォーマンスを保証するには、次を使用する必要があります。 NCache. NCache は、EKSクラスターのレイテンシーを改善することにより、アプリケーションのパフォーマンスを向上させ、スケーラビリティーを誘導するメモリ内キャッシュソリューションです。
NCache 詳細 コンテナの展開 NCache EKSドキュメント
NCache ElasticKubernetesサービスのデプロイアーキテクチャ
方法の基本構造 NCache EKSクラスターへの適合は非常に簡単です。 AWSクラウドには、EKSクラスター内で実行されている入力コントローラーにHTTPリクエストをルーティングする従来のロードバランサーがあります。 このクラスター内では、キャッシュクラスターが実行されています NCache 複数のポッド内のサーバー。 これらのポッドはにマップされます キャッシュ検出サービス これにより、キャッシュサービスを実行しているクラスターポッドへのクライアントアクセスが可能になります。 複数のアプリケーションを複数のポッドにデプロイすることができ、それらはすべて、このキャッシュ検出サービスを介してキャッシュクラスターに接続されます。
このEKSクラスター内には、 NCache リモートモニタリングゲートウェイ サービス。 これはNGINXIngressControllerであり、スティッキーセッションが有効になっている特定のポッドにトラフィックをダウンさせるロードバランサー構成を提供します。 クラスタの残りの部分は、それぞれ独自の展開環境にあるさまざまなクライアントアプリケーションで構成されています。
リクエストのフローとEKSクラスターの構造 NCache その中に展開されているのは、次の図に示されています。
NCache 詳細 コンテナの展開 NCache EKSドキュメント
それで、それ以上の遅延なしに、あなたがどのように展開することができるかについてのステップバイステップの簡単なガイドを通してあなたを連れて行きましょう NCache AWSElasticKubernetesクラスター内。
ステップ1:作成 NCache リソース
すべての機能を使用するには NCache Amazon Kubernetesクラスター内に提供します。今すぐに実行するステップは、デプロイすることです。 NCache EKS内のリソース。 展開 NCache クラスタ内のすべての管理操作を実行できるようになります。
デプロイできます NCache 特定のYAMLファイルの助けを借りて。 これらの各ファイルには、のシームレスな動作に役立つ特定の情報が含まれています。 NCache EKSの内部。 これらのファイルは次のとおりです。
- NCache 展開ファイル: このファイルには、使用する必要のある必要なポッドとイメージの実際の仕様が含まれています。 この情報には、レプリカ数、イメージリポジトリ、必要なポートなどが含まれます。
- NCache サービスファイル: このファイルは、デプロイメントの上にサービスを構築します。 このファイルの主な目的は、サーバーからのデプロイメントを公開することです。
- NCache 入力ファイル: このファイルには、クライアントアプリケーションとKubernetesクラスター内で実行されているWebマネージャーとの間にスティッキーセッションを作成するために必要な情報が含まれています。
これらは、デプロイする必要がある基本的なYAMLデプロイメントです NCache EKSクラスター内のサービス。 これらすべてのファイルの中で、最も重要なものは NCache デプロイYAMLファイル。 このファイルは次のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
kind: Deployment apiVersion: apps/v1beta1 metadata: name: ncache-deployment labels: app: ncache spec: replicas: 2 template: metadata: labels: app: ncache spec: nodeSelector: "beta.kubernetes.io/os": linux containers: - name: ncache image: docker.io/alachisoft/ncache:enterprise-server-linux-5.0.2 ports: - name: management-tcp containerPort: 8250 - name: management-http containerPort: 8251 - name: client-port containerPort: 9800 |
AWS CLIで次のコマンドを実行してこのデプロイを作成すると、Kubernetesは以下に記載されている正確な数のポッドを作成します。 返信 鬼ごっこ。 これらの各ポッドには、実行中のコンテナがあります。 このコンテナが作成されたイメージは、 画像 鍵。 あなたの場合、これはへのパスになります NCache enterprise 配置されているサーバー Dockerhubを選択します。 ポート タグは、公開する必要のあるすべてのポートを保持します NCache クラスタで機能するサービス。
1 |
kubectl create -f [dir]/filename.yaml |
参照する NCache のドキュメント 創造する NCache リソース EKSで。
NCache 詳細 コンテナの展開 NCache EKSドキュメント
ステップ2:作成 NCache ディスカバリーサービス
前の手順では、のサーバー側を設定します NCache。 それが正常に実行された後、あなたはあなたを公開する発見サービスの作成に取り組む必要があります NCache クライアントアプリケーションへのリソース。
Kubernetesクラスタの外部では、クライアント通信を成功させるために静的IPアドレスが必要です。 どんなに便利でも、Kubernetesクラスター内では、デプロイされたすべてのポッドに実行時に動的IPアドレスが割り当てられますが、これはクライアントには不明のままです。 この異常により、クラスター内で通信の問題が発生し、クライアントアプリケーションが識別に失敗します NCache サーバー。 ここでは、EKSクラスター内のヘッドレス検出サービスの必要性 NCache クライアントが発生します。
このヘッドレスサービスは、のIPアドレスを公開することでこの問題を解決します NCache サーバーからクライアントアプリケーションへ。 これらのクライアントは、これらのIPを使用して、必要なキャッシュハンドルを作成し、キャッシュ操作の実行を開始します。
すべてのクライアントがヘッドレスサービスに簡単に接続できるようにするには、次のようにCacheDiscoveryYAMLファイルを作成してデプロイします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
kind: Service apiVersion: v1 # depends on underlying Kubernetes version metadata: name: cacheserver labels: app: cacheserver spec: clusterIP: None selector: app: ncache # same label as provided in the ncache deployment yaml ports: - name: management-tcp port: 8250 targetPort: 8250 - name: management-http port: 8251 targetPort: 8251 - name: client-port port: 9800 targetPort: 9800 |
このサービスをヘッドレスサービスにしているのはタグです クラスターIP 「なし」に設定します。 この動作は、このサービスがに固有であることを示しています NCache EKSクラスターの外部からはアクセスできません。 鬼ごっこ セレクタ に設定 ncache このサービスがラベルが ncache それらのIPをクライアントに公開できるようにします。
物事がどのように機能するかについての少しの洞察:サーバーに接続するクライアントにとって、接続するXNUMXつのサーバーがそのキャッシュクラスターの一部であるすべてのサーバーのIPアドレスを共有するため、XNUMXつのIPアドレスだけで十分です。
ファイルをデプロイする準備ができたら、AWSコマンドラインインターフェイスで次のコマンドを実行します。
1 |
kubectl create -f [dir]/cachediscovery.yaml |
詳細なステップバイステップの展開については、次のドキュメントに従ってください。 ディスカバリーサービスの作成.
NCache 詳細 コンテナの展開 NCache EKSドキュメント
ステップ3:アクセスを作成する NCache マネジメント
許可を公開するには NCache クラスタの外部からの管理アクセスには、入力コントローラを設定する必要があります。 このコントローラーは、コンテナーのデプロイメントで通常使用する基本的なロードバランサー戦略を抽象化します。 頻繁に使用される入力コントローラーはNGINXコントローラーであり、デプロイされると、公開に必要なすべてのサービスを作成する役割を果たします。 NCache クラスタ外のサービス。
NGINX Ingress ControllerをEKSクラスターにデプロイするには、その中に複数のファイルデプロイメントを作成する必要があります。 これらのファイルには、Kubernetesクラスターが完全に機能するNGINXロードバランサーをインストールするために必要なすべての情報が含まれています。
以下にリストされているのは、それらが何をするのか、そしてなぜそれらが必要とされるのかについての簡単な説明とともに必要なファイルです:
- NGINX必須ファイル: これらのファイルは、NGINXコントローラーを実行するために必要なベースファイルです。 この場合、EKSクラスター内のロードバランサーになります。 このファイルは次の場所にあります GitHubの.
- NGINXサービスファイル: このファイルには、NGINXIngressControllerをKubernetes環境の外部に公開するlayer7ロードバランサーに関する情報が含まれています。
- NGINX構成ファイル: このファイルには、Layer7ロードバランサーの構成に必要なすべてのパラメーターが含まれています。
前述のファイルの中で、 NGINXサービス YAMLは、ロードバランサーを認識するために必要なポート情報を含むファイルです。 NCache 管理アクセス。 このファイルの内容を以下に示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
kind: Service apiVersion: v1 metadata: name: ingress-nginx namespace: ingress-nginx labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx annotations: ... spec: type: LoadBalancer selector: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx ports: - name: http port: 80 protocol: TCP targetPort: http - name: https port: 443 protocol: TCP targetPort: http |
これらのファイルはすべて、EKSクラスター内に非常に簡単にデプロイできるYAMLファイルとして作成されます。 AWSで設定されたコマンドラインツールで、ファイルごとに次のコマンドを実行するだけです。
1 |
kubectl create -f [dir]/<filename>.yaml |
このコマンドを実行すると、クラスター内のスティッキネスを可能にするロードバランサーが作成されます。 詳細については、次のドキュメントを参照してください。 アクセスを作成する NCache マネジメント.
NCache 詳細 コンテナの展開 NCache EKSドキュメント
ステップ4:キャッシュクラスターを作成する
集合的な展開とサービスが整ったので、次を作成する必要があります。 NCache クライアントがキャッシュサーバーに接続できるようにするクラスター。
展開したとき NCache サービス、あなたは密かに展開しました NCache 完全に統合されたWebManagerも NCache 管理業務。 あなたはこれを使うことができます NCache クラスター化されたキャッシュを作成して試してみるためのWebマネージャー。 あなたがしなければならないのは、で提供されるこれらの基本的なステップに従うことです NCache のドキュメント クラスタ化されたキャッシュを作成する そして、あなたは行ってもいいです! ただし、ここで最大限に集中する必要があるのは、追加する必要のあるサーバーノードのIPが、Kubernetesクラスターによって割り当てられたサーバーポッドのIPと同じである必要があるということです。 これらのIPのリストとその詳細は、を実行することで取得できます。 ポッドを取得 AWSコマンドラインツールのコマンド。
ステップ5:クライアントアプリケーションの展開を作成する
NCache クライアントの展開と同じように NCache リソースのデプロイでは、実行中のクライアントイメージコンテナの数、アプリケーションが配置されるプライベートDockerhubリポジトリ、ポートなどを指定します。 この情報は、完全に機能するクライアントコンテナを作成するのに役立ちます。
プライベートリポジトリからクライアントアプリケーションを取得するには、毎回ログイン資格情報を指定する必要があります。 この発生する煩わしさから身を守るために、 秘密.yaml 一度入力する必要があり、すべての呼び出し元クライアントリソースにアクセスできるログイン情報を含むファイル。 参照する NCache のドキュメント クライアント展開の作成 ステップとYAMLファイルの詳細ビューを取得します。
同様に、実際のクライアントデプロイメントもYAMLファイルの形式で作成されます。 このファイルには、クライアントアプリケーション(またはアプリケーション、呼び出し)をEKSクラスターにデプロイするために必要なすべての情報が含まれています。 このファイルの内容を以下に示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
kind: Deployment apiVersion: apps/v1beta1 # it depends on the underlying Kubernetes version metadata: name: client spec: replicas: 1 template: metadata: labels: app: client spec: nodeSelector: "beta.kubernetes.io/os": linux containers: - name: client image: # Your docker client image here ports: - name: app-port containerPort: 80 # In case of NCache client installation, add the following remaining ports - name: management-tcp containerPort: 8250 - name: management-http containerPort: 8251 - name: client-port containerPort: 9800 |
イメージからコンテナーをデプロイする場合、次のプロセスは次のようになります。
1. イメージはリポジトリからアクセスされます。
2. クライアントシークレットファイルは、 NCache 認証用の秘密のリソース。
3. イメージはプルされ、クライアントアプリケーションが実行されているコンテナーにデプロイされます。
ここでは、サービスではなくデプロイメントがあるため、ポッドに移動し、AWS CLIでバッチコマンドを実行して、クライアントアプリケーションの実行を開始する必要があります。
1 |
kubectl exec --namespace=ncache client-podname -- /app/<clientapplication>/run.sh democlusteredcache cacheserver |
NCache 詳細 コンテナの展開 NCache EKSドキュメント
ステップ6:監視 NCache クラスタ
この時点まで、あなたはあなたが最大限に活用するために必要なすべてをしました NCache 完全に機能し、実行中のAmazonEKSクラスター内。 単にデプロイするだけでなく、高可用性、スケーラビリティ、信頼性などを実現できます。 NCache クラスター内。 しかし、何を推測しますか? これだけではありません NCache オファー。
聞いてください。 EKSクラスター内では、すべての操作、保存、およびデータ転送の途中で、 NCache あなたがすることができます キャッシュアクティビティを監視する さまざまなツールを介して。 これらのツールは、クラスターの状態、パフォーマンス、ネットワークの不具合などについてより良いアイデアを得るのに役立ちます。
チェックアウト NCache Webモニター リアルタイムのパフォーマンスをグラフィカルに表現するため NCache 統計 パフォーマンス統計用。
ステップ7:スケーリング NCache クラスタ
極端なスケーラビリティを提供するために、 NCache 実行時にクラスターをスケールアップまたはスケールダウンして、アプリケーションの全体的なパフォーマンスを向上させることができます。 たとえば、キャッシュクラスタが頻繁にリクエストを受信しているため、ノードが増加するトランザクションに対応できないと感じた場合は、 NCache 負荷に対応するために複数のサーバーを追加できます。 EKSクラスター内にとどまりながら、実行時にサーバーノードをキャッシュクラスターに追加またはキャッシュクラスターから削除する方法を確認するには、次のドキュメントを確認してください。 EKSにキャッシュサーバーを追加する & EKSからのキャッシュサーバーの削除.
すべてを巻き上げましょう
この記事から、ステップバイステップのウォークスルーを体験することができました NCache AmazonEKSクラスターでのデプロイ。 ここでの主な質問は、なぜ必要なのかということです NCache すでに完全なコンテナ環境内ですか? さて、私はあなたのためにそれを本当に簡単に簡単に説明させてください。
- インメモリソリューション: NCache デプロイされたアプリケーションのパフォーマンスを顕著な要因で向上させます。
- 線形スケーラビリティ: NCache キャッシュクラスターの負荷が増加したときに便利です。
- 非常に柔軟性: NCache クライアントの介入なしにデータを動的に自動リバランスします。
AWS EKSによってすでに出荷されている機能にこれらすべてを追加し、アプリケーションを実行するための最高の環境を手に入れました。では、何を待っていますか? 配備 NCache 今すぐEKSクラスターで、魔法を目撃してください。