APIでバランシング設定をする

APIを使用してNATロードバランサーのバランシング設定をする方法をご案内します。
以下手順では、NATロードバランサー配下のサーバーにSSH接続を行うための設定例をご案内します。

なお、セキュリティの観点から本来のSSH接続で使用されている22番ポートではなく、NATロードバランサー側は10022番ポートで設定し、外部から10022番ポートにアクセスがあった場合、バランシング先サーバーの22番ポートに転送するように設定します。

APIによるcurlコマンドを用いた設定手順となりますので、任意のサーバーにて実行ください。

 API操作

コマンドラインにてバランシング設定に必要なAPIを実行します。

・トークンの発行

[ 1 ] API認証を行い、トークンの取得ならびに発行されたトークンIDを確認します。実行コマンドの赤字の部分は、API情報に差し替えて実行ください。

※ 対象のAPIリファレンスは こちら
認証の
エンドポイント
コントロールパネル内のAPIメニューから「Identity Service」をご確認ください。
APIユーザー名 コントロールパネル内のAPIメニューからAPIユーザーを作成ください。
パスワード コントロールパネルのAPIメニューからAPIユーザーを作成する際に設定するパスワード。
テナント名 コントロールパネル内のAPIメニューから「テナント名」をご確認ください。
curl -i -X POST \ -H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"auth":{"passwordCredentials":{"username": "APIユーザー名", "password": "パスワード"},"tenantName":"テナント名"}}' \
認証のエンドポイント/tokens
コンソール画面上には以下のようにリクエストの結果が返ってきます。「access」の「id」の値がAPI操作を行う際に必要となるトークンIDです。以降の手順では、トークンIDと表示されているものは全てこのIDを指すものとします。トークンIDは発行後、24時間で失効となりますので作業が日をまたぐ場合は都度発行する必要があります。
{“access”:{"token":{"issued_at":"2016-11-27T08:01:26.504595","expires":"2016-11-28T08:01:26Z",
"id":"9e54605ee98043b2a89d28f80bc1ce3f"
・POOLの作成
[ 2 ] 以下コマンドを実行し、POOLを作成します。実行コマンドの赤字の部分は、API情報やこれまでに実行したAPIでご確認いただいている内容に差し替えて実行ください。

※ POOL作成にあたりVIPのUUID情報の確認方法は こちら
ネットワークの
エンドポイント
コントロールパネル内のAPIメニューから「Network Service」をご確認ください。
curl -i -X POST  \
-H "Accept: application/json" -H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
-d '{"pool":{"lb_method":"ROUND_ROBIN","protocol":"TCP","name":"10022_lb","subnet_id":"VIPのUUID情報"}}' \
ネットワークのエンドポイント/v2.0/lb/pools
正しく実行されると以下のような戻り値が返ります。「POOL_ID」の値が後述する設定手順で必要となる値になりますのでメモしておきます。
{"pool": 
 {
  "status": "PENDING_CREATE",
  "lb_method": "ROUND_ROBIN",
  "protocol": "TCP", 
  "description": "", 
  "health_monitors": [], 
  "members": [], 
  "status_description": null, 
  "id": "POOL_ID", 
  "vip_id": null, 
  "name": "10022_lb", 
  "admin_state_up": true, 
  "subnet_id": "VIPのUUID情報", 
  "tenant_id": "テナントID", 
  "health_monitors_status": [], 
  "provider": "lbnat1"
 }
}
・ヘルスモニタールールの関連付け
[ 3 ] 以下コマンドを実行し、作成したヘルスモニターのルールをPOOLに関連付けます。実行コマンドの赤字の部分は、API情報やこれまでに実行したAPIでご確認いただいている内容に差し替えて実行ください。

※ ヘルスモニタールールの関連付けの確認手順は こちら
curl -i -X POST \
-H "Accept: application/json" -H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
-d '{"health_monitor":{"id":"ヘルスモニタールールのUUID情報"}}' \
ネットワークのエンドポイント/v2.0/lb/pools/POOL_ID/health_monitors
正しく実行されると以下のような戻り値が返ります。
{
"health_monitor": {}
}
・VIPの設定
[ 4 ] 以下コマンドを実行し、VIPにポート番号情報を紐付けます。実行コマンドの赤字の部分は、API情報やこれまでに実行したAPIでご確認いただいている内容に差し替えて実行ください。

※ 対象のAPIリファレンスは こちら
curl -i -X POST \
-H "Accept: application/json" -H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
-d '{"vip":{"address":"NATロードバランサーのVIP","protocol":"TCP","protocol_port":"10022","subnet_id":"VIPのUUID情報","admin_state_up":true,"pool_id":"POOL_ID","name":"vip_ssh_10022"}}' \
ネットワークのエンドポイント/v2.0/lb/vips
正しく実行されると以下のようなステータスコードの戻り値がきます。
HTTP/1.1 201 Created
・MEMBERの作成
[ 5 ] 以下コマンドを実行し、バランシング先となる仮想サーバーの22番に転送させる設定をします。実行コマンドの赤字の部分は、API情報やこれまでに実行したAPIでご確認いただいている内容に差し替えて実行ください。

※ 対象のAPIリファレンスは こちら
curl -i -X POST \
-H "Accept: application/json" -H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
-d '{"member": {"pool_id": "POOL_ID","address": "対象サーバーのプライベートIPアドレス","protocol_port": "22"}}' \
ネットワークのエンドポイント/v2.0/lb/members
正しく実行されると以下のような戻り値が返ります。
{
 "member": {
            "admin_state_up": true, 
            "status": "PENDING_CREATE", 
            "status_description": null, 
            "weight": 1, 
            "address": "対象サーバーのプライベートIPアドレス", 
            "tenant_id": "テナントID", 
            "protocol_port": 22, 
            "id": "MEMBER_ID", 
            "pool_id": "POOL_ID"
           }
}

以上で設定は完了です。バランシング先の仮想サーバーで22番が待ち受けになっている状態であれば、外部からVIPの10022番ポートに対してSSH接続した際に対象サーバーに接続できるようになります。
お手元のクライアントソフトにてお試しください。


本リファレンスはZ.com Cloudにてサーバーをご利用いただく場合の一例であり、お客様の運用やポリシーによってその限りではございません。
お客様のご利用用途に応じて必要な設定や操作を行なってください。

Internet for everyone

Copyright (c) 2024 GMO Internet Group, Inc. All Rights Reserved.