web-dev-qa-db-ja.com

Resque&RedisのHA

ResqueとRedisのSPOFを回避しようとしています。最終的に、クライアントはPHP via( https://github.com/chrisboulton/php-resque )になります。)を実行して実行可能なHAを見つけた後nginx + php-fpmとMySQL( 単純にマスタースレーブプロモーションを行う方法としてのmysqlマスターマスターセットアップ )、次はResque + Redisです。

Resqueの標準インストールでは、ローカルホストRedis(DigitalOcean)を使用します。これを解決するために、Amazon Route 53DNSフェイルオーバーに大きく依存しています。

resque1.domain.comはローカルホストredis(redis1.domain.com)を指します=>同じサーバーresque2.domain.comはローカルホストredis(redis2.domain.com)を指します=>同じサーバー

Resque.domain.comを、FAILOVER resque1をプライマリとして、resque2をセカンダリとして実行します。これが意味することは、ほとんどの場合(99%)、resque1は単なるホットバックアップとしてresque2でヒットするはずです。

これにより、2台のサーバーを取得するだけで、resque.domain.comへのヒットがどこかに確実に届くようになります。


これを行うもう1つの方法は、resqueとredisを4つのサーバーに分割し、次のように実行することです。

resque1.domain.com-> redis.domain.com resque2.domain.com-> redis.domain.com redis1.domain.com redis2.domain.com

次に、DNSフェイルオーバーを設定します

resque.domain.com->プライマリ:resque1およびセカンダリ:resque2 redis.domain.com->プライマリ:redis1およびセカンダリ:redis2

可能であれば2台のサーバーを使用したいのですが、この2番目のセットアップははるかに優れているか無視できるのでしょうか。

ありがとう、クリス

1
Chris Go

Redisサーバーが1つある場合でも、それはSPOFです。定期的なRedisバックアップの実行と復元手順のテストに加えて、プロビジョニングと展開を自動化することで、そのSPOFのリスクを軽減できます。そのルートでは、24時間体制で障害を監視するか、プロビジョニングを自動的にディスパッチする必要があります。

2台のサーバーは、正常に機能するホットフェイルオーバーを提供します。これは、はるかに優れた災害計画シナリオです。

DNSフェイルオーバーについてはよく知りませんが、機能的にはロードバランサーのVIPや仮想インターフェイスと似ています。このフェイルオーバーのモデルは、構成が簡単で、テストが簡単で、非常に信頼性があります。

1
parhamr