2009年2月24日

ヤフオク!

ロードバランサとVIPによるアクセス分散

  • このエントリーをはてなブックマークに追加

オークション事業部の齋藤です。

私は主に出品や入札など、オークションを操作するマシンやオークションの商品詳細ページを表示するマシンの運用を担当しています。

Yahoo!オークションでは日々たくさんのお客様からアクセスをいただいています。アクセスをできるだけ早く処理するためにオークションシステムではさまざまな対策を行っています。われわれ独自の対策も行っていますが、基本的な大量アクセスへの対処は以下の二つになります。

  • マシンのCPUやメモリーなどのハードウエアを増強する
  • マシンの台数を増やす

一つ目の対策を行うとマシン一台あたりの処理能力が上がり、同じマシンの台数でより多くのアクセスを処理できるようになります。

二つ目の対策を行うとマシンの台数が増えるため、システム全体でより多くのアクセスを処理できるようになります。また、一つ目の対策にない利点として

  • アクセスの状態に応じて規模の拡大/縮小が容易
  • マシンの台数が増えるため、マシンにハードウエア障害が起こったときでもサービス全体に影響を与えにくい
などが挙げられます。

実際には両者を組み合わせて利用していますが、コストや耐障害性の面から二つ目のマシンの台数を増やす対処をよく行っています。

二つ目の対策を実現するためには一つのノードに対するアクセスを複数のノードに均等に振り分ける必要があります。DNSラウンドロビンを利用した方法もありますが、今回はロードバランサと仮想アドレス(VIP)を利用した方法を簡単に紹介させていただきます。

ロードバランサとは自身に対するアクセスを複数のノードに振り分けることができる機器です。アクセスの振り分けは各マシンの負荷の状況を判断し、早くレスポンスが返ってくるように行われます。

更にレスポンス速度を高めるためにはロードバランサを経由せずに、ノードから直接リクエストを返す方法があります。ノードから直接レスポンスを返すことをDSR(Direct Server Return)といいます。詳細は割愛しますが、DSR構成時にノードがロードバランサからのリクエストを受け取るためにはノードにVIPを設定する必要があります。しかし、複数のノードに同一のIPアドレスを設定することできないので、ループバックにVIPを設定しています。

他にも、ロードバランサは定期的に各ノードの死活監視をしており、アクセスを処理できないと判断したノードにはアクセスを振り分けません。そのため、マシンに何らかの障害が起こった際にサービス全体が利用できなくなることを防げます。

ロードバランサとVIPによるアクセスの分散方法についてまとめると下図のようになります。

オークション

このようにロードバランサとVIPを利用することで、多くのアクセスを複数のマシンに割り当てることができ、多くのアクセスへの対応が可能になります。また、マシンに障害が起きた場合にも極力お客様のご利用の妨げにならないようなサービスの稼働や運用ができるようになります。

今回は一例を紹介させていただきましたが、Yahoo!オークションはお客様に安定したサービスをご提供できるよう尽力してまいります。これからもYahoo!オークションをよろしくお願いいたします。

Yahoo! JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。

  • このエントリーをはてなブックマークに追加