個人利用から大規模開発までConoHaで始めるクラウド開発入門

第2回海外リージョン、ロードバランサ、GeoDNSを使う

前回は新しくなったConoHaの機能やコンセプトなどを紹介しました。ConoHaには仮想サーバであるVPSを中心に、さまざまな付加機能が用意されており、今回はそれらの中から3つをピックアップして解説します。

海外リージョンを使う

海外リージョンの提供は、新しいConoHaの大きな特徴の1つです。日本のほかに、シンガポールとアメリカ(サンノゼ)でサーバを立ち上げることができます。これによりネットワークの遅延を少なくし、エンドユーザに質の高いサービスを提供することが可能になります。

今回はアメリカリージョンにVPSを構築し、pingでRTTRound Trip Timeを見てみましょう。pingの場合、相手のホストにICMP echorequestを送信してICMP echo replyが返ってくるまでにかかった時間がRTTです。これが短いほどネットワークの遅延が少ないことになります。アメリカリージョンにVPSを構築するには、VPS作成画面の「リージョン」という項目で「アメリカ」を選択します図1⁠。

図1 VPS追加画面(リージョン選択)
図1 VPS追加画面(リージョン選択)

VPSを作成したらSSHでログインしましょう。試しにwww.conoha.jpにpingを送ってみます図2⁠。現在、www.conoha.jpは日本にあるサーバ上でホストされているため、これはアメリカにあるVPSから日本のサーバにpingを送っていることになります。経験上、日本、アメリカ間でpingを送ると100から数百ミリ秒くらいのRTTになります。今回は112ミリ秒でした。次にアメリカ国内のサイトの例としてwww.washingtonpost.comにpingを送ってみましょう。1.8ミリ秒程度で非常に遅延が少ないこがわかります図3⁠。

図2 www.conoha.jpにpingを送信
# ping -n -c 3 www.conoha.jp
PING www.conoha.jp (157.7.108.44) 56(84) bytes of data.
64 bytes from 157.7.108.44: icmp_seq=1 ttl=51 time=112 ms
64 bytes from 157.7.108.44: icmp_seq=2 ttl=51 time=112 ms
64 bytes from 157.7.108.44: icmp_seq=3 ttl=51 time=112 ms

--- www.conoha.jp ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 112.228/112.474/112.921/0.499 ms
図3 www.washingtonpost.comにpingを送信
# ping -n -c 3 www.washingtonpost.com
PING ins-019.inscname.net (192.33.31.56) 56(84) bytes of data.
64 bytes from 192.33.31.56: icmp_seq=1 ttl=58 time=1.72 ms
64 bytes from 192.33.31.56: icmp_seq=2 ttl=58 time=1.86 ms
64 bytes from 192.33.31.56: icmp_seq=3 ttl=58 time=1.84 ms

--- ins-019.inscname.net ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 1.723/1.813/1.868/0.064 ms

ロードバランサを使って負荷分散をする

