mirror of
https://github.com/EchoVault/SugarDB.git
synced 2026-04-22 23:47:09 +08:00
Use UDP dial to find default address for outbound traffic.
Set default bindAddr if it has not been explicitly provided be the user.
This commit is contained in:
@@ -11,7 +11,6 @@ services:
|
||||
context: .
|
||||
dockerfile: ./server/Dockerfile
|
||||
environment:
|
||||
- BINDADDR=0.0.0.0
|
||||
- PORT=7480
|
||||
- RAFTPORT=8000
|
||||
- MLPORT=7946
|
||||
@@ -31,7 +30,6 @@ services:
|
||||
context: .
|
||||
dockerfile: ./server/Dockerfile
|
||||
environment:
|
||||
- BINDADDR=0.0.0.0
|
||||
- PORT=7480
|
||||
- RAFTPORT=8000
|
||||
- MLPORT=7946
|
||||
@@ -52,7 +50,6 @@ services:
|
||||
context: .
|
||||
dockerfile: ./server/Dockerfile
|
||||
environment:
|
||||
- BINDADDR=0.0.0.0
|
||||
- PORT=7480
|
||||
- RAFTPORT=8000
|
||||
- MLPORT=7946
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ func GetConfig() Config {
|
||||
http := flag.Bool("http", false, "Use HTTP protocol instead of raw TCP. Default is false")
|
||||
serverId := flag.String("serverId", "1", "Server ID in raft cluster. Leave empty for client.")
|
||||
joinAddr := flag.String("joinAddr", "", "Address of cluster member in a cluster to you want to join.")
|
||||
bindAddr := flag.String("bindAddr", "127.0.0.1", "Address to bind the server to.")
|
||||
bindAddr := flag.String("bindAddr", "", "Address to bind the server to.")
|
||||
raftBindPort := flag.Int("raftPort", 7481, "Port to use for intra-cluster communication. Leave on the client.")
|
||||
mlBindPort := flag.Int("mlPort", 7946, "Port to use for memberlist communication.")
|
||||
config := flag.String(
|
||||
|
||||
+14
-4
@@ -5,6 +5,7 @@ import (
|
||||
"crypto/tls"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"net"
|
||||
"net/http"
|
||||
"os"
|
||||
@@ -103,13 +104,13 @@ func (server *Server) StartTCP() {
|
||||
fmt.Printf("Starting TLS server at Address %s, Port %d...\n", conf.BindAddr, conf.Port)
|
||||
cer, err := tls.LoadX509KeyPair(conf.Cert, conf.Key)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
if l, err := tls.Listen("tcp", fmt.Sprintf("%s:%d", conf.BindAddr, conf.Port), &tls.Config{
|
||||
Certificates: []tls.Certificate{cer},
|
||||
}); err != nil {
|
||||
panic(err)
|
||||
log.Fatal(err)
|
||||
} else {
|
||||
listener = l
|
||||
}
|
||||
@@ -119,7 +120,7 @@ func (server *Server) StartTCP() {
|
||||
// TCP
|
||||
fmt.Printf("Starting TCP server at Address %s, Port %d...\n", conf.BindAddr, conf.Port)
|
||||
if l, err := net.Listen("tcp", fmt.Sprintf("%s:%d", conf.BindAddr, conf.Port)); err != nil {
|
||||
panic(err)
|
||||
log.Fatal(err)
|
||||
} else {
|
||||
listener = l
|
||||
}
|
||||
@@ -170,7 +171,7 @@ func (server *Server) Start() {
|
||||
}
|
||||
|
||||
server.MemberListInit()
|
||||
// server.RaftInit()
|
||||
server.RaftInit()
|
||||
|
||||
if conf.HTTP {
|
||||
server.StartHTTP()
|
||||
@@ -188,6 +189,15 @@ func (server *Server) ShutDown() {
|
||||
func main() {
|
||||
config := GetConfig()
|
||||
|
||||
// Default BindAddr if it's not set
|
||||
if config.BindAddr == "" {
|
||||
if addr, err := GetIPAddress(); err != nil {
|
||||
log.Fatal(err)
|
||||
} else {
|
||||
config.BindAddr = addr
|
||||
}
|
||||
}
|
||||
|
||||
cancelCh := make(chan (os.Signal), 1)
|
||||
signal.Notify(cancelCh, syscall.SIGINT, syscall.SIGTERM)
|
||||
|
||||
|
||||
+3
-1
@@ -15,6 +15,7 @@ func (server *Server) RaftInit() {
|
||||
// Triggered after MemberList init
|
||||
|
||||
conf := server.config
|
||||
fmt.Println(conf)
|
||||
|
||||
raftConfig := raft.DefaultConfig()
|
||||
raftConfig.LocalID = raft.ServerID(conf.ServerID)
|
||||
@@ -24,9 +25,10 @@ func (server *Server) RaftInit() {
|
||||
raftSnapshotStore := raft.NewInmemSnapshotStore()
|
||||
|
||||
raftAddr := fmt.Sprintf("%s:%d", conf.BindAddr, conf.RaftBindPort)
|
||||
|
||||
raftAdvertiseAddr, err := net.ResolveTCPAddr("tcp", raftAddr)
|
||||
if err != nil {
|
||||
log.Fatal("Could not resolve advertise address.")
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
raftTransport, err := raft.NewTCPTransport(
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/big"
|
||||
"net"
|
||||
"reflect"
|
||||
"strings"
|
||||
"time"
|
||||
@@ -188,3 +189,17 @@ func RetryBackoff(b retry.Backoff, maxRetries uint64, jitter, cappedDuration, ma
|
||||
|
||||
return backoff
|
||||
}
|
||||
|
||||
func GetIPAddress() (string, error) {
|
||||
conn, err := net.Dial("udp", "8.8.8.8:80")
|
||||
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
defer conn.Close()
|
||||
|
||||
localAddr := strings.Split(conn.LocalAddr().String(), ":")[0]
|
||||
|
||||
return localAddr, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user