diff --git a/scheduler/announcer/announcer.go b/scheduler/announcer/announcer.go index 6dae3bc6888..1e69d307f67 100644 --- a/scheduler/announcer/announcer.go +++ b/scheduler/announcer/announcer.go @@ -60,7 +60,7 @@ func New(cfg *config.Config, managerClient managerclient.V2) (Announcer, error) SourceType: managerv2.SourceType_SCHEDULER_SOURCE, HostName: a.config.Server.Host, Ip: a.config.Server.AdvertiseIP.String(), - Port: int32(a.config.Server.Port), + Port: int32(a.config.Server.AdvertisePort), Idc: a.config.Host.IDC, Location: a.config.Host.Location, SchedulerClusterId: uint64(a.config.Manager.SchedulerClusterID), diff --git a/scheduler/announcer/announcer_test.go b/scheduler/announcer/announcer_test.go index f37e9aa9ccc..6894d7ebaf5 100644 --- a/scheduler/announcer/announcer_test.go +++ b/scheduler/announcer/announcer_test.go @@ -39,9 +39,10 @@ func TestAnnouncer_New(t *testing.T) { name: "new announcer", config: &config.Config{ Server: config.ServerConfig{ - Host: "localhost", - AdvertiseIP: net.ParseIP("127.0.0.1"), - Port: 8080, + Host: "localhost", + AdvertiseIP: net.ParseIP("127.0.0.1"), + AdvertisePort: 8004, + Port: 8080, }, Host: config.HostConfig{ IDC: "foo", @@ -66,9 +67,10 @@ func TestAnnouncer_New(t *testing.T) { name: "update scheduler failed", config: &config.Config{ Server: config.ServerConfig{ - Host: "localhost", - AdvertiseIP: net.ParseIP("127.0.0.1"), - Port: 8080, + Host: "localhost", + AdvertiseIP: net.ParseIP("127.0.0.1"), + AdvertisePort: 8004, + Port: 8080, }, Host: config.HostConfig{ IDC: "foo", diff --git a/scheduler/config/config.go b/scheduler/config/config.go index aa356e964d2..7f752750897 100644 --- a/scheduler/config/config.go +++ b/scheduler/config/config.go @@ -81,6 +81,9 @@ type ServerConfig struct { // AdvertiseIP is advertise ip. AdvertiseIP net.IP `yaml:"advertiseIP" mapstructure:"advertiseIP"` + // AdvertisePort is advertise port. + AdvertisePort int `yaml:"advertisePort" mapstructure:"advertisePort"` + // ListenIP is listen ip, like: 0.0.0.0, 192.168.0.1. ListenIP net.IP `yaml:"listenIP" mapstructure:"listenIP"` @@ -321,8 +324,9 @@ type ProbeConfig struct { func New() *Config { return &Config{ Server: ServerConfig{ - Port: DefaultServerPort, - Host: fqdn.FQDNHostname, + Port: DefaultServerPort, + AdvertisePort: DefaultServerAdvertisePort, + Host: fqdn.FQDNHostname, }, Scheduler: SchedulerConfig{ Algorithm: DefaultSchedulerAlgorithm, @@ -404,6 +408,10 @@ func (cfg *Config) Validate() error { return errors.New("server requires parameter advertiseIP") } + if cfg.Server.AdvertisePort <= 0 { + return errors.New("server requires parameter advertisePort") + } + if cfg.Server.ListenIP == nil { return errors.New("server requires parameter listenIP") } diff --git a/scheduler/config/config_test.go b/scheduler/config/config_test.go index 312bb1590c8..a95b5b9b65f 100644 --- a/scheduler/config/config_test.go +++ b/scheduler/config/config_test.go @@ -88,15 +88,16 @@ func TestConfig_Load(t *testing.T) { }, }, Server: ServerConfig{ - AdvertiseIP: net.ParseIP("127.0.0.1"), - ListenIP: net.ParseIP("0.0.0.0"), - Port: 8002, - Host: "foo", - WorkHome: "foo", - CacheDir: "foo", - LogDir: "foo", - PluginDir: "foo", - DataDir: "foo", + AdvertiseIP: net.ParseIP("127.0.0.1"), + AdvertisePort: 8004, + ListenIP: net.ParseIP("0.0.0.0"), + Port: 8002, + Host: "foo", + WorkHome: "foo", + CacheDir: "foo", + LogDir: "foo", + PluginDir: "foo", + DataDir: "foo", }, DynConfig: DynConfig{ RefreshInterval: 10 * time.Second, diff --git a/scheduler/config/constants.go b/scheduler/config/constants.go index b3919f4e4a1..403dd5ff98b 100644 --- a/scheduler/config/constants.go +++ b/scheduler/config/constants.go @@ -43,6 +43,9 @@ const ( const ( // DefaultServerPort is default port for server. DefaultServerPort = 8002 + + // DefaultServerAdvertisePort is default advertise port for server. + DefaultServerAdvertisePort = 8002 ) const ( diff --git a/scheduler/config/testdata/scheduler.yaml b/scheduler/config/testdata/scheduler.yaml index 73ddad4ee02..f239fcbb55f 100644 --- a/scheduler/config/testdata/scheduler.yaml +++ b/scheduler/config/testdata/scheduler.yaml @@ -1,5 +1,6 @@ server: advertiseIP: 127.0.0.1 + advertisePort: 8004 listenIP: 0.0.0.0 port: 8002 host: foo