このページでは、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に通知し、バックグラウンドタスクの処理は通常通り継続します。