code: func (s *server) fetchClusterPeers() error {
  	conns, err := s.LocalAccessPoint.GetAllTunnelConnections()
  	if err != nil {
  		return trace.Wrap(err)
  	}
  	newConns := make(map[string]services.TunnelConnection)
  	for i := range conns {
  		newConn := conns[i]
  		// Filter out node tunnels.
  		if newConn.GetType() == services.NodeTunnel {
  			continue
  		}
  		// Filter out peer records for own proxy.
  		if newConn.GetProxyName() == s.ID {
  			continue
  		}
  		newConns[newConn.GetName()] = newConn
  	}
  	existingConns := s.existingConns()
  	connsToAdd, connsToUpdate, connsToRemove := s.diffConns(newConns, existingConns)
  	s.removeClusterPeers(connsToRemove)
  	s.updateClusterPeers(connsToUpdate)
  	return s.addClusterPeers(connsToAdd)
  }
docs: // fetchClusterPeers pulls back all proxies that have registered themselves
  // (created a services.TunnelConnection) in the backend and compares them to
  // what was found in the previous iteration and updates the in-memory cluster
  // peer map. This map is used later by GetSite(s) to return either local or
  // remote site, or if non match, a cluster peer.