diff options
| author | chrislu <chris.lu@gmail.com> | 2022-05-15 00:43:37 -0700 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2022-05-15 00:43:37 -0700 |
| commit | 29198720f22ddb4cf3c594d53564ae7e4e6c3253 (patch) | |
| tree | dd1d6e4a68d237a08f0d5147f7f2f4df949ba9be /weed/command/s3.go | |
| parent | 735038b2c1b3c8402605603e70d3741d07d0d195 (diff) | |
| download | seaweedfs-29198720f22ddb4cf3c594d53564ae7e4e6c3253.tar.xz seaweedfs-29198720f22ddb4cf3c594d53564ae7e4e6c3253.zip | |
s3: add grpc server to accept configuration changes
Diffstat (limited to 'weed/command/s3.go')
| -rw-r--r-- | weed/command/s3.go | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/weed/command/s3.go b/weed/command/s3.go index c28f3016e..42e447d90 100644 --- a/weed/command/s3.go +++ b/weed/command/s3.go @@ -4,11 +4,13 @@ import ( "context" "fmt" "github.com/chrislusf/seaweedfs/weed/s3api/s3err" + "google.golang.org/grpc/reflection" "net/http" "time" "github.com/chrislusf/seaweedfs/weed/pb" "github.com/chrislusf/seaweedfs/weed/pb/filer_pb" + "github.com/chrislusf/seaweedfs/weed/pb/s3_pb" "github.com/chrislusf/seaweedfs/weed/security" "github.com/gorilla/mux" @@ -27,6 +29,7 @@ type S3Options struct { filer *string bindIp *string port *int + portGrpc *int config *string domainName *string tlsPrivateKey *string @@ -43,6 +46,7 @@ func init() { s3StandaloneOptions.filer = cmdS3.Flag.String("filer", "localhost:8888", "filer server address") s3StandaloneOptions.bindIp = cmdS3.Flag.String("ip.bind", "", "ip address to bind to. Default to localhost.") s3StandaloneOptions.port = cmdS3.Flag.Int("port", 8333, "s3 server http listen port") + s3StandaloneOptions.portGrpc = cmdS3.Flag.Int("port.grpc", 0, "s3 server grpc listen port") s3StandaloneOptions.domainName = cmdS3.Flag.String("domainName", "", "suffix of the host name in comma separated list, {bucket}.{domainName}") s3StandaloneOptions.config = cmdS3.Flag.String("config", "", "path to the config file") s3StandaloneOptions.auditLogConfig = cmdS3.Flag.String("auditLogConfig", "", "path to the audit log config file") @@ -179,7 +183,7 @@ func (s3opt *S3Options) startS3Server() bool { router := mux.NewRouter().SkipClean(true) - _, s3ApiServer_err := s3api.NewS3ApiServer(router, &s3api.S3ApiServerOption{ + s3ApiServer, s3ApiServer_err := s3api.NewS3ApiServer(router, &s3api.S3ApiServerOption{ Filer: filerAddress, Port: *s3opt.port, Config: *s3opt.config, @@ -196,6 +200,9 @@ func (s3opt *S3Options) startS3Server() bool { httpS := &http.Server{Handler: router} + if *s3opt.portGrpc == 0 { + *s3opt.portGrpc = 10000 + *s3opt.port + } if *s3opt.bindIp == "" { *s3opt.bindIp = "localhost" } @@ -213,6 +220,20 @@ func (s3opt *S3Options) startS3Server() bool { } } + // starting grpc server + grpcPort := *s3opt.portGrpc + grpcL, grpcLocalL, err := util.NewIpAndLocalListeners(*s3opt.bindIp, grpcPort, 0) + if err != nil { + glog.Fatalf("s3 failed to listen on grpc port %d: %v", grpcPort, err) + } + grpcS := pb.NewGrpcServer(security.LoadServerTLS(util.GetViper(), "grpc.s3")) + s3_pb.RegisterSeaweedS3Server(grpcS, s3ApiServer) + reflection.Register(grpcS) + if grpcLocalL != nil { + go grpcS.Serve(grpcLocalL) + } + go grpcS.Serve(grpcL) + if *s3opt.tlsPrivateKey != "" { glog.V(0).Infof("Start Seaweed S3 API Server %s at https port %d", util.Version(), *s3opt.port) if s3ApiLocalListner != nil { |
