12
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IBM Cloud Load Balancerを使ってみた

Last updated at Posted at 2018-04-14

#はじめに

IBM Cloud Load Balancerを使ってみました。

IBM Cloud Load Balancerは、従量課金のL4ロードバランサーです。
情報はこちらにあります。
https://console.bluemix.net/docs/infrastructure/loadbalancer-service/about.html

#ウェブサーバーを2台準備
事前に、割り振り先となるサーバーを作って、ウェブサーバーを起動しておきます。(今回は別の検証にも使うために、Public IP付きのサーバーで作っていますが、IBM Cloud Load Balancerの割り振り先はPrivate IPになるため、Private IPのみのサーバーであっても、問題なく利用できます。IBM Cloud Docsでは、明確な理由がない場合、バックエンドのサーバーはPrivate IPのみで作ることがセキュリティの観点から推奨されています。)

image.png

分かりやすさのため、単純に1号機か2号機かを示すindex.htmlを配置しました。

1号機.
# cat index.html 
server1
# 
2号機.
# cat index.html 
server2
# 

#IBM Cloud Load Balancerのオーダー
カタログの「ネットワーク」から、ロードバランサーを選択します。

image.png

IBM Cloud Load Blancerを選択し、「作成」を押下します。
image.png

価格は、時間当たりの基本料金プラス、扱ったデータ量に対する従量課金です。
Publicタイプには、アウトバウンド費用が別途かかります。

image.png

ロードバランサーのタイプとして、PublicかInternalを選択します。Publicタイプは、VIPがPublic IPアドレスとなります。(インターネットからのリクエストを受け付け、背後のPrivateネットワーク上のサーバーに割り振ります。)
Internalタイプは、VIPもPrivate IPとなります。

まずはPublicタイプのロードバランサーを作成してみます。下記の構成イメージです。

image.png

ロードバランサー自身も、Public IPとPrivate IPを持ちます。Private IPは、ユーザーが持っているPrivate サブネットから払い出されます。Public IPは、IBM CloudがプールしているPublic IPを使うか、ユーザーが持っているPublicサブネットから払い出すかを選びます。

冗長性のため、1つのオーダーにつき標準で2台のロードバランサーが作成され、それぞれがPublic IPとPrivate IPを1つずつ持つ構成となります。今回は、VIPを、自分が持っているPublicサブネットから払い出すよう選択しました。

image.png

ロードバランサーの名前と使用するプロトコルを指定します。

image.png

HTTPSを指定し、SSL証明書をインポートして、ロードバランサーで複号することも可能です。
image.png

ヘルスチェックの間隔や、死活判定のルールを指定します。
image.png

割り振り先となるサーバーを選択します。ロードバランサーと同じデータセンターにある、Primary IPを持つサーバーを、振り分け先として指定できます。
image.png

なお、2018年4月の時点では、ポータル画面から選べるのはPrimary IPを持ったサーバーのみです。
VMware上の仮想マシンのように、Portable IPを持つサーバーを割り振り先に設定するには、APIを使用して設定を行います。
https://console.bluemix.net/docs/infrastructure/loadbalancer-service/faqs.html#faq

ロード・バランサーをサービスとして VMWare で使用できますか。

SoftLayer ポータブル・プライベート・アドレスを割り当てられた VMware 仮想マシンは、ロード・バランサーにバックエンド・サーバーとして指定できます。この機能は現在、API を介してのみ使用でき、Web UI (GUI) では使用できません。API を介して追加されたポータブル・プライベート IP は、SoftLayer によって割り当てられていないため、GUI には「Unknown」と表示されます。この種の構成は、Xen や KVM などの他のハイパーバイザーでも使用できることに注意してください。

VMware NSX ネットワークなどで、SoftLayer 以外のアドレスが割り当てられた VMware 仮想マシンは、ロード・バランサーにバックエンド・サーバーとして直接追加することはできません。ただし、構成によっては、ロード・バランサーのバックエンド・サーバーとして SoftLayer プライベート・アドレスを持つ、NSX ゲートウェイなどの中継を構成できます (VMware NSX が管理するネットワークに接続されている VM である実在のサーバーを使用します)。

image.png

オーダーを確定します。

image.png

#オーダーしたロードバランサーを確認する

数分でロードバランサーの作成が完了し、Onlineになります。

image.png

ロードバランサーにはFQDNが1つ割り当てられており、ロードバランサー自身が持つIPアドレスに紐づいています。負荷によってロードバランサー自身の台数が自動で増減するため(負荷が低くても、冗長性の観点から、1台になることはありません)、ロードバランサーの実IPは変化する可能性があります。そのため、利用者はFQDNを指定してアクセスする形になります。

image.png

nslookupで確認すると、標準で2台作成されており、ロードバランサー自身が冗長構成になっていることが分かります。

$ nslookup LB01-xxxxx-tok02.lb.bluemix.net
Server:		x.x.x.x
Address:	x.x.x.x#53

