アプリケーション・ロード・バランサーの作成

IBM Cloud® Application Load Balancer for VPC (ALB) を作成して、複数インスタンスにインバウンド・トラフィックを分散できます。 ALB は、仮想サーバーインスタンス、ベアメタルサーバーインスタンス、および IBM Cloud Direct Link を介して接続された Power Systems™ Virtual Server インスタンスなど、ロードバランサーにアクセス可能な IP アドレスを持つその他のデバイスで使用できます。

コンソールでのアプリケーションロードバランサーの作成

ALB を作成するには、以下のようにします。

  1. お使いのブラウザで、 IBM Cloud コンソールを開き、 アカウントにログインしてください。

  2. ナビゲーションメニューの メニューアイコンを 選択し、 インフラストラクチャ VPCアイコンネットワークロードバランサーをクリックします。

  3. [VPC 用ロードバランサー] ページで、[ 作成 ] をクリックします。

  4. 「ロードバランサーの種類」では、「 アプリケーション・ロードバランサー(ALB) 」タイルを選択してください。

  5. 「場所」セクションで、必要に応じて以下のフィールドを編集してください。

    • リージョン: ロード・バランサーを作成するリージョンを示します。
  6. 「詳細」セクションで、以下の情報を入力します。

    • 名前: ロード・バランサーの名前 (my-load-balancer など) を入力します。

    • リソース・グループ: ロード・バランサーのリソース・グループを選択します。

    • タグ :(任意)リソースを整理したり見つけたりするのに役立つタグを追加してください。 後でさらにタグを追加できます。 詳しくは、『タグの処理』を参照してください。

    • アクセス管理タグ: (オプション) アクセス管理タグをリソースに追加して、アクセス制御関係の編成に役立てます。 サポートされるアクセス管理タグの形式は key:value のみです。 詳しくは、タグを使用したリソースに対するアクセス権限の制御を参照してください。

    • 仮想プライベート・クラウド: VPC を選択します。

    • サブネット: ロード・バランサーが作成されるサブネットを選択します。 アプリケーションの可用性を最大化するには、別のゾーンのサブネットを選択します。

      ALB ごとに 15 個を超えるサブネットを割り当てることはできません。

    • タイプ: ロード・バランサー・タイプを選択します。

      • パブリックロードバランサーにはパブリックIPアドレスが割り当てられているため、インターネット経由でクライアントからのリクエストをルーティングすることができます。
      • プライベートロードバランサーにはプライベートIPアドレスが割り当てられているため、同じリージョンおよびVPC内の内部クライアントからのみアクセス可能です。
    • DNSの種類 :「 パブリック 」または「 プライベート 」のいずれかを選択してください。 プライベートDNSゾーンは、 IBM Cloud でのみ解決可能であり、 アカウント明示的に許可されたネットワーク、 アカウントアクセス権限を持つネットワークからのみ解決可能です。

      プライベートタイプのみの場合は、 BindをクリックしてDNSインスタンスとゾーン情報を入力し、 Bindをクリックします。

  7. [バックエンドプール] セクションで、 [作成 ] をクリックし、以下の情報を指定してバックエンドプールを作成します。 1 つ以上のプールを作成できます。

    • 名前: プールの名前 (my-pool など) を入力します。
    • プールプロトコル :このプール内のインスタンスに適用するプロトコルを選択してください。 プールのプロトコルは、リスナーのプロトコルと互換性がなければならない。 HTTP、または HTTPS リスナーの場合、プールプロトコルとして HTTP。 TCP、プールプロトコルとして TCP。
    • セッション維持率: ユーザー・セッション中にすべての要求が同じインスタンスに送信されるかどうかを選択します。
    • プロキシプロトコル「無効」 (既定値)、「 バージョン 1 」、または「 バージョン 2 」(プロキシプロトコルヘッダーのバージョン)のいずれかを選択します。 プロキシプロトコルは、バックエンドプールに送信される TCP、 HTTP、および HTTPS パケットに、プロキシプロトコルヘッダーを付加します。 この設定により、バックエンドサーバーは、ロードバランサーがプロキシプロトコルヘッダーに設定したクライアントのIPアドレスおよびポート情報を取得できるようになります。
    • メソッド: ロード・バランサーでプール内のインスタンスにトラフィックを分散させる方法を選択します。
      • 最小接続数: 現時点で接続数が最小のインスタンスに要求を転送します。
      • ラウンドロビン: 各インスタンスに要求を順番に転送します。 すべてのインスタンスが、ほぼ同数のクライアント接続を受信します。
      • 重みづけしたラウンドロビン: 割り当てられた重みに比例して各インスタンスに要求を転送します。 例えば、インスタンス A、B、および C があり、それらの重みが 6060、および 30に設定されているとします。 インスタンス A と B は等しい数の接続を受信し、インスタンス C はその半数の接続を受信します。
    • ヘルス・チェック: ロード・バランサーがインスタンスの正常性を検査する方法を構成します。
      • ヘルス・チェック・パス: ヘルス・チェック・パスは、ヘルス・チェック・プロトコルとして HTTP が選択されている場合にのみ適用されます。 ヘルス・チェック・パスは、プール内のインスタンスに HTTP ヘルス・チェック要求を送信するためにロード・バランサーが使用する URL を指定します。 デフォルトでは、ヘルス・チェックはルート・パス (/) に送信されます。
      • ヘルス・プロトコル: ロード・バランサーがプール内のインスタンスにヘルス・チェック・メッセージを送信するために使用するプロトコル。
      • ヘルスポート(オプション) :ヘルスチェックのリクエストを送信するポート。 デフォルトでは、ヘルス・チェックは、インスタンスにトラフィックを送信するときと同じポートで送信されます。
      • 間隔(秒) :2回の連続したヘルスチェックの実行間隔(秒単位)。 デフォルトでは、ヘルス・チェックは 5 秒間隔で送信されます。
      • タイムアウト(秒) :ヘルスチェックのリクエストに対する応答をシステムが待機する最大時間。 デフォルトでは、ロード・バランサーは応答を 2 秒待ちます。
      • 最大再試行回数: インスタンスを正常でないと見なすまでにロード・バランサーが試行するヘルス・チェックの最大数。 デフォルトでは、ヘルス・チェックが 2 回失敗すると、インスタンスは正常ではないと見なされます。
  8. (任意)[ リクエスト設定 ] を選択して、ヘルスチェックのリクエスト値をカスタマイズします。 値が指定されていない場合は、デフォルト設定が使用されます。

    • リクエストメソッドGET または POST のいずれかを選択してください。 どちらのメソッドでも、リクエストヘッダーをカスタマイズできます。 POST メソッドを使用する際、必要に応じてリクエスト本文をカスタマイズすることができます。
    • リクエスト本文 :ヘルスチェックに使用する HTTP のリクエスト本文を含めてください。 特に指定がない場合、ヘルスチェックのリクエストにはリクエスト本文が含まれません。
    • ホストヘッダー :リクエストが HTTP/1.1 プロトコルを使用するように、ホストヘッダーを含めます。 それ以外の場合は、システムはデフォルトで HTTP/1.0 を使用します。
    • その他のリクエストヘッダーを追加する :1つ以上のリクエストヘッダーを追加します。
    • ヘッダー名GET リクエストメソッドの場合、 content-typeacceptauthorizationcookieoriginreferrer、または user-agent のいずれかを選択してください。 POST のリクエストメソッドについては、 content-typecontent-lengthapplication-json、または accept-encoding のいずれかを選択してください。
    • :指定されたヘッダー名に対応する値を入力してください。

    プライベートパス・ネットワーク・ロードバランサー(PPNLB)において、GET APIのレスポンスにヘルスモニターのリクエストおよびレスポンスフィールドが含まれないという既知の問題があります。

  9. (オプション)[ 応答設定 ] を選択して、ヘルスチェックの応答値をカスタマイズします。 値が指定されていない場合は、デフォルト設定が使用されます。

    • レスポンス本文 :レスポンス本文を入力してください。

    • 応答コード :100~599の範囲内で、カンマ区切りで複数の値を指定できます。 範囲を指定するには、XX を使用してください。 例えば、 2XX では、200~299の範囲です。

      HTTP データをプレーンテキストで送信するため、傍受される可能性があり、安全ではないと見なされます。プロトコルとしては、 http の代わりに https を使用することを推奨します。 詳細については、「 HTTP が安全でないのはなぜですか? 」をご覧ください。

      ロード・バランサーは正常でないインスタンスへの接続の送信を停止しますが、それらのインスタンスの正常性のモニターを続け、インスタンスが再び正常と判断された場合 (つまり、ヘルス・チェックの試行が 2 回連続で成功した場合) には、そのインスタンスの使用を再開します。

      プール内のインスタンスが正常でないのに、アプリケーションが正常に実行されている場合は、ヘルス・プロトコルとヘルス・パスの値を再確認してください。 また、インスタンスに関連付けられているセキュリティー・グループも参照して、ロード・バランサーとインスタンスの間のトラフィックがルールで許可されていることを確認してください。

  10. 作成 をクリックして、バックエンド・プールを作成します。

    バックエンド・プールの作成後に、サーバー・インスタンスを添付できます。

  11. サーバー・インスタンスを新規プールに追加するには、表の サーバー・インスタンス 列で サーバーの接続 をクリックします。

    • 仮想サーバー・インスタンスやベア・メタル・サーバーなどの VPC デバイスをプールに追加するには、VPC デバイス タブを選択します。 インスタンスごとに、以下の情報を指定します。

      • 選択するインスタンスがあるサブネットを 1 つ以上選択します。

      • インスタンスを選択します。 インスタンスに複数のインターフェースがある場合は、必ず、正しい IP アドレスを選択してください。

      • インスタンスにトラフィックを送信するためのポートを指定します。

      • プールで**「重みづけしたラウンドロビン」**メソッドが使用される場合、インスタンスごとに重みを割り当てます。

        0 の重みをインスタンスに割り当てることは、そのインスタンスに新しい接続が転送されないことを意味しますが、現在の接続がアクティブである間は、既存のトラフィックは流れ続けます。 重み 0 を使用すると、インスタンスを正常に停止し、サービス・ローテーションから削除するのに役立ちます。

      • ポートと重みの構成をクリックし、トラフィックがインスタンスに送信されるポートを指定します。

    • IBM Power Systems Virtual Server に含まれるサーバーなど、他のサーバー・インスタンスをバックエンド・プールに接続するには、その他 タブを選択してから、さらに追加をクリックします。 インスタンスごとに、以下の情報を指定します。

      • デバイスのプライベート IP アドレスを指定します。

      • インスタンスにトラフィックを送信するためのポートを指定します。

      • プールで**「重みづけしたラウンドロビン」**メソッドが使用される場合、インスタンスごとに重みを割り当てます。

        0 の重みをインスタンスに割り当てることは、そのインスタンスに新しい接続が転送されないことを意味しますが、現在の接続がアクティブである間は、既存のトラフィックは流れ続けます。 重み 0 を使用すると、インスタンスを正常に停止し、サービス・ローテーションから削除するのに役立ちます。

    • 添付 をクリックして、サーバー・インスタンスをバックエンド・プールに接続します。

  12. 「フロントエンド・リスナー」セクションで、リスナーの作成 をクリックし、以下の情報を指定してリスナーを作成します。 1 つ以上のリスナーを作成できます。

    • プロトコル: 着信要求を受信するために使用するプロトコル。
    • プロキシー・プロトコル: フロントエンド・リスナーがプロキシー・プロトコル・トラフィックを受け入れることを許可するかどうかを選択します。
    • ポート: 要求を受信するための listen ポート。
    • バックエンド・プール: このリスナーがトラフィックを転送するデフォルトのバックエンド・プール。
    • 最大接続数 (オプション): リスナーが許可する同時接続の最大数。
    • IAM 認証 : HTTPS がこのリスナーの選択プロトコルである場合、インスタンスまたはCRNのいずれかによって、IAM認証を指定する必要があります。
    • Secrets Manager: HTTPS がこのリスナーの選択されたプロトコルである場合、シークレットマネージャーを選択または作成する必要があります。
    • SSL 証明書: このリスナーで選択されたプロトコルが HTTPS である場合、SSL 証明書を選択する必要があります。 ロード・バランサーに SSL 証明書にアクセスする権限があることを確認してください。
    • タイムアウト (秒) (オプション): アイドル・タイムアウト期間が経過するまでにデータが送信または受信されなかった場合に、ロード・バランサーが接続を閉じるまでの最大タイムアウト。 タイムアウトの最小値は50秒、最大値は2時間である。 これらの値はクライアントとサーバーの両方に適用される。 タイムアウト制限を2時間以上に増やすには、必要なタイムアウト値のビジネス要件を提供する サポートケースを作成して ください。
  13. 作成 をクリックして、フロントエンド・リスナーを作成します。

  14. 「セキュリティー・グループ」セクションで、ロード・バランサーに接続するセキュリティー・グループを選択するか、作成 をクリックして ALB に接続する新規セキュリティー・グループを作成します。

    セキュリティー・グループでロード・バランシング・トラフィック (リスナー・ポート、バックエンド・ポート、およびヘルス・チェック・ポート) が許可されていることを確認します。 セキュリティー・グループを指定しない場合は、VPC のデフォルトのセキュリティー・グループが代わりに関連付けられます。

  15. プールとリスナーの作成を完了したら、**「ロード・バランサーの作成 (Create load balancer)」**をクリックします。

  16. 既存のロード・バランサーの詳細を表示するには、**「ロード・バランサー」**ページで、ロード・バランサーの名前をクリックします。

  17. オプションとして、既存のプールに対してバックアップを作成することができます。 これにより、メンバーに障害が発生した場合、バックアップ・プールがトラフィックを管理できるようになる。 そのためには、フェイルセーフ・ポリシーを作成する必要がある:

    • 単一のリスナーに複数のプールを関連付けることができるのは、アプリケーション・ロード・バランサーだけです。

    • ロードバランサに既に存在するプールが少なくとも1つあることを確認してください。

      リスナーはロードバランサーの親リソースです。 プールをリスナーに直接( default_pool )、または間接的 (別のプールの failsafe_policy.target )に関連付けることができます。 間接的に参照されるプールは、すでにリスナーにリンクされていなければならない。

    • ロードバランサーの状態が 「アクティブ」 に変わったら 、「バックエンドプール」タブを選択します。

    • プール一覧ページで「 編集 」をクリックし、以下の情報を指定してください:

      • アクション forwardを選択してフェイルセーフポリシーを設定します。 これは、メンバーに障害が発生したときに、トラフィックをバックアップ・プールに転送し、 ターゲット・ セクションをアクティブにする。
      • ターゲット互換性のあるプールのリストからバックアッププールとしてプールを選択します。
  18. HTTP リスナーから HTTPS リスナーにトラフィックをリダイレクトする場合は、HTTPS リダイレクト設定を使用して HTTP リスナーを作成できます。

    レイヤー 7 ロード・バランシング・ポリシーは、ここで定義した設定を上書きします。 また、 HTTPS へのリダイレクトを設定した新しい HTTP リスナーを作成する前に、既存の HTTPS リスナーが存在している必要がある点にご注意ください。

    そのためには、以下のようにします。

    • ロード・バランサーの状況が**「アクティブ」に変わった後に、「フロントエンド・リスナー」**タブをクリックします。
    • リスナー・リスト・ページで、**「作成」**をクリックしてから、以下の情報を指定します。
      • プロトコルプロトコルとして HTTP を選択してください。
      • ポート: 要求を受信するための listen ポートを選択します。
      • 最大接続数 (オプション): リスナーが許可する同時接続の最大数を定義します。
      • HTTPS リダイレクト (HTTPS redirect): トグル・ボタンをクリックして HTTPS リダイレクト構成を有効にしてから、以下の HTTPS リダイレクト設定を指定します。
        • HTTPS リスナー :現在の HTTP リスナーからの受信トラフィックをリダイレクトするターゲットの HTTPS リスナー。 なお、表示されるのは、 accept_proxy_protocol の値が HTTP のリスナーと同じである HTTPS リスナーのリストのみであることに注意してください。
        • リダイレクト URI (Redirect URI) (オプション): 要求がリダイレクトされる URL。
        • 状況コード: ロード・バランサーから返される応答の状況コード。
  19. 特定の条件に基づいて、HTTP または HTTPS フロントエンド・リスナーに対する特定の着信トラフィックをリダイレクト、転送、または拒否する場合は、レイヤー 7 のポリシーを構成します。

    • ロード・バランサーの状況が**「アクティブ」に変わった後に、ナビゲーションの「フロントエンド・リスナー」をクリックし、作成したリスナーの「ポリシー」**列の値をクリックします。
    • 「ポリシー」ページで、**「ポリシーの追加 (Add policy)」**をクリックし、以下の情報を指定してポリシーを作成します。 複数のポリシーを作成できます。
      • 名前: ポリシーの名前 (my-policy など) を入力します。 この名前はリスナー内で固有でなければなりません。
      • アクション: ポリシーのすべてのルールが一致したときに実行するアクション。 403 応答で要求を拒否するか、構成した URL および応答コードで要求をリダイレクトするか、HTTP リスナーから HTTPS リスナーにトラフィックをリダイレクトするか、特定のバックエンド・プールに要求を転送することができます。 どのポリシーのルールにも一致しない着信要求は、リスナーのデフォルトのバックエンド・プールに転送されます。
      • 優先順位: 同じアクション・タイプの中では、ポリシーは優先順位の昇順に評価されます。 優先順位に関係なく、トラフィックを拒否するポリシーが、常に最初に評価されます。 次に、トラフィックをリダイレクトするポリシーが評価され、その後に、トラフィックを転送するポリシーが評価されます。
      • リダイレクト: アクションを「リダイレクト」に設定する場合に、要求をリダイレクトする URL。 URL または URI のパラメータのどちらかを指定する必要があります。 URL を使用している場合、すべての着信トラフィックはこの URL にリダイレクトされる。 URI パラメータを使用する場合、パラメータの受信値を使用して、受信トラフィック要求の値を保持できます。 これには、プロトコル、ポート、ホスト、パス、クエリが含まれます。 URIパラメータのデフォルト値は、元の受信値と同じである。 入力された値を保持するには、次のように指定します。{protocol}{port}{host}{path} 、 そして {query}。 例えば、着信リクエストのホストが ibm.com の場合、デフォルト値は着信 ibm.com の値と等しい {host} である。
      • 状況コード: アクションを「リダイレクト」に設定する場合に、ロード・バランサーから返す応答の状況コード。
      • 転送: アクションを「プールに転送 (Forward to pool)」に設定する場合に、要求を転送する仮想サーバー・インスタンスのバックエンド・プール。
    • 「ポリシー」ページで、以下の構成を使用して HTTPS リダイレクト・ポリシーを作成することもできます。
      • 名前: ポリシーの名前 (my-policy など) を入力します。 この名前はリスナー内で固有でなければなりません。
      • 処置: HTTPS へのリダイレクト オプションを選択します。
      • HTTPS リスナー :現在の HTTP リスナーからのトラフィックがリダイレクトされるターゲットの HTTPS リスナー。 なお、表示されるのは、 accept_proxy_proxy の値が HTTP のリスナーと同じである HTTPS リスナーのリストのみであることに注意してください。
      • リダイレクト URI (Redirect URI) (オプション): 要求がリダイレクトされる URL。
      • 状況コード: ロード・バランサーから返される応答の状況コード。
    • 「ポリシー」ページで、対象ポリシーの**「ルールの追加」をクリックします。 ポリシーにルールが存在する場合は、「ルール」**列の値をクリックして、さらにルールを追加します。
    • 「ルール」ウィンドウで**「ルールの追加」**をクリックし、以下の情報を指定してルールを作成します。 1 つのポリシーに複数のルールを作成した場合、ポリシーは、そのすべてのルールが一致した場合にのみ適用されます。
      • 条件: ルールを評価する条件を指定します。
      • タイプ: ルールで評価する情報のタイプ。要求の発信元ホストの名前、HTTP ヘッダー・フィールド、または URL 内のパス。
      • : 突き合わせる値。
      • キー: ルール・タイプが「ヘッダー」の場合に、評価する HTTP ヘッダー・フィールドの名前。 例えば、HTTP ヘッダー内の cookie と突き合わせるには、キーに**「Cookie」**と入力します。

