diff --git a/pkg/deployer/baremetal/component/frontend.go b/pkg/deployer/baremetal/component/frontend.go index a4c27d05..5aa13238 100644 --- a/pkg/deployer/baremetal/component/frontend.go +++ b/pkg/deployer/baremetal/component/frontend.go @@ -33,7 +33,8 @@ type frontend struct { wg *sync.WaitGroup logger logger.Logger - frontendDirs []string + frontendLogDirs []string + frontendPidDirs []string } func newFrontend(config *config.Frontend, metaSrvAddr string, workDirs WorkDirs, wg *sync.WaitGroup, logger logger.Logger) BareMetalClusterComponent { @@ -47,20 +48,24 @@ func newFrontend(config *config.Frontend, metaSrvAddr string, workDirs WorkDirs, } func (f *frontend) Start(ctx context.Context, binary string) error { - var ( - frontendLogDir = path.Join(f.workDirs.LogsDir, "frontend") - frontendPidDir = path.Join(f.workDirs.PidsDir, "frontend") - frontendDirs = []string{frontendLogDir, frontendPidDir} - ) - for _, dir := range frontendDirs { - if err := utils.CreateDirIfNotExists(dir); err != nil { + for i := 0; i < f.config.Replicas; i++ { + dirName := fmt.Sprintf("frontend.%d", i) + + frontendLogDir := path.Join(f.workDirs.LogsDir, dirName) + if err := utils.CreateDirIfNotExists(frontendLogDir); err != nil { return err } - } - f.frontendDirs = frontendDirs + f.frontendLogDirs = append(f.frontendLogDirs, frontendLogDir) - if err := runBinary(ctx, binary, f.BuildArgs(ctx), frontendLogDir, frontendPidDir, f.wg, f.logger); err != nil { - return err + frontendPidDir := path.Join(f.workDirs.PidsDir, dirName) + if err := utils.CreateDirIfNotExists(frontendPidDir); err != nil { + return err + } + f.frontendPidDirs = append(f.frontendPidDirs, frontendPidDir) + + if err := runBinary(ctx, binary, f.BuildArgs(ctx), frontendLogDir, frontendPidDir, f.wg, f.logger); err != nil { + return err + } } return nil @@ -85,11 +90,17 @@ func (f *frontend) IsRunning(ctx context.Context) bool { } func (f *frontend) Delete(ctx context.Context) error { - for _, dir := range f.frontendDirs { + for _, dir := range f.frontendLogDirs { if err := utils.DeleteDirIfExists(dir); err != nil { return err } } - f.frontendDirs = nil + + for _, dir := range f.frontendPidDirs { + if err := utils.DeleteDirIfExists(dir); err != nil { + return err + } + } + return nil } diff --git a/pkg/deployer/baremetal/config/common.go b/pkg/deployer/baremetal/config/common.go index baec9bfe..579386cf 100644 --- a/pkg/deployer/baremetal/config/common.go +++ b/pkg/deployer/baremetal/config/common.go @@ -55,7 +55,9 @@ func DefaultConfig() *Config { Artifact: &Artifact{ Version: DefaultGreptimeVersion, }, - Frontend: &Frontend{}, + Frontend: &Frontend{ + Replicas: 1, + }, MetaSrv: &MetaSrv{ StoreAddr: "127.0.0.1:2379", ServerAddr: "0.0.0.0:3002", diff --git a/pkg/deployer/baremetal/config/frontend.go b/pkg/deployer/baremetal/config/frontend.go index 7db3bee6..bf22a9dc 100644 --- a/pkg/deployer/baremetal/config/frontend.go +++ b/pkg/deployer/baremetal/config/frontend.go @@ -15,6 +15,8 @@ package config type Frontend struct { + Replicas int `yaml:"replicas" validate:"gt=0"` + GRPCAddr string `yaml:"grpcAddr" validate:"omitempty,hostname_port"` HTTPAddr string `yaml:"httpAddr" validate:"omitempty,hostname_port"` PostgresAddr string `yaml:"postgresAddr" validate:"omitempty,hostname_port"`