mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdserver: User peerTLSInfo to get cluster member
This commit is contained in:
parent
93e4880ae6
commit
033e7d1db9
@ -213,11 +213,16 @@ func startProxy(cfg *config) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tr, err := transport.NewTransport(cfg.peerTLSInfo)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
// TODO(jonboulle): update peerURLs dynamically (i.e. when updating
|
// TODO(jonboulle): update peerURLs dynamically (i.e. when updating
|
||||||
// clientURLs) instead of just using the initial fixed list here
|
// clientURLs) instead of just using the initial fixed list here
|
||||||
peerURLs := cls.PeerURLs()
|
peerURLs := cls.PeerURLs()
|
||||||
uf := func() []string {
|
uf := func() []string {
|
||||||
cls, err := etcdserver.GetClusterFromPeers(peerURLs)
|
cls, err := etcdserver.GetClusterFromPeers(peerURLs, tr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("proxy: %v", err)
|
log.Printf("proxy: %v", err)
|
||||||
return []string{}
|
return []string{}
|
||||||
|
@ -159,7 +159,7 @@ func NewServer(cfg *ServerConfig) (*EtcdServer, error) {
|
|||||||
switch {
|
switch {
|
||||||
case !haveWAL && !cfg.NewCluster:
|
case !haveWAL && !cfg.NewCluster:
|
||||||
us := getOtherPeerURLs(cfg.Cluster, cfg.Name)
|
us := getOtherPeerURLs(cfg.Cluster, cfg.Name)
|
||||||
existingCluster, err := GetClusterFromPeers(us)
|
existingCluster, err := GetClusterFromPeers(us, cfg.Transport)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("cannot fetch cluster info from peer urls: %v", err)
|
return nil, fmt.Errorf("cannot fetch cluster info from peer urls: %v", err)
|
||||||
}
|
}
|
||||||
@ -175,7 +175,7 @@ func NewServer(cfg *ServerConfig) (*EtcdServer, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
m := cfg.Cluster.MemberByName(cfg.Name)
|
m := cfg.Cluster.MemberByName(cfg.Name)
|
||||||
if isBootstrapped(cfg.Cluster, cfg.Name) {
|
if isBootstrapped(cfg) {
|
||||||
return nil, fmt.Errorf("member %s has already been bootstrapped", m.ID)
|
return nil, fmt.Errorf("member %s has already been bootstrapped", m.ID)
|
||||||
}
|
}
|
||||||
if cfg.ShouldDiscover() {
|
if cfg.ShouldDiscover() {
|
||||||
@ -820,9 +820,12 @@ func (s *EtcdServer) ResumeSending() { s.r.resumeSending() }
|
|||||||
|
|
||||||
// isBootstrapped tries to check if the given member has been bootstrapped
|
// isBootstrapped tries to check if the given member has been bootstrapped
|
||||||
// in the given cluster.
|
// in the given cluster.
|
||||||
func isBootstrapped(cl *Cluster, member string) bool {
|
func isBootstrapped(cfg *ServerConfig) bool {
|
||||||
|
cl := cfg.Cluster
|
||||||
|
member := cfg.Name
|
||||||
|
|
||||||
us := getOtherPeerURLs(cl, member)
|
us := getOtherPeerURLs(cl, member)
|
||||||
rcl, err := getClusterFromPeers(us, false)
|
rcl, err := getClusterFromPeers(us, false, cfg.Transport)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@ -842,16 +845,14 @@ func isBootstrapped(cl *Cluster, member string) bool {
|
|||||||
// these URLs. The first URL to provide a response is used. If no URLs provide
|
// these URLs. The first URL to provide a response is used. If no URLs provide
|
||||||
// a response, or a Cluster cannot be successfully created from a received
|
// a response, or a Cluster cannot be successfully created from a received
|
||||||
// response, an error is returned.
|
// response, an error is returned.
|
||||||
func GetClusterFromPeers(urls []string) (*Cluster, error) {
|
func GetClusterFromPeers(urls []string, tr *http.Transport) (*Cluster, error) {
|
||||||
return getClusterFromPeers(urls, true)
|
return getClusterFromPeers(urls, true, tr)
|
||||||
}
|
}
|
||||||
|
|
||||||
// If logerr is true, it prints out more error messages.
|
// If logerr is true, it prints out more error messages.
|
||||||
func getClusterFromPeers(urls []string, logerr bool) (*Cluster, error) {
|
func getClusterFromPeers(urls []string, logerr bool, tr *http.Transport) (*Cluster, error) {
|
||||||
cc := &http.Client{
|
cc := &http.Client{
|
||||||
Transport: &http.Transport{
|
Transport: tr,
|
||||||
ResponseHeaderTimeout: 500 * time.Millisecond,
|
|
||||||
},
|
|
||||||
Timeout: time.Second,
|
Timeout: time.Second,
|
||||||
}
|
}
|
||||||
for _, u := range urls {
|
for _, u := range urls {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user