任意のポートでバランシング設定をする | Z.com Cloud パブリッククラウド リファレンス

任意のポートでバランシング設定をする

Z.com Cloud のコントロールパネルに表示されていないポートのバランシング設定は、APIにて設定いただけます。
以下手順では、NATロードバランサー配下のサーバーにSSH接続を行うための設定例をご案内します。

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

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

 NATロードバランサーのVIPを追加

コントロールパネルからNATロードバランサーに VIP(グローバルIPアドレス)の追加を行います。
VIPを追加済みの場合は、本項目の[ 4 ]からご確認ください。

[ 1 ] 左メニューより [ネットワーク] をクリックします。

image

[ 2 ] ロードバランサーから [+ ロードバランサー] をクリックします。

image

[ 3 ] [NATロードバランサー] をご選択後、[追加] をクリックします。

image

[ 4 ] 以下のようにロードバランサー設定にVIPが追加されます。後述するAPIの操作手順にて使用しますので、VIPの「UUID」情報をメモしておきます。

image

 ヘルスモニタールールの作成

コントロールパネルからヘルスモニタールールを作成します。
ルールを作成済みの場合は、本項目の[ 5 ]からご確認ください。

[ 1 ] 左メニューより [ネットワーク] をクリックします。

image

[ 2 ] ロードバランサーから [ヘルスモニタールール] を選択の上、[設定] アイコンをクリックします。

image

[ 3 ] [+] をクリックします。

image

[ 4 ] 「プロトコル」は [TCP]、「判定時間(秒)」は [10] をご選択 もしくは ご入力の上、[保存] ボタンをクリックします。

image

[ 5 ] 以下のようにヘルスモニターリストに追加されます。後述するAPIの操作手順にて使用しますので、「UUID」情報をメモしておきます。

image

 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でご確認いただいている内容に差し替えて実行ください。

※ 対象のAPIリファレンスは こちら
ネットワークの
エンドポイント
コントロールパネル内の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でご確認いただいている内容に差し替えて実行ください。

※ 対象の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にてサーバーをご利用いただく場合の一例であり、お客様の運用やポリシーによってその限りではございません。
お客様のご利用用途に応じて必要な設定や操作を行なってください。