はじめまして、山賀です。今回はIDCFクラウドの陰の立役者「仮想ルーター」についてお話しさせて頂きます。IDCFクラウドを使いこなす(使い倒す!)にあたっては、「仮想ルーター」の理解が欠かせません。その名の通り、仮想ルーターとは仮想マシンで作られたルーターであり、ネットワーク機能に加え、管理機能も兼ね備えています。あまり意識されない方も多いかもしれませんが、仮想マシンのパスワードをリセットしたり、DNSリゾルバサーバーとして動作するのも仮想ルーターです。
では、先だって簡単にこの記事のサマリをお伝えします。
早速、仮想ルーターの機能からいきましょう。
仮想ルーターの機能
仮想ルーターの最も重要な機能は、パブリックIPアドレスをもち、インターネットとの通信の出口になるゲートウェイ機能です。IDCFクラウドで仮想マシンを起動すると直ぐにインターネットに接続できるのですが、仮想ルーターがデータ転送をしているので通信が可能なのです。
仮想ルーターには一般的なルーターとしての役割が幾つかあるので、まとめてご紹介します。
機能 | 説明 |
---|---|
ポートフォワード | 任意のパブリックIPアドレスについて指定したポート宛ての通信を指定した仮想マシンのポートに転送します。 |
Static NAT | 任意のパブリックIPアドレスについて指定した仮想マシンに1対1で転送(静的NAT)します。 |
ファイアウォール | 任意のパブリックIPアドレスについて指定のポートの通信のみを許可します。※デフォルト全拒否です。 |
DHCP機能 | 仮想マシンのローカルIPアドレスを割り当てます。 |
続きまして、IDCFクラウド内の仮想マシンやサービスを管理するための役割機能です。
機能 | 説明 |
---|---|
パスワードリセット | 仮想マシンの管理者(root/Administrator)パスワードを初期化します。 |
トラフィック集計 | IDCFクラウド管理基盤と連携して課金対象トラフィックを集計します。 |
さらに、IDCFクラウドを便利に利用して頂くための機能がこちらになります。
機能 | 説明 |
---|---|
ロードバランサー | 指定した仮想マシンにトラフィックを分散します。 |
リモートアクセスVPN | お客様のデバイスと仮想ルーターをセキュアにリモート接続します。 |
仮想ルーターの仕組み
ここからは、仮想ルーターそのものや、各種機能について、どのような仕組(動作条件、ソフトウェア等)で動いているのかをご紹介します。内容が盛りだくさんのため、Q&A形式で記載してみたいと思います。
仮想ルーターそのものについて
Q 仮想ルーターのスペックは?
A 2コア、2GBメモリの仮想マシンです。図1のように、ネットワークメニューの仮想ルーター管理タブにて、「マシンタイプ - M2VR」と確認することができます。IDCFクラウドでは2コアの仮想マシンを「M〜」と呼んでいるため、ここでの「M2」は2コア、メモリが2GBということを表しています。
Q 仮想ルーターはいつできるの?
A ゾーンを有効化した時に作成されます。
Q 仮想ルーターはいくつできるの?
A 1ゾーンにつき1組(2台で冗長)つくられます。たとえば、newton, lux, augustaの3ゾーンを有効にしていた場合は、2台×3ゾーン=合計6台の仮想ルーターがつくられます。
Q 仮想ルーターのOSは?
A Debian GNU/Linuxベースです。
Q 仮想ルーターにはどのようなネットワークインターフェースがあるの?
A 三種類のインターフェースがあり、以下のようになっています。
① ローカル(アカウント内ネットワーク)通信用
② IDCF管理用
③ インターネット通信用
Q 仮想ルーターはどうやって冗長化しているの?
A Keepalivedがインストールされており、VRRPというルーター冗長用のプロトコルを用いてVIPで冗長化されています。
Q 仮想ルーターは停止/削除されるの?
A アカウントが削除、もしくはゾーンが無効化されると同時に、仮想ルーターは削除されます。また、ゾーンに仮想マシンが1台もない状態で、一定期間が経過すると停止または削除される可能性があります。ただし、仮想マシン作成時に仮想ルーターは起動/作成されます。仮想ルーターの起動/作成を待ってからの仮想マシン作成になるため、しばらくぶりに仮想マシンを作成すると、時間が掛かってしまうことになります。
Q 仮想ルーターのソースIPアドレスは変わるの?
A 仮想ルーターが停止され、起動されるだけでしたら、ソースIPアドレスは変わりません。一度削除され、再作成されるとソースIPアドレスは変わります。
Q 仮想ルーターと仮想マシンは別のところにあるの?
A 仮想基盤上からは仮想ルーターも仮想マシンの1つとして認識しているため、IDCFクラウドのホストサーバー上に混在しています。ただし、冗長している対の仮想ルーターは必ず別のホストサーバーで起動するようにしています。
Q 仮想ルーターを搭載するホストサーバーが故障したらどうなるの?
A 詳しくは仮想ルーターの切り替わりを参考にしてください。
Q 仮想ルーターのリソース状況は見れますか?
A リソース状況についてはMackerelで見ることができます。ロードバランシング状況については、Statistics Report画面にて見ることができます。Statistics Reportを利用するためには、ファイアウォールで23451番ポートを解放する必要があります。詳しくはこちらのFAQを参考にしてください。
各種機能の実装について
Q どの様にパブリックIPアドレスが付与されているの?
A インターネット通信用のインターフェースに直接設定されています。
Q ポートフォワードはどのように実現しているの?
A 登録された情報をiptablesに設定することで実現しています。
Q Static NATはどのように実現しているの?
A 登録された情報をiptablesに設定することで実現しています。
Q ファイウォールはどのように実現しているの?
A 登録された情報をiptablesに設定することで実現しています。
3つ連続で同じ答えになってしまいましたが、パケットの取り扱いについては、iptablesを利用しています。
Q DHCP機能はどのように実現しているの?
A 登録された情報を元に、dnsmasqというOSSを用いて管理しています。
Q ロードバランサー機能はどのように実現しているの?
A 登録された情報をHAProxyに設定することで実現しています。
Q VPN機能はどのように実現しているの?
A IPsecを用いて実現しています。
仮想ルーターの切り替わり
次の状況の時、仮想ルーターのマスターとバックアップが切り替わります。
- ホストサーバーの障害によりマスター側仮想ルーターがダウンした時
- マスター側仮想ルーターの過負荷やホストサーバーの過負荷によるVRRP応答遅延が発生した時
- メンテナンス等による切替(マスター側仮想ルーターの任意停止)の時
具体的な切り替わりの仕組みとしては、conntrackdというOSSのツールにより、マスター側のセッションがバックアップ側に同期されます。なので、切り替わりが発生しても、マスター側仮想ルーターのコネクションは維持されます。切替発生時は数秒で切り替わるため、体感ではほとんど気が付かないのですが、監視システム等では不応答を検知することがありますのでご注意ください。
なお、一度切替わった仮想ルーターは切り戻しを行っておりません。Mackerelで監視していた場合は、バックアップに切り替わると監視できなくなってしまうので、お手数ですが再度Mackerelエージェントをインストールする必要があります。現在のマスターとバックアップの状況は、図1のようにネットワークメニューの仮想ルーター管理タブにて確認することができます。
▲図1 仮想ルーターの管理画面
仮想ルーターの性能、制限
続きまして仮想ルーターの性能および制限について紹介します。仮想ルーターは、パケットの転送が主な動作となるので、通常、負荷はそれほど上がりません。仮想ルーターが処理できるトラフィックは、仮想マシンのNICの制約上最大2Gbpsとなっています。フロントのWEBサーバーが1台で構成されているようなシステムであれば、突発的なアクセスがあった場合でも、仮想ルーターがダウンするより先に、サーバー側がリソースを使い果たしてしまうので、仮想ルーターがボトルネックになることはあまりないです。
ただし、ロードバランサー機能を利用している場合は条件が異なってきます。多量のバランシング設定や、大量トラフィック流入があった場合に、HAProxyプロセスの過負荷や各種リソース制限によって、思うように性能が出ない場合があります。ロードバランサー機能(HAProxy)における最大同時接続数(Max Connection)は1つのバランシングルールにつき2,000、合計最大10,000となっています。また、HAProxyプロセスは比較的CPU利用量が多いので、仮想ルーターがCPUリソース不足に陥ってしまうことがあります。なので、同時接続数とCPU使用率両方を考慮する必要があります。
ロードバランサー機能はIDCFクラウドの画面よりお手軽に設定できて便利ですが、簡易的なものであるため、管理するシステムの数(バランシングルールの数)が少なく、数台のフロントサーバーに対し分散する場合にお勧めです。一方で、大量のトラフィック流入や多数のアクセスが見込まれる場合は、別の方法でロードバランシングを実現することで、仮想ルーターのロードバランサー機能がボトルネックとなることを回避することができます。例えば、ILBサービスをご利用いただいたり、内部にロードバランシング専用のLVSを構築していただいているお客様がいらっしゃいます。
その他にも、システムの構成変更でも対応可能です。構成については次のセクションでご紹介します。
お勧め構成例
ソーシャルゲーム等の、大量のアクセスを捌く必要のあるサービスや、複数のシステムをまとめて構築されている場合等は、仮想ルーターの性能がボトルネックになってしまうことがあります。そういった仮想ルーターがボトルネックとならないような構成をご紹介して、本稿の結びとしたいと思います。
コネクション数過多パターン
イベントなどのアクセス集中により、ロードバランサー機能で対応可能なコネクション数を上回ってしまった場合、コネクションが張れずにクライアントではタイムアウトが発生してしまいます。このような場合はロードバランサー機能を切り離すことで解消することが可能です。
▲仮想ルーターがネックとなっている構成イメージ
▲お勧めの構成イメージ(ILB利用)
▲お勧めの構成イメージ(LVS構築)
ILBやLVSについては、以下の記事を参考にしてみてください。
ILBを使ってWebサーバーをバランシング!構成事例もご紹介 - IDCF テックブログ
IDCFクラウドでkeepalivedを使ったLVS構築(1) - IDCF テックブログ
IDCFクラウドでkeepalivedを使ったLVS構築(2) - IDCF テックブログ
仮想ルーター高負荷パターン
前述しましたが、複数のサービスを立ち上げられる場合など、ロードバランシング設定が多量だと、仮想ルーターのCPUリソースが足らなくなってしまうことがあります。そういった場合には、アカウントを複数に分けてご利用いただき、プライベートコネクトで接続することで、仮想ルーターを分け、ボトルネックになることを回避することが可能です。
▲仮想ルーターがネックとなっている構成イメージ
▲お勧めの構成イメージ
実際、2サイト程度は問題なく処理できるのですが、イメージとして分かりやすいように載せています。ちなみに、ネットワーク転送量3,240GBの無料枠を2アカウント分使えるのも地味にポイントです!
まとめ
以上、仮想ルーターについて、駆け足でのご紹介となりましたが、いかがでしたでしょうか?仮想ルーターの内部がかなりイメージできたのではないかと思います。なお、補足となりますが、パスワードリセットとトラフィック集計機能は、IDCFクラウド独自の仕組み(shスクリプト等)で動いています。また、稀に質問される名前解決については、IDCFクラウドの標準リゾルバサーバーが指定されております。
仮想ルーターについて、普段は意識することの無いようにできているのですが、IDCFクラウドを使い倒す!となると考慮する部分が出てきます。仮想ルーターでできることやできないことは明確に分かれているため、物足りない時はぜひ先ほど紹介したILBも検討してみてください。
この記事が面白い!と感じたら、豆知識講座第1回のテンプレート編もぜひ読んでみてください。では、皆様、よきIDCFクラウドライフをお楽しみください!