From f18d19aeb58ecc27f0433ef6ccdfc7c8d950a3a8 Mon Sep 17 00:00:00 2001 From: Evan Hazlett Date: Mon, 7 Oct 2019 13:52:47 -0400 Subject: [PATCH] add advertise grpc address option Signed-off-by: Evan Hazlett --- README.md | 2 -- cmd/heimdall/main.go | 6 ++++++ cmd/heimdall/run.go | 23 ++++++++++++----------- config.go | 2 ++ server/node.go | 4 ++-- 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 2cfd306..609acdb 100644 --- a/README.md +++ b/README.md @@ -5,5 +5,3 @@ auto-elects in the event of a current master failure. Non-node peers are also s can only access the network but do not provide routing capabilities. ![Heimdall](docs/overview.png) - -# diff --git a/cmd/heimdall/main.go b/cmd/heimdall/main.go index dc4f779..af7f20c 100644 --- a/cmd/heimdall/main.go +++ b/cmd/heimdall/main.go @@ -60,6 +60,12 @@ func main() { Value: fmt.Sprintf("tcp://%s:%d", heimdall.GetIP(), defaultGRPCPort), EnvVar: "HEIMDALL_GRPC_ADDR", }, + cli.StringFlag{ + Name: "advertise-grpc-address", + Usage: "public advertise grpc address", + Value: fmt.Sprintf("tcp://%s:%d", heimdall.GetIP(), defaultGRPCPort), + EnvVar: "HEIMDALL_ADVERTISE_GRPC_ADDR", + }, cli.StringFlag{ Name: "redis-url, r", Usage: "uri for datastore backend", diff --git a/cmd/heimdall/run.go b/cmd/heimdall/run.go index 1eccbdf..8c51e94 100644 --- a/cmd/heimdall/run.go +++ b/cmd/heimdall/run.go @@ -41,17 +41,18 @@ import ( func runServer(cx *cli.Context) error { cfg := &heimdall.Config{ - ID: cx.String("id"), - GRPCAddress: cx.String("addr"), - GRPCPeerAddress: cx.String("peer"), - ClusterKey: cx.String("cluster-key"), - NodeNetwork: cx.String("node-network"), - PeerNetwork: cx.String("peer-network"), - EndpointIP: cx.String("endpoint-ip"), - EndpointPort: cx.Int("endpoint-port"), - InterfaceName: cx.String("interface-name"), - RedisURL: cx.String("redis-url"), - AdvertiseRedisURL: cx.String("advertise-redis-url"), + ID: cx.String("id"), + GRPCAddress: cx.String("addr"), + AdvertiseGRPCAddress: cx.String("advertise-grpc-address"), + GRPCPeerAddress: cx.String("peer"), + ClusterKey: cx.String("cluster-key"), + NodeNetwork: cx.String("node-network"), + PeerNetwork: cx.String("peer-network"), + EndpointIP: cx.String("endpoint-ip"), + EndpointPort: cx.Int("endpoint-port"), + InterfaceName: cx.String("interface-name"), + RedisURL: cx.String("redis-url"), + AdvertiseRedisURL: cx.String("advertise-redis-url"), } errCh := make(chan error, 1) diff --git a/config.go b/config.go index c8915cd..76c1dd5 100644 --- a/config.go +++ b/config.go @@ -29,6 +29,8 @@ type Config struct { ID string // GRPCAddress is the address for the grpc server GRPCAddress string + // AdvertiseGRPCAddress is the public address for the grpc server + AdvertiseGRPCAddress string // GRPCPeerAddress is the peer address to join GRPCPeerAddress string // ClusterKey is a preshared key for cluster peers diff --git a/server/node.go b/server/node.go index e8ceba4..7396137 100644 --- a/server/node.go +++ b/server/node.go @@ -99,7 +99,7 @@ func (s *Server) configureNode() error { return err } // ignore self - if node.Addr == s.cfg.GRPCAddress { + if node.ID == s.cfg.ID { continue } @@ -277,7 +277,7 @@ func (s *Server) updateMasterInfo(ctx context.Context) error { } m := &v1.Master{ ID: s.cfg.ID, - GRPCAddress: s.cfg.GRPCAddress, + GRPCAddress: s.cfg.AdvertiseGRPCAddress, RedisURL: s.cfg.AdvertiseRedisURL, } data, err := proto.Marshal(m)