Non-authoritative answer:
Name:	LB01-xxxxx-tok02.lb.bluemix.net
Address: 169.xx.xx.57
Name:	LB01-xxxxx-tok02.lb.bluemix.net
Address: 169.xx.xx.50

$

-----------2019/4/9追記 start-------------
前提条件を満たしたアカウントでは、ロードバランサー自身が複数ゾーン(例:TOK02とTOK04)に分散配置されるようになり、一層、可用性高く使えるようになりました!

https://cloud.ibm.com/docs/infrastructure/loadbalancer-service?topic=loadbalancer-service-multi-zone-region-mzr-overview#multi-zone-region-mzr-overview
-----------2019/4/9追記 end-------------

ユーザーのPublicサブネットから2つ、ロードバランサー用にIPアドレスが払い出されているのが分かります。

image.png

プライベート側サブネットからも2つ、ロードバランサーにIPアドレスが払い出されています。

image.png

バックエンドのウェブサーバーには、このプライベートIPからハートビートが来ています。

10.132.222.86 - - [12/Apr/2018:20:54:03 -0500] "GET / HTTP/1.0" 200 8 "-" "-"
10.132.222.89 - - [12/Apr/2018:20:54:06 -0500] "GET / HTTP/1.0" 200 8 "-" "-"
10.132.222.86 - - [12/Apr/2018:20:54:08 -0500] "GET / HTTP/1.0" 200 8 "-" "-"
10.132.222.89 - - [12/Apr/2018:20:54:11 -0500] "GET / HTTP/1.0" 200 8 "-" "-"
10.132.222.86 - - [12/Apr/2018:20:54:13 -0500] "GET / HTTP/1.0" 200 8 "-" "-"
10.132.222.89 - - [12/Apr/2018:20:54:16 -0500] "GET / HTTP/1.0" 200 8 "-" "-"
10.132.222.86 - - [12/Apr/2018:20:54:18 -0500] "GET / HTTP/1.0" 200 8 "-" "-"
10.132.222.89 - - [12/Apr/2018:20:54:21 -0500] "GET / HTTP/1.0" 200 8 "-" "-"
10.132.222.86 - - [12/Apr/2018:20:54:23 -0500] "GET / HTTP/1.0" 200 8 "-" "-"
10.132.222.89 - - [12/Apr/2018:20:54:26 -0500] "GET / HTTP/1.0" 200 8 "-" "-"
10.132.222.86 - - [12/Apr/2018:20:54:28 -0500] "GET / HTTP/1.0" 200 8 "-" "-"
10.132.222.89 - - [12/Apr/2018:20:54:31 -0500] "GET / HTTP/1.0" 200 8 "-" "-"

また、ダッシュボードから、最大で過去2週間分のスループットや接続数を確認可能です。

image.png

#ブラウザから動作確認
ブラウザから、ロードバランサーに割り振られたFQDNにアクセスすると、配下のウェブサーバーに配置したコンテンツが閲覧できます。今回は単純なラウンドロビンにしたのでブラウザをリロードする度に2台のコンテンツが順番に表示されています。実際に業務で使う場合は、ユーザーが使うドメイン名のCNAMEとして、ロードバランサーのFQDNを登録する形になるでしょう。

image.png

image.png

ウェブサーバーの標準的なアクセスログに残る送信元IPアドレスは、エンドユーザーのIPアドレスでなく、ロードバランサーのPrivate IPとなるため、下記と同様、ログにX-Forwarded-Forの情報を出力しておくのが良いと思います。
https://qiita.com/testnin2/items/037e1337a1d9b5f13231

#Privateタイプ

Privateタイプは、ロードバランサーのVIPがPrivate IPになります。
こちらのタイプを使うことで、Public側インターフェースを持たないシステムに専用線やIPSec VPN経由でアクセスする場合にも、IBM Cloud Load Balancerを利用することができます。

下図のような3層構造のシステムにも適用できます。

image.png

Internalタイプの場合も、ユーザーはFQDNを指定してブラウザからアクセスします。下記のようなDNSレコードが作成され、インターネット上でも名前解決できる状態になります。

$ nslookup LB02-xxxxx-tok02.lb.bluemix.net
Server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53

Non-authoritative answer:
Name: LB02-xxxxx-tok02.lb.bluemix.net
Address: 10.132.222.102
Name: LB02-xxxxx-tok02.lb.bluemix.net
Address: 10.132.222.97

$

#終わりに
以上、IBM Cloud Load Balancerを試してみました。
時間単位の基本料金と、扱ったデータ量の従量課金で使えるので、スモールスタートで使え、標準で冗長化もされており、高負荷時にはロードバランサーの台数が自動的に増えてスケールアウトしてくれます。

これまでのNetScaler VPXや月額のロードバランサーにこの選択肢が加わることで、より柔軟なシステム構成が可能になったと思います。

12
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?