APIを利用し内部LB(内部ロードバランサー)を設定する | IDCFクラウド ご利用ガイド

APIを利用し内部LB(内部ロードバランサー)を設定する

IDCFクラウドのインフィニットLB(ILB)では、インターネットからのアクセスを分散する通常の機能に加え、**内部ネットワーク(プライベートネットワーク)間での負荷分散を行う「内部LB機能」**を提供しています。

内部LB機能を利用することで、WebサーバーからDBサーバーへのアクセス負荷分散や、サービス間の内部通信を、インターネットを経由させずにセキュアかつ低レイテンシで構築することが可能です。 本機能は現在、API(idcfcloud-cli)を通じて提供されています。

本ページで紹介する内容の詳細なAPI仕様は、 「ILB API Docs」をご参照ください。


目次

  1. 内部LB機能の概要
  2. 内部LBを利用する前提条件
  3. 内部LBの作成・更新 (Loadbalancer)
  4. 構成(Config)の追加・更新
  5. サーバー(Client/Backend)の個別追加
  6. ご利用上の注意点・課金

1. 内部LB機能の概要

内部LBは、指定したプライベートネットワーク間でのみ通信を完結させるロードバランサーです。

主な特徴

  • 閉域網内での通信: インターネットゲートウェイを経由しないため、外部からの不要な接触を遮断した負荷分散が可能です。
  • 内部専用FQDN: 作成時に xxx.local.ilb.[リージョン名].idcfcloud.net 形式のFQDNが払い出されます。
  • FQDNによる通信: ILBノードのIPアドレスをAレコードとした内部専用ドメインを使用して通信を行います。

2. 内部LBを利用する前提条件

内部LBの作成には、以下の情報を事前に取得してメモしておいてください。

必要な項目と確認方法

[ネットワーク設定]

  1. クライアント側ネットワークID: 負荷分散を依頼する側(リクエスト送信元)のネットワークID(UUID形式)。
  2. バックエンド側ネットワークID: 分散対象の仮想マシンが所属するネットワークID(UUID形式)。

※注意:クライアント側ネットワークとバックエンド側ネットワークは、同一ネットワークまたは同一のゾーン内異なるネットワークをご利用いただけます。異なるゾーンを跨いだ構成はできません。

ネットワークIDの確認方法です。
画面遷移: コンピュート→ネットワーク→ネットワーク名→ネットワークID


3. 内部LBの作成・更新 (Loadbalancer)

内部LBの基本設定(LB名、所属ネットワーク、サーバー情報)を管理します。

内部LBの作成

POST api/v1/internal/loadbalancers

# idcfcloud ilb post api/v1/internal/loadbalancers
'{
  "name": "sample-internal-ilb",  -- 任意のLB名
  "client_network_id": "01234567-89ab-cdef-0123-456789abcdef",  -- 送信元ネットワークのUUID
  "backend_network_id": "fedcba98-7654-3210-fedc-ba9876543210",  -- 分散先ネットワークのUUID
  "configs": [
    {
      "frontend_protocol": "http",  -- 待ち受けプロトコル (http / https / tcp / ssl)
      "port": 80,  -- 待ち受けポート
      "client_servers": [
        {
          "ipaddress": "192.0.0.100"  -- client_networkに指定したネットワーク配下の任意IPアドレス
        }
      ],
      "backend_servers": [
        {
          "ipaddress": "192.0.10.100",  -- backend_networkに指定したネットワーク配下の任意IPアドレス
          "port": 80  -- 任意のポート
        }
      ],
      "backend_protocol": "http",
      "connection_timeout": 60,
      "algorithm": "roundrobin",  -- 負荷分散アルゴリズム
      "healthcheck": {
        "type": "http",
        "check_interval": 30,
        "timeout": 5,
        "unhealthy_threshold": 2,
        "healthy_threshold": 10,
        "path": "/"
      },
    }
  ]
}'

※httpsを利用する場合やオプションを利用する場合は追加でパラメータの指定が必要となります。  詳細はAPIリファレンスをご確認ください。

内部LBの更新

PUT api/v1/internal/loadbalancers/{loadbalancer_id}

内部ロードバランサーの設定を変更します。

