Hash host ID so its stable and well distributed
This PR takes the host ID and runs it through a hash so that it is well distributed. This makes it so that machines that report similar host IDs are easily distinguished. Instances of similar IDs occur on EC2 where the ID is prefixed and on motherboards created in the same batch.
This commit is contained in:
parent
af1d22135a
commit
13f026dec4
|
@ -1,6 +1,7 @@
|
|||
package agent
|
||||
|
||||
import (
|
||||
"crypto/sha512"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
@ -645,6 +646,17 @@ func (a *Agent) makeNodeID() (string, error) {
|
|||
return a.makeRandomID()
|
||||
}
|
||||
|
||||
// Hash the input to make it well distributed. The reported Host UUID may be
|
||||
// similar across nodes if they are on a cloud provider or on motherboards
|
||||
// created from the same batch.
|
||||
buf := sha512.Sum512([]byte(id))
|
||||
id = fmt.Sprintf("%08x-%04x-%04x-%04x-%12x",
|
||||
buf[0:4],
|
||||
buf[4:6],
|
||||
buf[6:8],
|
||||
buf[8:10],
|
||||
buf[10:16])
|
||||
|
||||
a.logger.Printf("[DEBUG] Using unique ID %q from host as node ID", id)
|
||||
return id, nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue