帰ってきた大規模Webサービスの裏側

第2回 変化するトラフィック,変化するネットワーク

この記事を読むのに必要な時間:およそ 4 分

はじめに

こんにちは。⁠株)ミクシィの吉野です。私は,システム本部運用部インフラグループ基盤技術チームに所属し,業務のひとつとしてインターネット回線をサービスインフラに提供するといった仕事をしています。インフラグループ内には基盤技術チーム以外にもサーバチームとネットワークチームがあります。彼らがサーバやネットワークなど各レイヤの専門家であるのに対して,基盤技術チームはレイヤにとらわれない幅広い業務を行っています。

サービスのトラフィックは日々変化していきます。一口に「変化」と言っても,リクエスト数やコンテンツサイズなどの量的な変化や,リクエストとレスポンスの比率の変化,誰と通信しているかの通信先の変化といったパラメータがあり,これらが新機能のリリースやユーザの利用環境の進歩によって変化していきます。

その中でも,mixiアプリのような新しい概念のサービスの登場や,スマートフォンの普及といったできごとは,トラフィックを大きく変化させます。そこで今回は,mixiサービスとインターネットをつなぐ上位回線ネットワークにおいて,mixiがこのような変化にどのように対応してきたのか,その変遷を紹介していきます。サービスを止めずにインフラの整備を進める醍醐味やコンテンツサイトの成長過程の一端を感じていただければ幸いです。

上位回線のマルチホーム化

いまさら言うまでもないことかもしれませんが,インターネットは複数のネットワークが相互に接続して成り立っています。それぞれのネットワークはASAutonomous System:自律システム)と呼ばれており,それぞれを識別する番号(AS番号)が付いています。これらの各ASがお互いに知っている経路を教え合うことで,インターネットの通信は成り立っています。この「経路を教え合う」ことを「ピア」と言い,その通信にはBGPBoarder Gateway Protocolというプロトコルが使われています。

普段意識することはないと思いますが,みなさんが普段利用されているISPもすべて,何らかのASに所属しています。同様にmixiのようなコンテンツ事業者も何らかのASに所属しています。このようにASに所属しインターネットに接続するには,シングルホームとマルチホームという2種類の方法があります。

シングルホームとマルチホーム

シングルホームとは,家や会社でISPと契約したり,データセンターからインターネットの接続を購入するような場合で,すでに存在するASにぶら下がる形を言います図1)⁠この場合はIPアドレスをぶら下がったASから借り受けているため,複数のASに所属することはできません。したがって,提供元のASに障害が発生すると,インターネットに接続できなくなります。

図1 シングルホームとマルチホーム

図1 シングルホームとマルチホーム

これに対してマルチホームとは,自身がASとなり,複数のASと相互接続することを言います。ISP事業者やデータセンター事業者そのものは,このような接続形態をとってサービスがほかの特定のASに依存しないようにしています。マルチホームの場合には,接続先のASの1つに障害が発生しても別のASを経由してインターネットへ接続することができます。この場合のIPアドレスは,どのASにも属さない自社所有のIPアドレスとなります。

mixiサービスの上位回線は当初,契約している各データセンター単位でシングルホーム回線を用意していました。しかしこれではデータセンター事業者のネットワークがダウンした場合に,そのデータセンターからインターネットへの出口がなくなり,サービスを継続することが難しくなります。また,各データセンターのトラフィックはサービスやユーザの状況によって変化していきますので,偏りが生じます。たとえば,あるデータセンターの上位回線は60%使用しているのに,別のデータセンターでは20%しか使用していない,といったことが発生し,上位回線を効率良く利用するためだけにサービスを他方のデータセンターに移動するといった煩雑な対応が必要となります。

これを解消するために,mixiでは自社のASとIPアドレスを取得し,2009年3月に上位回線のマルチホーム化を行いました図2)⁠

mixiのマルチホーム構成

マルチホーム化により,いずれかのデータセンター事業者のネットワークがダウンした場合でも,もう片方に自動的に迂回させることができるようになりました。また,各上位回線の利用割合が不均一になった場合でも,BGPでトラフィックの割合を調節できるようになりました。さらに,IPアドレスを自社で所有していますので,上位回線事業者を自由に変更したり増減することができます。ちなみに,AS番号は38651です。

図2 マルチホーム化した直後の構成

図2 マルチホーム化した直後の構成

図2のネットワーク設計を簡単に説明すると,まず,BGPを話せるルータが2台あります。この2台のルータがBGPを使って構成しているネットワークを,上位ASとの境界部分なのでmixiでは「ボーダネットワーク」と呼んでいます。

その2台のルータがそれぞれ,OSPFOpen Shortest Path Firstという内部ネットワーク用の経路制御プロトコルを使って,デフォルトルートを配下のL3スイッチに広報(ブロードキャスト)します。これにより,BGPルータの片方が故障した場合には,もう片方のBGPルータにデフォルトルートが切り替わるようになっています。このOSPFで構成された個所は,内部ネットワークのうち自社所有のグローバルIPで構成されている部分のため,mixiでは「グローバルネットワーク」と呼んでいます。

サーバはグローバルネットワーク配下のサーバファームに接続されており,それぞれのサーバのデフォルトルートはL3スイッチに向いています(このグローバルネットワーク部分にもいくつかの冗長設計がされていますが,今回は上位回線ネットワークの話ですので割愛します)⁠

これを作ったときにはまだ勉強不足で,いくつか不備がありました。たとえば,アクセスコントロールリスト(以下,ACL)に関する問題です。mixiではインターネットからの不正なアクセスを防ぐために,ルータとL3スイッチの間にIP ACLを記述して,不正な通信をブロックしています。

グローバルネットワークでは内部サーバ同士が通信を行う場合がありますが,通常はこれらの通信にIP ACLは適用されないため,問題になることはありません。しかし,何らかの障害やオペレーションミスでOSPFによるトラフィックの迂回が発生した際に,そういった通信がいったんボーダネットワークを迂回してグローバルネットワークに戻ってくるケースが発生し得ることがわかりました。この場合,不正なアクセスを防ぐためのACLが内部サーバ同士の正常な通信にも適用されてしまい,通信できなくなります図3)⁠なお,この問題は該当する通信でサービスに直ちに影響するものがなかったため,その後の構成変更で改善していくこととし,この段階では放置することにしました。

図3 問題が発生する迂回

図3 問題が発生する迂回

著者プロフィール

吉野純平(よしのじゅんぺい )

(株)ミクシィ システム本部 運用部 インフラグループ 基盤技術チーム

コメント

コメントの記入