Merge branch '54_reboot' of https://github.com/bboreham/weave into bboreham-54_reboot
This commit is contained in:
commit
5477f671db
3 files changed
+32
-7
No files matched your search
@@ -432,6 +432,28 @@ Any running application containers will permanently lose connectivity
|
||||
with the weave network and have to be restarted in order to
|
||||
re-connect.
|
||||
|
||||
### Reboots
|
||||
|
||||
If the host you are running your containers on gets rebooted, the
|
||||
default behaviour of Docker is to restart any containers that were
|
||||
running, but weave relies on a bridge and virtual ethernet devices
|
||||
being set up outside of the containers, so the weave network will not
|
||||
function in this state.
|
||||
|
||||
For the weave router, the best thing is to stop any container that
|
||||
Docker may have restarted and re-launch, i.e. something like:
|
||||
|
||||
host1# weave stop
|
||||
host1# weave launch 10.0.0.1/16
|
||||
|
||||
After that, other containers may be re-attached if you can identify
|
||||
them, like this:
|
||||
|
||||
host1# weave attach 10.0.1.1/24 <mycontainer>
|
||||
|
||||
Alternatively, you may prefer to disable the auto-restart feature in
|
||||
Docker as described [here](https://docs.docker.com/articles/host_integration/).
|
||||
|
||||
## Installation with Boot2Docker
|
||||
|
||||
If you are running Docker inside the Boot2Docker VM, e.g. because you
|
||||
|
||||
+1
-1
@@ -3,4 +3,4 @@ MAINTAINER Zettio weave@zett.io
|
||||
WORKDIR /home/weave
|
||||
ADD ./weaver /home/weave/
|
||||
CMD []
|
||||
ENTRYPOINT ["/home/weave/weaver", "-iface", "ethwe", "-wait"]
|
||||
ENTRYPOINT ["/home/weave/weaver", "-iface", "ethwe", "-wait", "5"]
|
||||
+9
-6
@@ -18,17 +18,19 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
func ensureInterface(ifaceName string, wait bool) (iface *net.Interface, err error) {
|
||||
func ensureInterface(ifaceName string, wait int) (iface *net.Interface, err error) {
|
||||
iface, err = findInterface(ifaceName)
|
||||
if err == nil || !wait {
|
||||
if err == nil || wait == 0 {
|
||||
return
|
||||
}
|
||||
log.Println("Waiting for interface", ifaceName, "to come up")
|
||||
for err != nil {
|
||||
for ; err != nil && wait > 0; wait -= 1 {
|
||||
time.Sleep(1 * time.Second)
|
||||
iface, err = findInterface(ifaceName)
|
||||
}
|
||||
log.Println("Interface", ifaceName, "is up")
|
||||
if err == nil {
|
||||
log.Println("Interface", ifaceName, "is up")
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@@ -47,6 +49,7 @@ func main() {
|
||||
|
||||
log.SetPrefix(weave.Protocol + " ")
|
||||
log.SetFlags(log.Ldate | log.Ltime | log.Lmicroseconds)
|
||||
log.Println(os.Args)
|
||||
|
||||
procs := runtime.NumCPU()
|
||||
// packet sniffing can block an OS thread, so we need one thread
|
||||
@@ -60,7 +63,7 @@ func main() {
|
||||
ifaceName string
|
||||
routerName string
|
||||
password string
|
||||
wait bool
|
||||
wait int
|
||||
debug bool
|
||||
prof string
|
||||
peers []string
|
||||
@@ -71,7 +74,7 @@ func main() {
|
||||
flag.StringVar(&ifaceName, "iface", "", "name of interface to read from")
|
||||
flag.StringVar(&routerName, "name", "", "name of router (defaults to MAC)")
|
||||
flag.StringVar(&password, "password", "", "network password")
|
||||
flag.BoolVar(&wait, "wait", false, "wait for interface to be created and come up")
|
||||
flag.IntVar(&wait, "wait", 0, "number of seconds to wait for interface to be created and come up")
|
||||
flag.BoolVar(&debug, "debug", false, "enable debug logging")
|
||||
flag.StringVar(&prof, "profile", "", "enable profiling and write profiles to given path")
|
||||
flag.IntVar(&connLimit, "connlimit", 10, "connection limit (defaults to 10, set to 0 for unlimited)")
|
||||
|
||||
Reference in new issue
Block a user