ロードバランサーをAPI経由で操作してみよう


mex_icon皆さんこんにちは。技術担当メックスです。
最近毎回僕ですいません。
みんなのヒーローカズさんと、みんなのアイドルあんずちゃんは元気にしていますのでご安心下さい。
今回はロードバランサーのAPI経由での操作に関して記述させて頂きます。

GMOアプリクラウド最大の特徴の一つに、強力なアプライアンス型ロードバランサー(共用)を標準提供している事が挙げられます。(参考GMOアプリクラウド特長
アプライアンス型ロードバランサーでは、ソフトウェアロードバランサーでは実現が難しい高速な負荷分散を行う事が出来ます。
万が一の事態が発生した場合でも、冗長構成で組んでありますので自動フェイルオーバーして通信を維持する仕様になります。

アプライアンス型のロードバランサーは、レイヤー4(参考OSI参照モデル)で機能しているのですが、一部機能をAPI経由で操作する事が可能です。
API経由で出来ない事を大まかに記述しますと、以下の通りです。

・API操作出来ない事
-グローバル側の設定(リクエストを受け付けるグローバルIPとポートの組み合わせ)
-グローバルIP追加・削除(及びロードバランサーとの紐付け)

OpenStackでは、ロードバランサーに設定されているグローバル側の設定(リクエストを受け付けるグローバルIPとポートの組み合わせ)を「POOL」と呼びます。
また、「POOL」に対するバランシング設定(プライベートIPとポート設定の組み合わせ)のことを「MEMBER」と呼びます。

poolmember説明

図解するとこんな感じです。POOLが外側、MEMBERが内側という感覚を分かって頂けるかと思います。

「POOL」の設定及び、グローバルIPの追加・削除はGMOアプリクラウドのコントロールパネル上から行って頂く事が出来ます。
一度「POOL」が出来上がれば、「MEMBER」はAPI経由で登録、削除を行う事が出来るようになります。

それでは、コントロールパネルで登録したPOOLのID情報を確認して、既存のVMに対するバランシング設定を行うまでを、ハンズオン形式で行っていきます。

今回の記述する環境は以下の通りです。尚、本記事の手順は一例であり、動作を保障するものではございませんので、お客様環境におきましては導入前に検証の上ご利用下さい。


仮想サーバータイプ LS-0102
OS CentOS 6.7


・①POOL IDの確認

既にPOOLはコントロールパネル上のネットワーク設定で登録されているものとします。

curl -i -X GET -H "Accept: application/json" -H "X-Auth-Token: トークンID" ネットワークエンドポイントURL/lb/pools

上記通りに操作しますと、現在の環境下で作成されているPOOL情報の一覧が出力されます。
Json形式整形サービス等を利用し、”name”の末尾が設定したポート番号となっていますので、”name”を頼りに目当ての”id”を探して下さい。紛らわしいことに”vip_id”という情報もありますが、こちらではなく”id”なので、注意して下さいね。

トークンID」は、お馴染みの認証方法で発行します。

ネットワークエンドポイントURL」は、コントロールパネルのAPI情報で確認出来ます。

・②POOL に対するMEMBER情報の登録

①で確認した”id”を使用し、MEMBER情報を登録します。

curl -i -X POST -H "X-Auth-Token: トークンID" -H "Content-Type: application/json" -H "Accept: application/json" -d '{"member": {"protocol_port": "プライベート側ポート番号", "address": "プライベートIPアドレス","pool_id": "id","admin_state_up": true}}' ネットワークエンドポイントURL/lb/members

上記通りに操作しますと、VMに対するバランシング設定が完了します。実際に反映されているか不安であれば、コントロールパネルのネットワーク情報にてバランシング設定が完了しているか、ご確認下さい。

それでは解説していきます。

トークンID」は①でも使用しましたので説明不要ですね。

プライベート側ポート番号」は、VM側のポート番号を指定します。
“80”、”443”のように整数で入力します。複数登録するとコンフリクトエラーを起こしますので、一つしか登録できません。
ポート番号20001~22000をお選びの場合はUDP、それ以外のポートを選択した場合はTCPの通信となりますのでご注意下さい。

プライベートIPアドレス」は、バランシング設定したいVMのアドレスを指定します。”10.110.110.12”といった形式です。注意点としては、対象VMのeth0プライベートIPアドレスを指定する必要があります。コントロールパネルで確認出来るプライベートIPアドレスは、eth1のIPアドレスです。eth0のIPアドレスが分からない場合は、バランシング対象VMにログインして、ifconfig等でネットワーク情報の確認をして下さい。第2オクテットの数字が違っている場合が多いです。

id」は①で確認したPOOL_IDです。

ネットワークエンドポイントURL」は、コントロールパネルのAPI情報で確認出来ます。

以上となります。GMOアプリクラウドはOpenStack準拠のAPIを提供しておりますが、ロードバランサーの部分だけ特殊な仕様となっておりますので、今回記述させて頂きました。フロントのサーバーを自動的に追加し、バランシングをする際等に是非ご活用下さい。

カテゴリー: GMOアプリクラウド サービス・機能   タグ:   この投稿のパーマリンク

コメントは受け付けていません。