CLI からアプリケーションロードバランサーを作成する

次の例では、CLI を使用して Application Load Balancer for VPC (ALB)を作成する方法を示します。 この例では、ポート 9090 で listen する TCP サーバーを実行する 1 つの VPC 仮想サーバー・インスタンス (ID 0716_6acdd058-4607-4463-af08-d4999d983945) の前に配置しています。 ロード・バランサーのフロントエンド・リスナーにより、TCP サーバーへの安全なアクセスが可能になります。

CLI からアプリケーションロードバランサーを作成するには、以下の手順に従ってください

  1. CLI 環境をセットアップします。

  2. 端末から CLI を使用してアカウントにログインします。 パスワードを入力すると、使用するアカウントとリージョンの入力を求めるプロンプトが表示されます。

    ibmcloud login --sso
    
  3. ロード・バランサーを作成します。

    ibmcloud is load-balancer-create alb-test public --subnet 0896-b1f24514-89dc-4afd-b0e2-5489a43cf45c --family application
    

    出力例:

    ibmcloud is load-balancer-create my-lb public --subnet my-subnet
    Creating load balancer my-lb under account vpcdemo as user test@ibm.com..
    
    ID                                 r026-ec6717fa-aa6c-46c4-94ff-4ccd193ee423   
    Name                               my-lb   
    CRN                                crn:v1:bluemix:public:is:au-syd:a/7f75c7b025e54bc5635f754b2f888665::load-balancer:r026-ec6717fa-aa6c-46c4-94ff-4ccd193ee423   
    Family                             application   
    Host name                          ec6717fa-au-syd.lb.appdomain.cloud   
    Subnets                            ID                                          Name      
                                    02h7-16f74a61-b586-4143-92df-dbc4a047bd5c   my-subnet      
    
    Public IPs                            
    Private IPs                           
    Provision status                   create_pending   
    Operating status                   offline   
    Is public                          true   
    Is private path                    false   
    Listeners                             
    Pools                              ID   Name      
    
    Resource group                     ID                                 Name      
                                    bdd96715c2a44f2bb60df4ff14a543f5   -      
    
    Created                            2026-05-26T14:47:06+05:30   
    Availability                       subnet   
    Instance Group Supported           true   
    SourceIP Session Supported         true   
    Security groups supported          true   
    UDP Supported                      false   
    Failsafe policy actions            fail,drop,forward   
    Access mode                        public   
    Advanced Health Checks Supported   true   
    FQDN Pool Members Supported        true     
    
  4. プールを作成します。

    ibmcloud is load-balancer-pool-create alb-pool r134-1b3d2967-d395-4023-8705-829454081e23  weighted_round_robin tcp 10  --failsafe-policy-action forward --failsafe-policy-target pool2
    

    出力例:

    Creating pool alb-pool of load balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776  under account IBM Cloud Network Services as user test@ibm.com...
    
    ID                         r006-3b66d605-6aa5-4166-9f66-b16054da3cb0
    Name                       alb-pool
    Protocol                   tcp
    Algorithm                  weighted_round_robin
    Instance group             ID   Name
                               -    -
    
    Health monitor             Type   Port   Health monitor URL   Delay   Retries   Timeout
                               http   8080   /                    10      2         5
    
    Failsafe policy            Action    Target ID                                   Target name   Healthy Member Threshold Count
                               forward   r006-815e16e7-8729-4d9e-9203-936a6b615ee1   pool2         0
    
    Session persistence type   source_ip
    Members
    Provision status           active
    Created                    2020-08-27T14:45:42.038-05:00
    
  5. メンバーを作成します。

    ibmcloud is load-balancer-pool-member-create r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 r006-3b66d605-6aa5-4166-9f66-b16054da3cb0 9090 0716_6acdd058-4607-4463-af08-d4999d983945 --weight 70
    

    出力例:

    Creating member of pool r006-3b66d605-6aa5-4166-9f66-b16054da3cb0 under account IBM Cloud Network Services as user test@ibm.com...
    
    ID                 r006-61f8b000-a90d-4abe-909e-c507dffec565
    Port               9090
    Target             0716_6acdd058-4607-4463-af08-d4999d983945
    Weight             70
    Health             unknown
    Created            2020-08-27T14:59:55.446-05:00
    Provision status   create_pending
    
  6. リスナーを作成します。

    $ibmcloud is load-balancer-listener-create r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 7070 tcp --default-pool r006-3b66d605-6aa5-4166-9f66-b16054da3cb0 -idle-connection-timeout 30
    

    出力例:

    $ibmcloud is load-balancer-listener-create r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 7070 tcp --default-pool r006-3b66d605-6aa5-4166-9f66-b16054da3cb0 -idle-connection-timeout 30
    
    Sample output:
    Creating listener of load balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 under account IBM Cloud Network Services as user test@ibm.com...
    ID                      r006-2847a948-f9b6-4fc1-91c6-f1c49dac3eba
    Certificate instance    -
    Connection limit        -
    Idle connection timeout 30
    Port                    7070
    Protocol                tcp
    Default pool            r006-3b66d605-6aa5-4166-9f66-b16054da3cb0
    Provision status        create_pending
    Created                 2020-08-27T15:16:08.643-05:00
    

    その他のオプションについては、 VPC CLI reference for load balancersを 参照してください。

  7. ポリシーを作成します。

    ibmcloud is load-balancer-listener-policy-create 72251a2e-d6c5-42b4-97b0-b5f8e8d1f479 72b27b5c-f4b0-48bb-b954-5becc7c1dcb3 --action redirect --priority 2 --target-http-status-code 301 --target-url "https://{host}:443/{path}"
    

    出力例:

    Creating policy of load balancer listener 72b27b5c-f4b0-48bb-b954-5becc7c1dcb3 under account IBM Cloud Network Services as user test@ibm.com...
    
    ID                      r006-4847a949-f9b6-4fc1-71c6-d1c49dac3ebc
    Action                  redirect
    Priority                2
    Http status code        301
    Target Url              https://{host}:443/{path}
    Provision status        create_pending
    Created                 2024-04-23T15:16:08.643-05:00
    
  8. ロード・バランサーの詳細を表示します。

    ibmcloud is load-balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776
    

    出力例:

    Getting load balancer r006-99b5ab45-6357-42db-8b32-5d2c8aa62776 under account IBM Cloud Network Services as user test@ibm.com...
    
    ID                 r006-99b5ab45-6357-42db-8b32-5d2c8aa62776
    Name               alb-test
    CRN                crn:v1:public:is:us-south-1:a/123456::load-balancer:r006-99b5ab45-6357-42db-8b32-5d2c8aa62776
    Family             Application
    Host name          99b5ab45-us-south.lb.test.appdomain.cloud
    Subnets            ID                                          Name
                       0896-b1f24514-89dc-4afd-b0e2-5489a43cf45c   alb-subnet
    
    Public IPs         150.238.50.78, 150.238.54.95
    Private IPs        10.240.0.58, 10.240.0.59
    Provision status   active
    Operating status   online
    Is public          true
    Listeners          r006-2847a948-f9b6-4fc1-91c6-f1c49dac3eba
    Pools              ID                                          Name
                       r006-3b66d605-6aa5-4166-9f66-b16054da3cb0   alb-pool
    
    Resource group     ID                                 Name
                       3021f90279574ce287dd5fba82c08899   Default
    
    Created            2020-08-27T14:34:34.732-05:00
    

