check etcd servers by a random order

Kubernetes-commit: ea627f987507de38dfc46ab2d9c924690eba5ee9
This commit is contained in:
hzxuzhonghu 2018-03-15 10:04:40 +08:00 committed by Kubernetes Publisher
parent 13a30195c0
commit dff0e6ac00
1 changed files with 6 additions and 3 deletions

View File

@ -18,6 +18,7 @@ package preflight
import (
"fmt"
"math/rand"
"net"
"net/url"
"time"
@ -59,9 +60,11 @@ func parseServerURI(serverURI string) (*url.URL, error) {
// CheckEtcdServers will attempt to reach all etcd servers once. If any
// can be reached, return true.
func (con EtcdConnection) CheckEtcdServers() (done bool, err error) {
// Attempt to reach every Etcd server in order
for _, serverURI := range con.ServerList {
host, err := parseServerURI(serverURI)
// Attempt to reach every Etcd server randomly.
serverNumber := len(con.ServerList)
serverPerms := rand.Perm(serverNumber)
for _, index := range serverPerms {
host, err := parseServerURI(con.ServerList[index])
if err != nil {
return false, err
}