mirror of
https://github.com/juanfont/headscale.git
synced 2024-11-23 18:15:26 +00:00
Make tailnet updates check configurable
This commit is contained in:
parent
e0b15c18ce
commit
cf3fc85196
@ -103,6 +103,12 @@ disable_check_updates: false
|
||||
# Time before an inactive ephemeral node is deleted?
|
||||
ephemeral_node_inactivity_timeout: 30m
|
||||
|
||||
# Period to check for changes in the tailnet. A value too low will severily affect
|
||||
# CPU consumption of Headscale. A value too high (over 60s) will cause problems
|
||||
# to the nodes, as they won't get updates or keep alive messages on time.
|
||||
# In case of doubts, do not touch the default 10s.
|
||||
changes_check_interval: 10s
|
||||
|
||||
# SQLite config
|
||||
db_type: sqlite3
|
||||
db_path: /var/lib/headscale/db.sqlite
|
||||
|
16
config.go
16
config.go
@ -26,6 +26,7 @@ type Config struct {
|
||||
GRPCAddr string
|
||||
GRPCAllowInsecure bool
|
||||
EphemeralNodeInactivityTimeout time.Duration
|
||||
ChangesCheckInterval time.Duration
|
||||
IPPrefixes []netaddr.IPPrefix
|
||||
PrivateKeyPath string
|
||||
BaseDomain string
|
||||
@ -162,6 +163,8 @@ func LoadConfig(path string, isFile bool) error {
|
||||
|
||||
viper.SetDefault("ephemeral_node_inactivity_timeout", "120s")
|
||||
|
||||
viper.SetDefault("changes_check_interval", "10s")
|
||||
|
||||
if err := viper.ReadInConfig(); err != nil {
|
||||
log.Warn().Err(err).Msg("Failed to read configuration from disk")
|
||||
|
||||
@ -217,6 +220,15 @@ func LoadConfig(path string, isFile bool) error {
|
||||
)
|
||||
}
|
||||
|
||||
maxChangesCheckInterval, _ := time.ParseDuration("60s")
|
||||
if viper.GetDuration("changes_check_interval") > maxChangesCheckInterval {
|
||||
errorText += fmt.Sprintf(
|
||||
"Fatal config error: changes_check_interval (%s) is set too high, must be less than %s",
|
||||
viper.GetString("changes_check_interval"),
|
||||
maxChangesCheckInterval,
|
||||
)
|
||||
}
|
||||
|
||||
if errorText != "" {
|
||||
//nolint
|
||||
return errors.New(strings.TrimSuffix(errorText, "\n"))
|
||||
@ -478,6 +490,10 @@ func GetHeadscaleConfig() (*Config, error) {
|
||||
"ephemeral_node_inactivity_timeout",
|
||||
),
|
||||
|
||||
ChangesCheckInterval: viper.GetDuration(
|
||||
"changes_check_interval",
|
||||
),
|
||||
|
||||
DBtype: viper.GetString("db_type"),
|
||||
DBpath: AbsolutePathFromConfigPath(viper.GetString("db_path")),
|
||||
DBhost: viper.GetString("db_host"),
|
||||
|
3
poll.go
3
poll.go
@ -17,7 +17,6 @@ import (
|
||||
|
||||
const (
|
||||
keepAliveInterval = 60 * time.Second
|
||||
updateCheckInterval = 10 * time.Second
|
||||
)
|
||||
|
||||
type contextKey string
|
||||
@ -640,7 +639,7 @@ func (h *Headscale) scheduledPollWorker(
|
||||
machine *Machine,
|
||||
) {
|
||||
keepAliveTicker := time.NewTicker(keepAliveInterval)
|
||||
updateCheckerTicker := time.NewTicker(updateCheckInterval)
|
||||
updateCheckerTicker := time.NewTicker(h.cfg.ChangesCheckInterval)
|
||||
|
||||
defer closeChanWithLog(
|
||||
updateChan,
|
||||
|
Loading…
Reference in New Issue
Block a user