#fedibird の構成をざっくり。
まず、ユーザー側(インターネット側)からは、本体のHAProxy鯖とメディアのCloudflareがあります。たまにHAProxyの前にCloudflareを挟んでテストすることもありますが、普段は本体には通していません。
メディアの方は、Cloudflareの内側に、Lightsailにnginxを置いて、S3へのアクセスをキャッシュしています。キャッシュが有利なことはもとより、Lightsailの価格に転送量が含まれているため、S3に直接アクセスさせるより費用の節約になるためです。
本体側のHAProxyはロードバランサーです。2台のVPSのnginxへアクセスを振り分けています。片方がダウンしている時は、そちらにはアクセスが振り分けられないようにして、ダウンタイムを少なくすることに貢献しています。
各VPSの構成は図の通りで、sidekiqは3系統に、外部鯖のredisへのアクセスはmainとcacheに分け、PostgreSQLへのアクセスはpgbouncerを経由。メディアはS3に直接保存します。
https://fedibird.com/@noellabo/104635641745772363
の続き。 #fedibird
PostgreSQLはメインのサーバとレプリカのサーバに分け、同期レプリケーションを行っています。読み出しだけで良いアクセスはレプリカの方にアクセスすることで負荷分散を行う構成です。
Redisは、スタンバイに同期しており、ダウン時は手動で差し替えられるようにしてあります。
PostgreSQLは、一日一回フルバックアップをwasabiに、1分に一度WALをwasabiに保存しており、7日ほど保存してあります。概ね任意の時点に復元できます。
VPSは全部で6台。
メインの2台はVultr4CPU/16GBとさくらのVPS 6CPU/8GB、Lightsailは最小限の$5、HAProxyとDB鯖2台は2CPU/4GB。
DB鯖とRedis鯖は同居で、他のサーバも余剰リソースを他のサービスと共用して運用しています。