Merge pull request 'Add advertise-address' (#4) from advertise-address into master
Reviewed-on: https://git.weko.io/resilien/wesher/pulls/4
This commit is contained in:
commit
1d7d75524e
|
@ -31,7 +31,7 @@ type Cluster struct {
|
||||||
|
|
||||||
// New is used to create a new Cluster instance
|
// New is used to create a new Cluster instance
|
||||||
// The returned instance is ready to be updated with the local node settings then joined
|
// The returned instance is ready to be updated with the local node settings then joined
|
||||||
func New(name string, init bool, clusterKey []byte, bindAddr string, bindPort int, useIPAsName bool) (*Cluster, error) {
|
func New(name string, init bool, clusterKey []byte, bindAddr string, bindPort int, advertiseAddr string, advertisePort int, useIPAsName bool) (*Cluster, error) {
|
||||||
state := &state{}
|
state := &state{}
|
||||||
if !init {
|
if !init {
|
||||||
loadState(state, name)
|
loadState(state, name)
|
||||||
|
@ -47,7 +47,8 @@ func New(name string, init bool, clusterKey []byte, bindAddr string, bindPort in
|
||||||
mlConfig.SecretKey = clusterKey
|
mlConfig.SecretKey = clusterKey
|
||||||
mlConfig.BindAddr = bindAddr
|
mlConfig.BindAddr = bindAddr
|
||||||
mlConfig.BindPort = bindPort
|
mlConfig.BindPort = bindPort
|
||||||
mlConfig.AdvertisePort = bindPort
|
mlConfig.AdvertiseAddr = advertiseAddr
|
||||||
|
mlConfig.AdvertisePort = advertisePort
|
||||||
if useIPAsName && bindAddr != "0.0.0.0" {
|
if useIPAsName && bindAddr != "0.0.0.0" {
|
||||||
mlConfig.Name = bindAddr
|
mlConfig.Name = bindAddr
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import (
|
||||||
|
|
||||||
"github.com/costela/wesher/cluster"
|
"github.com/costela/wesher/cluster"
|
||||||
"github.com/hashicorp/go-sockaddr"
|
"github.com/hashicorp/go-sockaddr"
|
||||||
|
"github.com/mikioh/ipaddr"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/stevenroose/gonfig"
|
"github.com/stevenroose/gonfig"
|
||||||
)
|
)
|
||||||
|
@ -17,6 +18,7 @@ type config struct {
|
||||||
Init bool `desc:"whether to explicitly (re)initialize the cluster; any known state from previous runs will be forgotten"`
|
Init bool `desc:"whether to explicitly (re)initialize the cluster; any known state from previous runs will be forgotten"`
|
||||||
BindAddr string `id:"bind-addr" desc:"IP address to bind to for cluster membership traffic (cannot be used with --bind-iface)"`
|
BindAddr string `id:"bind-addr" desc:"IP address to bind to for cluster membership traffic (cannot be used with --bind-iface)"`
|
||||||
BindIface string `id:"bind-iface" desc:"Interface to bind to for cluster membership traffic (cannot be used with --bind-addr)"`
|
BindIface string `id:"bind-iface" desc:"Interface to bind to for cluster membership traffic (cannot be used with --bind-addr)"`
|
||||||
|
AdvertiseAddr string `id:"advertise-addr" desc:"IP address to advertise to other nodes for NAT traversal"`
|
||||||
ClusterPort int `id:"cluster-port" desc:"port used for membership gossip traffic (both TCP and UDP); must be the same across cluster" default:"7946"`
|
ClusterPort int `id:"cluster-port" desc:"port used for membership gossip traffic (both TCP and UDP); must be the same across cluster" default:"7946"`
|
||||||
WireguardPort int `id:"wireguard-port" desc:"port used for wireguard traffic (UDP); must be the same across cluster" default:"51820"`
|
WireguardPort int `id:"wireguard-port" desc:"port used for wireguard traffic (UDP); must be the same across cluster" default:"51820"`
|
||||||
BaseMtu int `id:"mtu" desc:"MTU of the underlying network, taking intermediary hops into account" default:"1500"`
|
BaseMtu int `id:"mtu" desc:"MTU of the underlying network, taking intermediary hops into account" default:"1500"`
|
||||||
|
@ -80,6 +82,10 @@ func loadConfig() (*config, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if _, err := ipaddr.Parse(config.AdvertiseAddr); err != nil {
|
||||||
|
config.AdvertiseAddr = ""
|
||||||
|
}
|
||||||
|
|
||||||
return &config, nil
|
return &config, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
1
go.mod
1
go.mod
|
@ -11,6 +11,7 @@ require (
|
||||||
github.com/hashicorp/golang-lru v0.5.4 // indirect
|
github.com/hashicorp/golang-lru v0.5.4 // indirect
|
||||||
github.com/hashicorp/memberlist v0.2.2
|
github.com/hashicorp/memberlist v0.2.2
|
||||||
github.com/mattn/go-isatty v0.0.12
|
github.com/mattn/go-isatty v0.0.12
|
||||||
|
github.com/mikioh/ipaddr v0.0.0-20190404000644-d465c8ab6721 // indirect
|
||||||
github.com/pkg/errors v0.9.1
|
github.com/pkg/errors v0.9.1
|
||||||
github.com/sirupsen/logrus v1.7.0
|
github.com/sirupsen/logrus v1.7.0
|
||||||
github.com/stevenroose/gonfig v0.1.5
|
github.com/stevenroose/gonfig v0.1.5
|
||||||
|
|
2
main.go
2
main.go
|
@ -35,7 +35,7 @@ func main() {
|
||||||
logrus.SetLevel(logLevel)
|
logrus.SetLevel(logLevel)
|
||||||
|
|
||||||
// Create the wireguard and cluster configuration
|
// Create the wireguard and cluster configuration
|
||||||
cluster, err := cluster.New(config.Interface, config.Init, config.ClusterKey, config.BindAddr, config.ClusterPort, config.UseIPAsName)
|
cluster, err := cluster.New(config.Interface, config.Init, config.ClusterKey, config.BindAddr, config.ClusterPort, config.AdvertiseAddr, config.ClusterPort, config.UseIPAsName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithError(err).Fatal("could not create cluster")
|
logrus.WithError(err).Fatal("could not create cluster")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue