アンテナサイトのサーバーをさくらVPSにしたので構成を紹介
アンテナサイトのサーバーを更新!
「NEWまとめサイトアンテナ!」を運営しています。
ずっとエックスサーバーでしたが、この度ついにさくらVPSに移行。
既存のサーバー構成に追加して作りました。
簡単に紹介します。
1、アンテナサイトサーバー構成図
※実際にはGSLB以外はローカルネットワークで全て繋がっています
徹底的な可用性と負荷分散。
構成としてはごく普通なパターンです。
どれかがダウンしても問題ないように冗長化。
普通のWEBサイトだと理想的な構成だと思います。
表には書いていないですが、さくらVPSの石狩・東京とリージョンを分けています。
ただ、DBは石狩のみに設定しています。
これはさくらVPSの石狩と東京では性能が倍くらい違うためです。
東京のCPUも良くなったら東京にもDBサーバーを設置します。
--
それぞれ簡単に説明を。
2、GSLB
登録したIPアドレスに振り分け&死活監視。
さくらのクラウドのGSLBを使っています。
3つのサーバーのIPアドレスを登録して、DNSラウンドロビンで振り分け。
サーバーダウンしたらちゃんと除外してくれます。
他にもっと良いロードバランサもあるのですが、
GSLBは月額550円と安いので使っています。
ここがダウンすることはまず無いだろうので、可用性的には強い。
回線負荷も分散されるため、転送量が多いサイトだとかなり有効的。
当アンテナサイトはほぼテキストなので、回線負荷分散としてはほぼ意味が無い。
3、ロードバランサ(NGINX)
SSL終端が主目的。
SSLを処理する負荷が重たいので、ロードバランサ兼SSLアクセラレータとしています。
さくらVPSメモリ1Gプラン3台あれば秒間500は楽に処理できるので安心。
あとは均一にWEB・APサーバーに振り分けるだけ。
4、WEB・APサーバー(NGINX)
PHPや画像等の処理をするサーバーです。
負荷としてはほぼPHP。
アンテナサイトはPHPでの処理が多いので台数を増やしたい。
メモリはそう使わないので、CPUのコア数重視。
さくらVPSのメモリ1Gプランを揃えています。
5、DBサーバー
アンテナサイトにおける最重要サーバー。
とにかくDBへのアクセスが多い。
RSSからの記事の登録、そしてin/outの登録。
毎秒のようにデータが増えていきます。
そのため、ここは豪華にさくらVPSのメモリ8Gプランを2台。
4Gプランでもいけるかな?と思っていましたが、やはりメモリは4G以上普通に使った。
1台で読み書きをしているためCPUの負荷も高い。
6コアくらいないとダメやなとtopコマンドの画面を見て感じました。
DBは共にマスターです。
writeが止まると意味がないので、レプリケーションではダメ。
どちらにも常に書き込んでいます。
そのあたりの分散処理、死活監視等はPHPで自力です。
2台くらいなら簡単。
6、オリジンサーバー
cronを実行するのと、元データを作るサーバー。
ほぼずっとcronでRSSを取得・加工しているので、負荷はけっこう高い。
そのためさくらのメモリ2Gプランを使っています。
WEB・APサーバーのデータを作って同期もしています。
このサーバーがダウンするとアンテナサイトが更新されなくなるので、
WEB・APサーバーも1台だけcronを動かして冗長化しています。
そのため、そのサーバーだけはさくらVPS2Gプランです。
まとめ
日に15000pv程度では過剰な構成
普通にさくらVPSメモリ8Gプラン1台で全部処理できると思う。
冗長化をするとなるとこういった構成になってしまいます。
よほどの障害が無い限りはダウンしない。
そして、いつどーんとアクセスが増えても安心なのは強い。
NEWまとめサイトアンテナ!だけでは過剰ですが、
ここにまたいろいろとサイトを追加すればちょうど良くなるだろう。
--
一番悩んだのはDBの冗長化。
マスター・レプリカは簡単だけど、アンテナサイトにおいては可用性が無い。
マスター・マスターにどうするのがいいか?とずっと悩んでた。
救いなのはデータの整合性・抜けはあまり気にしなくていいこと。
したがって、2つのDBに普通にPDOでinsartする仕組みにしました。
せっかくなのであと10倍くらいアクセスを増やしたい。
これを機に機能も増やしていこう。
※アンテナサイトはプログラミング・サーバーの勉強にはちょうど良いと思う。