etcdmian: gateway supports dns srv discovery

This commit is contained in:
Xiang Li 2016-07-18 20:26:42 -07:00
parent fcc96c9ebd
commit c7c5cd324b

View File

@ -20,6 +20,7 @@ import (
"os" "os"
"time" "time"
"github.com/coreos/etcd/client"
"github.com/coreos/etcd/proxy/tcpproxy" "github.com/coreos/etcd/proxy/tcpproxy"
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
@ -27,6 +28,7 @@ import (
var ( var (
gatewayListenAddr string gatewayListenAddr string
gatewayEndpoints []string gatewayEndpoints []string
gatewayDNSCluster string
getewayRetryDelay time.Duration getewayRetryDelay time.Duration
) )
@ -61,13 +63,26 @@ func newGatewayStartCommand() *cobra.Command {
} }
cmd.Flags().StringVar(&gatewayListenAddr, "listen-addr", "127.0.0.1:23790", "listen address") cmd.Flags().StringVar(&gatewayListenAddr, "listen-addr", "127.0.0.1:23790", "listen address")
cmd.Flags().StringVar(&gatewayDNSCluster, "discovery-srv", "", "DNS domain used to bootstrap initial cluster")
cmd.Flags().StringSliceVar(&gatewayEndpoints, "endpoints", []string{"127.0.0.1:2379"}, "comma separated etcd cluster endpoints") cmd.Flags().StringSliceVar(&gatewayEndpoints, "endpoints", []string{"127.0.0.1:2379"}, "comma separated etcd cluster endpoints")
cmd.Flags().DurationVar(&getewayRetryDelay, "retry-delay", time.Minute, "duration of delay before retrying failed endpoints") cmd.Flags().DurationVar(&getewayRetryDelay, "retry-delay", time.Minute, "duration of delay before retrying failed endpoints")
return &cmd return &cmd
} }
func startGateway(cmd *cobra.Command, args []string) { func startGateway(cmd *cobra.Command, args []string) {
endpoints := gatewayEndpoints
if gatewayDNSCluster != "" {
eps, err := client.NewSRVDiscover().Discover(gatewayDNSCluster)
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
plog.Infof("discovered the cluster %s from %s", eps, gatewayDNSCluster)
}
l, err := net.Listen("tcp", gatewayListenAddr) l, err := net.Listen("tcp", gatewayListenAddr)
if err != nil { if err != nil {
fmt.Fprintln(os.Stderr, err) fmt.Fprintln(os.Stderr, err)
@ -76,7 +91,7 @@ func startGateway(cmd *cobra.Command, args []string) {
tp := tcpproxy.TCPProxy{ tp := tcpproxy.TCPProxy{
Listener: l, Listener: l,
Endpoints: gatewayEndpoints, Endpoints: endpoints,
MonitorInterval: getewayRetryDelay, MonitorInterval: getewayRetryDelay,
} }