# idcfcloud ilb put api/v1/internal/loadbalancers/{lb_id}
'{
  "configs": [
    {
      "frontend_protocol": "http",  -- 待ち受けプロトコル (http / https / tcp / ssl)
      "port": 80,  -- 待ち受けポート
      "client_servers": [
        {
          "ipaddress": "192.0.0.100"  -- client_networkに指定したネットワーク配下の任意IPアドレス
        }
      ],
      "backend_servers": [
        {
          "ipaddress": "192.0.10.100",  -- backend_networkに指定したネットワーク配下の任意IPアドレス
          "port": 80  -- 任意のポート
        }
      ],
      "backend_protocol": "http",
      "connection_timeout": 60,
      "algorithm": "roundrobin",  -- 負荷分散アルゴリズム
      "healthcheck": {
        "type": "http",
        "check_interval": 30,
        "timeout": 5,
        "unhealthy_threshold": 2,
        "healthy_threshold": 10,
        "path": "/"
      },
    }
  ]
}'

内部LB情報の取得 (GET)

内部LBの情報は、既存の参照APIから取得可能です。内部LB固有のパラメータがレスポンスに追加されます。

  • 一覧取得: GET api/v1/loadbalancers
# idcfcloud ilb get api/v1/loadbalancers
  • 1件取得: GET api/v1/loadbalancers/{loadbalancer_id}
# idcfcloud ilb get api/v1/loadbalancers/{loadbalancer_id}

内部LBの削除

DELETE api/v1/internal/loadbalancers/{loadbalancer_id}

不要になった内部LBを削除します。 既存の削除API(DELETE api/v1/loadbalancers/{loadbalancer_id})でも可能です。

# idcfcloud ilb delete api/v1/internal/loadbalancers/{loadbalancer_id}

4. 構成(Config)の追加・更新

作成済みの内部LBに対し、ポート設定(待ち受けプロトコル、ヘルスチェック、アルゴリズム等)を管理します。

構成の追加

POST api/v1/internal/loadbalancers/{lb_id}/configs

# idcfcloud ilb post api/v1/internal/loadbalancers/{lb_id}/configs
'{
  "frontend_protocol": "http",  -- 待ち受けプロトコル (http / https / tcp / ssl)
  "port": 80,  -- 待ち受けポート
  "client_servers": [
    {
      "ipaddress": "192.0.0.100"  -- client_networkに指定したネットワーク配下の任意IPアドレス
    }
  ],
  "backend_servers": [
    {
      "ipaddress": "192.0.10.100",  -- backend_networkに指定したネットワーク配下の任意IPアドレス
      "port": 80  -- 任意のポート
    }
  ],
  "backend_protocol": "http",
  "connection_timeout": 60,
  "algorithm": "roundrobin",  -- 負荷分散アルゴリズム
  "healthcheck": {
    "type": "http",
    "check_interval": 30,
    "timeout": 5,
    "unhealthy_threshold": 2,
    "healthy_threshold": 10,
    "path": "/"
  },
}'

構成の更新

PATCH api/v1/internal/loadbalancers/{lb_id}/configs/{config_id}

既存の設定内容を変更します。

※PATCHリクエストでは、変更したい項目(パラメータ)のみを指定することで、その項目だけを更新できます。

# 例:アルゴリズムとタイムアウトのみを変更する場合
# idcfcloud ilb patch api/v1/internal/loadbalancers/{lb_id}/configs/{config_id}
'{
  "frontend_protocol": "http",  -- 待ち受けプロトコル (http / https / tcp / ssl)
  "port": 80,  -- 待ち受けポート
  "client_servers": [
    {
      "ipaddress": "192.0.0.100"  -- client_networkに指定したネットワーク配下の任意IPアドレス
    }
  ],
  "backend_servers": [
    {
      "ipaddress": "192.0.10.100",  -- backend_networkに指定したネットワーク配下の任意IPアドレス
      "port": 80  -- 任意のポート
    }
  ],
  "backend_protocol": "http",
  "connection_timeout": 60,
  "algorithm": "roundrobin",  -- 負荷分散アルゴリズム
  "healthcheck": {
    "type": "http",
    "check_interval": 30,
    "timeout": 5,
    "unhealthy_threshold": 2,
    "healthy_threshold": 10,
    "path": "/"
  },
}'