API を使用してアプリケーションロードバランサーを作成する

以下の例は、API を使用して、ポート 80で listen する Web アプリケーションを実行する 2 つの VPC 仮想サーバー・インスタンス (192.168.100.5 および 192.168.100.6) の前にアプリケーション・ロード・バランサーを作成する方法を示しています。 ロード・バランサーのフロントエンド・リスナーにより、HTTPS を使用した Web アプリケーションへの安全なアクセスが可能になります。

この例では、API を使用して VPC、サブネット、インスタンスをプロビジョンする前提条件の手順を省略しています。

API を使用してアプリケーションロードバランサーを作成するには、以下の手順に従ってください

  1. API 環境をセットアップします。

  2. API コマンドで使用する以下の値を変数に格納します。

    • ResourceGroupId - まず、リソース・グループを取得してから、この変数に値を割り当てます。
    export ResourceGroupId=<your_resourcegroup_id>
    

    また、 IBM Cloud コンソールを使用して、リソースグループ ID を見つけることもできます。 お使いのブラウザで、 IBM Cloud コンソールを開き、 アカウントにログインしてください。 管理 ] > [ アカウント ] > [ リソースグループ] を選択します。

  3. 以下のサンプルコードで、リスナー、プール、アタッチされたサーバーインスタンス(プールメンバー)を持つロードバランサーを作成します:

    curl -H "Authorization: Bearer $iam_token" -X POST
    "$vpc_api_endpoint/v1/load_balancers?version=$api_version&generation=2" \
      -d @alb_create_payload.json
      Where alb_create_payload.json has the following content:
      '{
          "name": "example-balancer",
          "is_public": true,
          "listeners": [
              {
                  "certificate_instance": {
                      "crn": "crn:v1:bluemix:public:cloudcerts:us-south:a/123456:b8877ea4-b8eg-467e-912a-da1eb7f031cg:certificate:43219c4c97d013fb2a95b21dddde1234"
                  },
                  "port": 443,
                  "protocol": "https",
                  "idle_connection_timeout" : 80,
                  "default_pool": {
                      "name": "example-pool"
                  }
              }
          ],
          "pools": [
              {
                  "algorithm": "round_robin",
                  "health_monitor": {
                      "delay": 5,
                      "max_retries": 2,
                      "timeout": 2,
                      "type": "tcp",
                      "url_path": "/"
                  },
                  "name": "example-pool",
                  "protocol": "tcp",
                  "session_persistence": {
                      "cookie_name": "string",
                      "type": "source_ip"
                  },
                  "members": [
                      {
                          "port": 80,
                          "target": {
                              "address": "192.168.100.5"
                          },
                          "weight": 50
                      },
                      {
                          "port": 80,
                          "target": {
                              "address": "192.168.100.6"
                          },
                          "weight": 50
                      }
                  ]
              }
          ],
          "subnets": [
              {
                  "id": "7ec87131-1c7e-4990-b4f0-a26f2e61f98e"
              }
          ]
          }'
    

    その他のオプションについては、 VPC API reference for load balancersを 参照してください。

    出力例:

    {
        "created_at": "2018-07-12T23:17:07.5985381Z",
        "crn": "crn:v1:bluemix:public:is:us-south:a/123456::load-balancer:dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
        "hostname": "ac34687d.lb.appdomain.cloud",
        "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
        "id": "0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
        "is_public": true,
        "profile": {
            "name": "network-fixed"
        },
        "listeners": [
            {
                "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
                "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/70294e14-4e61-11e8-bcf4-0242ac110004"
            }
        ],
        "name": "example-balancer",
        "operating_status": "offline",
        "pools": [
            {
                "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
                "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/70294e14-4e61-11e8-bcf4-0242ac110004",
                "name": "example-pool"
            }
        ],
        "provisioning_status": "create_pending",
        "resource_group": {
            "id": "56969d60-43e9-465c-883c-b9f7363e78e8"
        },
        "subnets": [
            {
                "id": "0738-7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
                "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
                "name": "example-subnet"
            }
        ]
    }
    

    次の手順で使用するために、ロード・バランサーの ID を保存します。 例えば、変数 lbid などに保存してください。

    lbid=0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727
    
  4. ロード・バランサーに関する詳細を取得する

    curl -H "Authorization: Bearer $iam_token" -X GET "$vpc_api_endpoint/v1/load_balancers/$lbid?version=$api_version&generation=2"
    

    プロビジョニングにはある程度時間がかかることを想定しておいてください。 ロード・バランサーの準備ができると、次の出力例に示されているように、online および active の状況に設定されます。

    {
      "id": "0738-dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
      "crn": "crn:v1:bluemix:public:is:us-south:a/123456::load-balancer:dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
      "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727",
      "name": "example-balancer",
      "created_at": "2018-07-13T22:22:24.489Z",
      "hostname": "dd754295-e9e0-4c9d-bf6c-58fbc59e5727.lb.appdomain.cloud",
      "is_public": true,
      "profile": {
            "name": "network-fixed"
      },
      "listeners": [
        {
          "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
           "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/listeners/70294e14-4e61-11e8-bcf4-0242ac110004"
        }
      ],
      "operating_status": "online",
      "pools": [
        {
          "id": "0738-70294e14-4e61-11e8-bcf4-0242ac110004",
          "href": "https://us-south.iaas.cloud.ibm.com/v1/load_balancers/dd754295-e9e0-4c9d-bf6c-58fbc59e5727/pools/70294e14-4e61-11e8-bcf4-0242ac110004",
          "name": "example-pool"
        }
      ],
      "private_ips": [
        {
          "address": "192.168.10.5"
        },
        {
          "address": "192.168.10.6"
        }
      ],
      "provisioning_status": "active",
      "public_ips": [
        {
            "address": "169.11.111.115"
        },
        {
            "address": "169.11.111.116"
        }
      ],
      "resource_group": {
        "id": "0738-56969d60-43e9-465c-883c-b9f7363e78e8"
      },
      "subnets": [
        {
          "id": "0738-7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
          "href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/7ec86020-1c6e-4889-b3f0-a15f2e50f87e",
          "name": "example-subnet"
        }
      ]
    }