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

Listening ip cleanups
This commit is contained in:
Xiang Li 2013-09-01 03:08:14 -07:00
commit d56d79018e
3 changed files with 16 additions and 8 deletions

View File

@ -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
```
**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:
```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
```
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:
@ -373,7 +376,7 @@ curl -L http://127.0.0.1:4001/v1/keys/_etcd/machines
```
```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```.
@ -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.
```
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.
@ -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
```
http://0.0.0.0:7003
http://127.0.0.1:7003
```
You should be able to see this:

View File

@ -52,8 +52,8 @@ func init() {
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.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.RaftTLS.CAFile, "serverCAFile", "", "the path of the CAFile")

View File

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