このページでは、Redisの障害によるダウンタイムを避けるためにAsynqをRedis Sentinelを使用するように構成する方法について紹介します。

必須事項

トピックを理解するために、Redis Sentinelのドキュメントをお読みください。

AsynqをRedis Sentinelを使用するように構成する

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