Browse Source

Merge pull request #151 from philips/listening-ip-cleanups

Listening ip cleanups
Xiang Li 12 years ago
parent
commit
d56d79018e
3 changed files with 16 additions and 8 deletions
  1. 8 5
      README.md
  2. 2 2
      etcd.go
  3. 6 1
      util.go

+ 8 - 5
README.md

@@ -347,6 +347,9 @@ We use -s to specify server port and -c to specify client port and -d to specify
 ./etcd -s 127.0.0.1:7001 -c 127.0.0.1:4001 -d nodes/node1 -n node1
 ./etcd -s 127.0.0.1:7001 -c 127.0.0.1:4001 -d nodes/node1 -n node1
 ```
 ```
 
 
+**Note:** If you want to run etcd on external IP address and still have access locally you need to add `-cl 0.0.0.0` so that it will listen on both external and localhost addresses.
+A similar argument `-sl` is used to setup the listening address for the server port.
+
 Let the join two more nodes to this cluster using the -C argument:
 Let the join two more nodes to this cluster using the -C argument:
 
 
 ```sh
 ```sh
@@ -363,7 +366,7 @@ curl -L http://127.0.0.1:4001/v1/machines
 We should see there are three nodes in the cluster
 We should see there are three nodes in the cluster
 
 
 ```
 ```
-http://0.0.0.0:4001, http://0.0.0.0:4002, http://0.0.0.0:4003
+http://127.0.0.1:4001, http://127.0.0.1:4002, http://127.0.0.1:4003
 ```
 ```
 
 
 The machine list is also available via this API:
 The machine list is also available via this API:
@@ -373,7 +376,7 @@ curl -L http://127.0.0.1:4001/v1/keys/_etcd/machines
 ```
 ```
 
 
 ```json
 ```json
-[{"action":"GET","key":"/_etcd/machines/node1","value":"raft=http://0.0.0.0:7001&etcd=http://0.0.0.0:4001","index":4},{"action":"GET","key":"/_etcd/machines/node2","value":"raft=http://0.0.0.0:7002&etcd=http://0.0.0.0:4002","index":4},{"action":"GET","key":"/_etcd/machines/node3","value":"raft=http://0.0.0.0:7003&etcd=http://0.0.0.0:4003","index":4}]
+[{"action":"GET","key":"/_etcd/machines/node1","value":"raft=http://127.0.0.1:7001&etcd=http://127.0.0.1:4001","index":4},{"action":"GET","key":"/_etcd/machines/node2","value":"raft=http://127.0.0.1:7002&etcd=http://127.0.0.1:4002","index":4},{"action":"GET","key":"/_etcd/machines/node3","value":"raft=http://127.0.0.1:7003&etcd=http://127.0.0.1:4003","index":4}]
 ```
 ```
 
 
 The key of the machine is based on the ```commit index``` when it was added. The value of the machine is ```hostname```, ```raft port``` and ```client port```.
 The key of the machine is based on the ```commit index``` when it was added. The value of the machine is ```hostname```, ```raft port``` and ```client port```.
@@ -386,7 +389,7 @@ curl -L http://127.0.0.1:4001/v1/leader
 The first server we set up should be the leader, if it has not dead during these commands.
 The first server we set up should be the leader, if it has not dead during these commands.
 
 
 ```
 ```
-http://0.0.0.0:7001
+http://127.0.0.1:7001
 ```
 ```
 
 
 Now we can do normal SET and GET operations on keys as we explored earlier.
 Now we can do normal SET and GET operations on keys as we explored earlier.
@@ -414,13 +417,13 @@ curl -L http://127.0.0.1:4001/v1/leader
 ```
 ```
 
 
 ```
 ```
-http://0.0.0.0:7002
+http://127.0.0.1:7002
 ```
 ```
 
 
 or
 or
 
 
 ```
 ```
-http://0.0.0.0:7003
+http://127.0.0.1:7003
 ```
 ```
 
 
 You should be able to see this:
 You should be able to see this:

+ 2 - 2
etcd.go

@@ -52,8 +52,8 @@ func init() {
 	flag.StringVar(&argInfo.Name, "n", "default-name", "the node name (required)")
 	flag.StringVar(&argInfo.Name, "n", "default-name", "the node name (required)")
 	flag.StringVar(&argInfo.EtcdURL, "c", "127.0.0.1:4001", "the advertised public hostname:port for etcd client communication")
 	flag.StringVar(&argInfo.EtcdURL, "c", "127.0.0.1:4001", "the advertised public hostname:port for etcd client communication")
 	flag.StringVar(&argInfo.RaftURL, "s", "127.0.0.1:7001", "the advertised public hostname:port for raft server communication")
 	flag.StringVar(&argInfo.RaftURL, "s", "127.0.0.1:7001", "the advertised public hostname:port for raft server communication")
-	flag.StringVar(&argInfo.EtcdListenHost, "cl", "127.0.0.1", "the listening hostname for etcd client communication")
-	flag.StringVar(&argInfo.RaftListenHost, "sl", "127.0.0.1", "the listening hostname for raft server communication")
+	flag.StringVar(&argInfo.EtcdListenHost, "cl", "", "the listening hostname for etcd client communication (defaults to advertised ip)")
+	flag.StringVar(&argInfo.RaftListenHost, "sl", "", "the listening hostname for raft server communication (defaults to advertised ip)")
 	flag.StringVar(&argInfo.WebURL, "w", "", "the hostname:port of web interface")
 	flag.StringVar(&argInfo.WebURL, "w", "", "the hostname:port of web interface")
 
 
 	flag.StringVar(&argInfo.RaftTLS.CAFile, "serverCAFile", "", "the path of the CAFile")
 	flag.StringVar(&argInfo.RaftTLS.CAFile, "serverCAFile", "", "the path of the CAFile")

+ 6 - 1
util.go

@@ -114,11 +114,16 @@ func sanitizeListenHost(listen string, advertised string) string {
 		fatal(err)
 		fatal(err)
 	}
 	}
 
 
-	_, aport, err := net.SplitHostPort(aurl.Host)
+	ahost, aport, err := net.SplitHostPort(aurl.Host)
 	if err != nil {
 	if err != nil {
 		fatal(err)
 		fatal(err)
 	}
 	}
 
 
+	// If the listen host isn't set use the advertised host
+	if listen == "" {
+		listen = ahost
+	}
+
 	return net.JoinHostPort(listen, aport)
 	return net.JoinHostPort(listen, aport)
 }
 }