このページでは、Redisの障害によるダウンタイムを避けるためにAsynqをRedis Sentinelを使用するように構成する方法について紹介します。
必須事項
トピックを理解するために、Redis Sentinelのドキュメントをお読みください。
AsynqをRedis Sentinelを使用するように構成する
asynq
のClient
とServer
をRedis Sentinelを使用するように構成するのは非常に簡単です。RedisFailoverClientOpt
を使用して、Redisのマスターノードの名前とRedis Sentinelのアドレスを指定します。
var redis = &asynq.RedisFailoverClientOpt{
MasterName: "mymaster",
SentinelAddrs: []string{"localhost:5000", "localhost:5001", "localhost:5002"},
}
次に、このクライアントオプションをNewClient
およびNewBackground
に渡して、Redis Sentinelを使用するインスタンスを作成します。
client := asynq.NewClient(redis)
// ...
srv := asynq.NewServer(redis, asynq.Config{ Concurrency: 10 })
この構成では、Redisのマスターノードが障害を起こした場合、Sentinelsはフェイルオーバープロセスを開始し、新しいマスターノードをasynq
に通知し、バックグラウンドタスクの処理は通常通り継続します。