構成の取得 (GET)

構成情報は、既存の参照APIから取得可能です。内部LB固有のパラメータがレスポンスに追加されます。

  • 一覧取得: GET api/v1/loadbalancers/{loadbalncer_id}/cofigs
# idcfcloud ilb get api/v1/loadbalancers/cofigs
  • 1件取得: GET api/v1/loadbalancers/{loadbalancer_id}/cofigs/{config_id}
# idcfcloud ilb get api/v1/loadbalancers/{loadbalancer_id}/cofigs/{config_id}

構成の削除

DELETE api/v1/internal/loadbalancers/{loadbalancer_id}/cofigs/{config_id}

不要になった内部LBのConfigを削除します。 既存の削除API(DELETE api/v1/loadbalancers/{loadbalancer_id}/cofigs/{config_id})でも可能です。

# idcfcloud ilb delete api/v1/internal/loadbalancers/{loadbalancer_id}/cofigs/{config_id}

5. サーバー(Client/Backend)の個別追加

特定のConfigに対し、サーバーのIPアドレスを個別に追加・削除します。

クライアントサーバー(送信元)の追加

接続を許可する送信元サーバーを追加します。

# idcfcloud ilb post api/v1/internal/loadbalancers/{lb_id}/configs/{config_id}/client-servers
'{
  "ipaddress": "10.0.1.12" -- 追加する送信元サーバーのプライベートIP
}'

クライアントサーバーの取得

GET api/v1/loadbalancers/{loadblancer_id}/cofigs/{config_id}/client-servers

指定された内部LBの構成(Config)に属するクライアントサーバの一覧を取得します。

# idcfcloud ilb get api/v1/loadbalancers/{loadblancer_id}/cofigs/{config_id}/client-servers

クライアントサーバの削除

DELETE api/v1/internal/loadbalancers/{loadbalancer_id}/cofigs/{config_id}/client-servers/{server_id}

不要になったクライアントサーバを構成から削除します。

# idcfcloud ilb delete api/v1/internal/loadbalancers/{loadbalancer_id}/cofigs/{config_id}/client-servers/{server_id}

バックエンドサーバー(分散先)の追加

負荷分散対象とするバックエンドサーバーを追加します。

# idcfcloud ilb post api/v1/internal/loadbalancers/{lb_id}/configs/{config_id}/backend-servers
'{
  "ipaddress": "10.0.2.101", -- 追加する分散先サーバーのプライベートIP
  "port": 80 -- バックエンド側のポート番号
}'

バックエンドサーバーの取得

GET api/v1/loadbalancers/{loadblancer_id}/cofigs/{config_id}/backend-servers

指定された内部LBの構成(Config)に属するバックエンドサーバの一覧を取得します。

# idcfcloud ilb get api/v1/loadbalancers/{loadblancer_id}/cofigs/{config_id}/backend-servers

バックエンドサーバの削除

DELETE api/v1/internal/loadbalancers/{loadbalancer_id}/cofigs/{config_id}/backend-servers/{server_id}

不要になったバックエンドサーバを構成から削除します。

# idcfcloud ilb delete api/v1/internal/loadbalancers/{loadbalancer_id}/cofigs/{config_id}/backend-servers/{server_id}

6. ご利用上の注意点・課金

ご利用上の注意点

  • 同一ゾーン制約: client_network_idbackend_network_id は必ず同一ゾーン内のネットワークを指定してください。
  • LBタイプの排他: 作成後のパブリックLB ⇔ 内部LBの切り替えはできません。
  • 利用不可オプション: 一部オプションは効果がありません。
    • IPアドレス固定化
    • FWグループ
  • 名前解決: クライアントサーバーが内部FQDN(xxx.local.ilb...)を正しく解決できる環境であることを確認してください。

課金について

  • 月額費用: 内部LBを任意で作成する場合、通常のILBと同様の料金が発生します。
  • 転送量課金: 内部ネットワーク間のみの通信となるため、ネットワーク転送量による課金は発生しません。

関連情報