トップ «前の日記(2005-05-12) 最新 次の日記(2005-05-20)» 編集

人徳ゼロ日記


2005-05-18

_ Wikipediaの仕組み

Wikipediaを運営しているWikimedia Foundationのことが書いてあるWikimedia Meta-WikiWikipediaのシステム構成が載っています(日本語版はちょっと古いみたいです)。

  • フロントにSquidのリバースプロキシがあり、編集済みのページはPHPにたどり着く前に返しています。9台のSquidはDNSラウンドロビンで冗長化しているようです。
  • SquidとApacheの間にPerlbalがリバースプロキシとして動作していて、Apacheの負荷分散をしています。Perlで書いてあるのですが、TCPコネクションの扱いにepoll()を使ってスケーラブルにしているとか。Perlbalは2台あるのですが、どうやって冗長化しているのだろう?。Linux Virtual ServerではなくPerlbalを使うのはどのような意図があるのか良く分かりません。
  • MediaWikiが動くApacheサーバは40台くらいと数で稼いでます。
  • データベースはMySQLがマスターが1台、レプリケーションで4台がスレーブになってます。MySQLはよく知らないけど、レプリケーションは何でやっているのだろう?
  • memcachedでデータベースの内容をApacheサーバ間の分散共有メモリでキャッシュしているそうです。ただ、相手がMySQLだとmemcachedとどちらが速いのかどうか微妙な気もします。JBoss TreeCacheはトランザクションをサポートしてますが、memcachedにはサポートしていると書いていないので、用途は限られますね。

色々工夫してますね。安い設備で出来る限り性能が出るように考慮しているのが分かります。perlbalは負荷分散というよりは、外向けコネクションの維持(Keepalive)をしつつ内向けにコネクションを絞る用途に使えそうなので、ちょっと試してみたいです。