記事
Toshihiko Minamoto · 2020年11月16日 6m read

InterSystems API Management を使用して API の負荷を分散する

InterSystems API Management(IAM)は、IT インフラストラクチャ内の Web ベースの API との間のトラフィックを監視、制御、および管理できる InterSystems IRIS Data Platform の新機能です。 アナウンスを見逃した方は、こちらのリンクを参照してください。 また、IAM の使い方を説明した記事もあります。

この記事では、InterSystems API Management を使用して API の負荷を分散します。

この例では、2 つの InterSystems IRIS インスタンスを使用し、クライアントに /api/atelier REST API を公開したいと思います。

そのようにしたいと思う理由は、次のようにさまざまです。

  • 負荷分散により、サーバー間でワークロードを分散する。
  • ブルーグリーンデプロイの実践。片方を「本番用」、もう片方を「開発用」とする 2 台のサーバーを用意し、それらを切り替えられるようにする。
  • カナリアデプロイの実践。1 台のサーバーでのみ新しいバージョンを公開し、クライアントの 1 %をそこに移動する。
  • 高可用性構成の実現。
  • その他。

しかし、いずれの場合も実行する必要のある手順は同じようなものです。

前提条件

  • 2 つの InterSystems IRIS インスタンス
  • InterSystems API Management インスタンス

 

作業開始

必要な作業を以下に掲載します。

1. アップストリームの作成

アップストリームは仮想ホスト名を表し、複数のサービス(ターゲット)で着信リクエストの負荷を分散するために使用されます。 例えば、service.v1.xyz という名前のアップストリームはホストが service.v1.xyz であるサービスのリクエストを受け付けます。 このサービスのリクエストは、アップストリーム内で定義されたターゲットにプロキシされます。

アップストリームには、リクエストを処理する能力の有無に基づいてターゲットを有効または無効にできるヘルスチェッカーも含まれています。

はじめに、次の手順を実行します。

  • IAM 管理ポータルを開く
  • ワークスペースに移動する
  • ワークスペースを選択する
  • アップストリームを開く
  • [New Upstream] ボタンをクリックする

[New Upstream] ボタンをクリックすると、アップストリームに関する基本情報を入力できるフォームが表示されます(他にも多くのプロパティがあります)。

name にサービスが使用する仮想ホスト名を入力します。 この値は DNS レコードとは無関係です。 混乱を避けるために、存在しない値に設定することをお勧めします。 残りのプロパティについて確認したい場合は、ドキュメントを参照してください。 スクリーンショットでは、新しいアップストリームに myupstream という仮の名前を付けています。

 

2. ターゲットの作成

ターゲットは、リクエストを実行して結果をクライアントに送り返すバックエンドサーバーです。 アップストリームに移動し、作成したアップストリーム名をクリックします([Update] ボタンではありません)。

既存のすべてのターゲット(現時点では存在しません)と [New Target] ボタンが表示されます。 このボタンを押します。

そして、新しいフォームでターゲットを定義します。 ここで使用できるパラメーターは次の 2 つだけです。

  • target - バックエンドサーバーのホストとポート
  • weight - このサーバーに与えられた相対的な優先度(wight の値が大きいほど、より多くのリクエストがこのターゲットに送信されます)

ここでは次のように 2 つのターゲットを追加しました。

 

 

3. サービスの作成

アップストリームを作成しましたので、今度はそのアップストリームにリクエストを送信する必要があります。 そのためにはサービスを使用します。
サービスエンティティは、その名前が示すように各アップストリームサービスを抽象化したものです。 サービスの例としては、データ変換、
マイクロサービス、課金 API などがあります。

IRIS インスタンスをターゲットとするサービスを作成してみましょう。[Service] に移動し、[New Service] ボタンを押します。

次の値を設定します。

フィールド 説明
name myservice このサービスの論理名
host myupstream アップストリーム名
path /api/atelier 提供したいルートパス
protocol http サポートしたいプロトコル

 

上記以外はデフォルト値のままにしてください(port: 80 を含みます)。

作成したサービスは、サービスのリストに表示されます。 サービスの id をどこかにコピーしておいてください。後で必要になります。

 

4. ルートの作成

ルートは、クライアントのリクエストに一致するルールを定義します。 各ルートはサービスに関連付けられ、サービスには複数のルートを関連付けることができます。
特定のルートに一致するすべてのリクエストは、関連するサービスにプロキシされます。

ルートとサービスを組み合わせる(およびそれらの関係を分離する)ことで強力なルーティング機構を実現し、インフラストラクチャのさまざまなアップストリームサービスにつながる IAM できめ細かなエントリポイントを定義することができます。

それでは、ルートを作成しましょう。 [Routes] に移動し、[New Route] ボタンを押します。

ルートの作成フォームで次の値を設定します。

フィールド 説明
path /api/atelier 提供したいルートパス
protocol http サポートしたいプロトコル
service.id 3のguid サービス id の値(前のステップの guid)

以上です!

http://localhost:8000/api/atelier/(最後のスラッシュに注意)に送信されたリクエストは、2 つのバックエンドのいずれかによって処理されます。

 

まとめ

IAM は詳細にカスタマイズ可能な API 管理インフラストラクチャを提供し、開発者と管理者が API を制御できるようにします。

 

リンク

 

質問

IAM を使用してどのような機能を実現してほしいですか?

00
2 0 0 52
Log in or sign up to continue