ロードバランサを使うと、複数台のVPSやアプリケーションサーバにトラフィックを分散できます。またバランシングやヘルスチェック(配下のサーバに対する死活監視方法)もユーザ側で設定できるので、サービスに応じた細かな設定が可能です。ここでは複数台のWebサーバにトラフィックを分散するという想定で、ロードバランサの設定をしてみます。図4はWebサーバが2台の場合の構成例です(矢印はのちほど説明するトラフィックの流れです⁠⁠。

図4 DSR方式の概要
図4 DSR方式の概要

なお以降の手順を試す場合、ロードバランサと同じリージョンで、VPSを使ってWebサーバを数台構築しておいてください。Webサーバの構築方法は省略しますが、yumやaptなどでApacheもしくはnginxをインストールしておけば十分です。

ロードバランサとヘルスモニタを追加する

ロードバランサの項目を表示するには、コントロールパネルの左メニューから「ネットワーク」を選びます。ここで「追加」をクリックしてロードバランサを追加します図5⁠。

図5 ロードバランサの追加
図5 ロードバランサの追加

ロードバランサにはヘルスモニタも必要になります。ヘルスモニタとは、ロードバランサ配下のサーバに対してどのような死活監視を行うかを決めるものです。ヘルスモニタは、配下のサーバに対して一定間隔で通信を行います。チェックに失敗した場合、そのサーバをバランシング対象から外します。

追加については「ネットワーク」の画面でヘルスモニタリストを表示し、左側の「+」をクリックします。今回はHTTPトラフィックを扱うので、ヘルスモニタのプロトコルには「HTTP」を選択しましょう。判定時間とパスはデフォルト値のままでかまいません(図6⁠⁠。

図6 ヘルスモニタの追加
図6 ヘルスモニタの追加

作成できたら、ロードバランサのIPアドレス部分をクリックしてみましょう。詳細が表示されます。⁠バーチャルIPアドレス」が実際にクライアントが接続するIPアドレスです。ロードバランサは、このIPアドレスへのアクセスを配下のサーバにバランシングします。

バランシングの設定を行う

次にバランシングの設定を行います。この手順で、ロードバランサ配下にサーバを追加し、トラフィックの分散方法を決めます。バランシングはTCPポートごとに設定します。今回はHTTPなので「バランシング元ポート」の80をクリックします。その後、右側にある変更アイコンをクリックしてください図7⁠。

図7 ロードバランサの設定
図7 ロードバランサの設定

「バランシング方法」はラウンドロビンかリーストコネクトが選択できます。前者は均等にトラフィックを分散し、後者は最も接続数の少ないサーバにトラフィックを分散します。サービスの特性に合わせて選んでください。⁠ヘルスモニタ」には先ほど作成した「HTTP」を選択します。⁠バランシング先IPアドレス」のプルダウンメニューでは、トラフィックを振り分けるVPSを選択します。それぞれ選択して「保存」をクリックすると設定は完了です。

Webサーバにネットワークの設定を行う

最後にWebサーバに少し設定を追加する必要があります。ConoHaのロードバランサはDSRDirect Server Return方式を採用しています。これはロードバランサ経由でWebサーバまで届いたクライアントからのトラフィックを、Webサーバがクライアントに直接返す方式です。トラフィックの流れは図4を確認してください。DSR方式の場合、ロードバランサからWebサーバに送られてくるパケットは、ロードバランサのIPアドレス(VIP)になります。Webサーバはこのパケットを受け取って処理できなければなりません。Linuxの場合、NICにVIPのループバックを設定しますが、ここではiptablesやfirewalldを使用した例を紹介しますリスト1、2⁠。

リスト1 iptablesで設定する
iptables -t nat -A PREROUTING -d [ロードバランサーのVIPアドレス] -j
REDIRECT
リスト2 firewalldで設定する
# httpサービスをfirewalldに追加
firewall-cmd --add-service httpd
# eth0にロードバランサのIPアドレスをエイリアスとして追加
nmcli c mod eth0 +ipv4.addresses "[ロードバランサのVIPアドレス]/32"
# ネットワークインターフェースをリスタートして設定を反映
nmcli c down eth0; nmcli c up eth0

以上で設定はすべて完了しました。ブラウザなどからhttp://[ロードバランサのVIPアドレス]にアクセスしてみましょう。またWebサーバのログなどを確認すると、ロードバランサがトラフィックを分散させる様子が確認できます。

GeoDNS

ConoHaには無料で使えるDNSサービスが用意されています。GeoDNSはDNSサービスのオプションとして使える機能で、接続元のIPアドレスに応じてネットワーク的に最も近いリージョンのAレコードを返す機能です。ConoHa以外のサーバに対しても設定可能で、すでに日本でサービスを展開している場合であっても、日本はそのままで海外サーバだけConoHaを使うといった利用もできます。GeoDNSは単純にAレコードを返すだけでなく重み付けとヘルスチェックの機能があり、どこかのリージョンに障害が発生しても、ほかのリージョンが応答することが可能です。

ではGeoDNSを試してみましょう。コントロールパネルの左メニューから「DNS」を選択し、⁠追加」をクリックしてお手持ちのドメインを追加してください。追加したドメインをクリックすると、詳細が表示されます図8⁠。

図8 DNSの設定
図8 DNSの設定

まずは、GeoDNSオプションを「有効」に変更しましょう。これでGeoDNSが使えるようになります。そして、右上の変更アイコンをクリックしてDNSレコードを追加していきます。GeoDNSは通常のDNS Aレコードと同じように設定しますが、⁠ヘルスチェックポート」「リージョン」といった固有の設定があります。それぞれヘルスチェックに使うTCPポート番号と、そのサーバが存在するリージョンを指定してください。サーバがConoHaの場合は自動でリージョンを認識しますが、ほかの事業者のサーバの場合はユーザが手動でリージョンを指定する必要があります。これを繰り返して、東京、アメリカ、シンガポールそれぞれのGeo DNSレコードを追加しましょう。典型的な設定例は図9のようになります。

図9 典型的なGeoDNS例
図9 典型的なGeoDNS例

以上で設定は終わりです。確認のため各国からpingを送ってくれる便利なサービスを利用してみましょう。今回はhttp://www.super-ping.com/を利用しました。図10のように、地域ごとに最も近いリージョンのIPアドレスが返ることがわかります。

図10 super-ping.comによる確認
図10 super-ping.comによる確認

まとめ

第2回ということで、実際にConoHaの新機能を使ってみました。海外リージョンはさまざまな地域のユーザにサービスを展開する際にネットワーク遅延を最小化できます。ロードバランサはVPSの柔軟性を活かし、負荷分散を実現して可用性の高いシステムを設計できるでしょう。GeoDNSは海外リージョンをより効果的に活用できます。皆さんもConoHaの新機能をぜひ試してみてください。

おすすめ記事

記事・ニュース一覧