diff --git a/internal/job/job.go b/internal/job/job.go index 814260c08..9cbb9369e 100644 --- a/internal/job/job.go +++ b/internal/job/job.go @@ -35,11 +35,12 @@ import ( ) type Config struct { - Addrs []string - Username string - Password string - BrokerDB int - BackendDB int + Addrs []string + MasterName string + Username string + Password string + BrokerDB int + BackendDB int } type Job struct { @@ -53,19 +54,21 @@ func New(cfg *Config, queue Queue) (*Job, error) { machineryv1log.Set(&MachineryLogger{}) if err := ping(&redis.UniversalOptions{ - Addrs: cfg.Addrs, - Username: cfg.Username, - Password: cfg.Password, - DB: cfg.BrokerDB, + Addrs: cfg.Addrs, + MasterName: cfg.MasterName, + Username: cfg.Username, + Password: cfg.Password, + DB: cfg.BrokerDB, }); err != nil { return nil, err } if err := ping(&redis.UniversalOptions{ - Addrs: cfg.Addrs, - Username: cfg.Username, - Password: cfg.Password, - DB: cfg.BackendDB, + Addrs: cfg.Addrs, + MasterName: cfg.MasterName, + Username: cfg.Username, + Password: cfg.Password, + DB: cfg.BackendDB, }); err != nil { return nil, err } @@ -76,6 +79,7 @@ func New(cfg *Config, queue Queue) (*Job, error) { ResultBackend: fmt.Sprintf("redis://%s:%s@%s/%d", cfg.Username, cfg.Password, strings.Join(cfg.Addrs, ","), cfg.BackendDB), ResultsExpireIn: DefaultResultsExpireIn, Redis: &machineryv1config.RedisConfig{ + MasterName: cfg.MasterName, MaxIdle: DefaultRedisMaxIdle, IdleTimeout: DefaultRedisIdleTimeout, ReadTimeout: DefaultRedisReadTimeout, diff --git a/manager/config/config.go b/manager/config/config.go index 69d5df505..63e7900a6 100644 --- a/manager/config/config.go +++ b/manager/config/config.go @@ -167,22 +167,25 @@ type RedisConfig struct { // DEPRECATED: Please use the `addrs` field instead. Port int `yaml:"port" mapstructure:"port"` - // Server addresses. + // Addrs is server addresses. Addrs []string `yaml:"addrs" mapstructure:"addrs"` - // Server username. + // MasterName is the sentinel master name. + MasterName string `yaml:"masterName" mapstructure:"masterName"` + + // Username is server username. Username string `yaml:"username" mapstructure:"username"` - // Server password. + // Password is server password. Password string `yaml:"password" mapstructure:"password"` - // Server cache DB name. + // DB is server cache DB name. DB int `yaml:"db" mapstructure:"db"` - // Server broker DB name. + // BrokerDB is server broker DB name. BrokerDB int `yaml:"brokerDB" mapstructure:"brokerDB"` - // Server backend DB name. + // BackendDB is server backend DB name. BackendDB int `yaml:"backendDB" mapstructure:"backendDB"` } diff --git a/manager/config/config_test.go b/manager/config/config_test.go index 001116e96..b9325ccbe 100644 --- a/manager/config/config_test.go +++ b/manager/config/config_test.go @@ -77,13 +77,14 @@ func TestManagerConfig_Load(t *testing.T) { Migrate: true, }, Redis: RedisConfig{ - Host: "bar", - Password: "bar", - Addrs: []string{"foo", "bar"}, - Port: 6379, - DB: 0, - BrokerDB: 1, - BackendDB: 2, + Host: "bar", + Password: "bar", + Addrs: []string{"foo", "bar"}, + MasterName: "baz", + Port: 6379, + DB: 0, + BrokerDB: 1, + BackendDB: 2, }, }, Cache: CacheConfig{ diff --git a/manager/config/testdata/manager.yaml b/manager/config/testdata/manager.yaml index ce7875287..fe0de1cc6 100644 --- a/manager/config/testdata/manager.yaml +++ b/manager/config/testdata/manager.yaml @@ -39,6 +39,7 @@ database: migrate: true redis: addrs: [foo, bar] + masterName: "baz" password: bar host: bar port: 6379 diff --git a/manager/database/redis.go b/manager/database/redis.go index 10bb7a360..5615cd764 100644 --- a/manager/database/redis.go +++ b/manager/database/redis.go @@ -27,10 +27,11 @@ import ( func NewRedis(cfg *config.RedisConfig) (redis.UniversalClient, error) { redis.SetLogger(&redisLogger{}) client := redis.NewUniversalClient(&redis.UniversalOptions{ - Addrs: cfg.Addrs, - DB: cfg.DB, - Username: cfg.Username, - Password: cfg.Password, + Addrs: cfg.Addrs, + MasterName: cfg.MasterName, + DB: cfg.DB, + Username: cfg.Username, + Password: cfg.Password, }) if err := client.Ping(context.Background()).Err(); err != nil { diff --git a/manager/job/job.go b/manager/job/job.go index 6da89bc7a..13cdffbb0 100644 --- a/manager/job/job.go +++ b/manager/job/job.go @@ -28,11 +28,12 @@ type Job struct { func New(cfg *config.Config) (*Job, error) { j, err := internaljob.New(&internaljob.Config{ - Addrs: cfg.Database.Redis.Addrs, - Username: cfg.Database.Redis.Username, - Password: cfg.Database.Redis.Password, - BrokerDB: cfg.Database.Redis.BrokerDB, - BackendDB: cfg.Database.Redis.BackendDB, + Addrs: cfg.Database.Redis.Addrs, + MasterName: cfg.Database.Redis.MasterName, + Username: cfg.Database.Redis.Username, + Password: cfg.Database.Redis.Password, + BrokerDB: cfg.Database.Redis.BrokerDB, + BackendDB: cfg.Database.Redis.BackendDB, }, internaljob.GlobalQueue) if err != nil { return nil, err diff --git a/scheduler/config/config.go b/scheduler/config/config.go index a76b7275e..354c4c4a8 100644 --- a/scheduler/config/config.go +++ b/scheduler/config/config.go @@ -235,19 +235,22 @@ type RedisConfig struct { // DEPRECATED: Please use the `addrs` field instead. Port int `yaml:"port" mapstructure:"port"` - // Server addresses. + // Addrs is server addresses. Addrs []string `yaml:"addrs" mapstructure:"addrs"` - // Server username. + // MasterName is the sentinel master name. + MasterName string `yaml:"masterName" mapstructure:"masterName"` + + // Username is server username. Username string `yaml:"username" mapstructure:"username"` - // Server password. + // Password is server password. Password string `yaml:"password" mapstructure:"password"` - // Broker database name. + // BrokerDB is broker database name. BrokerDB int `yaml:"brokerDB" mapstructure:"brokerDB"` - // Backend database name. + // BackendDB is backend database name. BackendDB int `yaml:"backendDB" mapstructure:"backendDB"` } diff --git a/scheduler/config/config_test.go b/scheduler/config/config_test.go index 822d39e0b..d8eb19d02 100644 --- a/scheduler/config/config_test.go +++ b/scheduler/config/config_test.go @@ -85,12 +85,13 @@ func TestConfig_Load(t *testing.T) { SchedulerWorkerNum: 1, LocalWorkerNum: 5, Redis: RedisConfig{ - Addrs: []string{"foo", "bar"}, - Host: "127.0.0.1", - Port: 6379, - Password: "foo", - BrokerDB: 1, - BackendDB: 2, + Addrs: []string{"foo", "bar"}, + MasterName: "baz", + Host: "127.0.0.1", + Port: 6379, + Password: "foo", + BrokerDB: 1, + BackendDB: 2, }, }, Storage: StorageConfig{ diff --git a/scheduler/config/testdata/scheduler.yaml b/scheduler/config/testdata/scheduler.yaml index c120266bd..1494d9bf4 100644 --- a/scheduler/config/testdata/scheduler.yaml +++ b/scheduler/config/testdata/scheduler.yaml @@ -51,6 +51,7 @@ job: localWorkerNum: 5 redis: addrs: ["foo", "bar"] + masterName: "baz" host: 127.0.0.1 port: 6379 password: foo diff --git a/scheduler/job/job.go b/scheduler/job/job.go index 2c61f023d..9478a9413 100644 --- a/scheduler/job/job.go +++ b/scheduler/job/job.go @@ -57,11 +57,12 @@ type job struct { func New(cfg *config.Config, resource resource.Resource) (Job, error) { redisConfig := &internaljob.Config{ - Addrs: cfg.Job.Redis.Addrs, - Username: cfg.Job.Redis.Username, - Password: cfg.Job.Redis.Password, - BrokerDB: cfg.Job.Redis.BrokerDB, - BackendDB: cfg.Job.Redis.BackendDB, + Addrs: cfg.Job.Redis.Addrs, + MasterName: cfg.Job.Redis.MasterName, + Username: cfg.Job.Redis.Username, + Password: cfg.Job.Redis.Password, + BrokerDB: cfg.Job.Redis.BrokerDB, + BackendDB: cfg.Job.Redis.BackendDB, } globalJob, err := internaljob.New(redisConfig, internaljob.GlobalQueue)