mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
embed: add "InitialElectionTickAdvance"
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
This commit is contained in:
parent
3fe9030d34
commit
bffc532f9f
@ -123,6 +123,36 @@ type Config struct {
|
|||||||
// make ticks a cluster wide configuration.
|
// make ticks a cluster wide configuration.
|
||||||
TickMs uint `json:"heartbeat-interval"`
|
TickMs uint `json:"heartbeat-interval"`
|
||||||
ElectionMs uint `json:"election-timeout"`
|
ElectionMs uint `json:"election-timeout"`
|
||||||
|
|
||||||
|
// InitialElectionTickAdvance is true, then local member fast-forwards
|
||||||
|
// election ticks to speed up "initial" leader election trigger. This
|
||||||
|
// benefits the case of larger election ticks. For instance, cross
|
||||||
|
// datacenter deployment may require longer election timeout of 10-second.
|
||||||
|
// If true, local node does not need wait up to 10-second. Instead,
|
||||||
|
// forwards its election ticks to 8-second, and have only 2-second left
|
||||||
|
// before leader election.
|
||||||
|
//
|
||||||
|
// Major assumptions are that:
|
||||||
|
// - cluster has no active leader thus advancing ticks enables faster
|
||||||
|
// leader election, or
|
||||||
|
// - cluster already has an established leader, and rejoining follower
|
||||||
|
// is likely to receive heartbeats from the leader after tick advance
|
||||||
|
// and before election timeout.
|
||||||
|
//
|
||||||
|
// However, when network from leader to rejoining follower is congested,
|
||||||
|
// and the follower does not receive leader heartbeat within left election
|
||||||
|
// ticks, disruptive election has to happen thus affecting cluster
|
||||||
|
// availabilities.
|
||||||
|
//
|
||||||
|
// Disabling this would slow down initial bootstrap process for cross
|
||||||
|
// datacenter deployments. Make your own tradeoffs by configuring
|
||||||
|
// --initial-election-tick-advance at the cost of slow initial bootstrap.
|
||||||
|
//
|
||||||
|
// If single-node, it advances ticks regardless.
|
||||||
|
//
|
||||||
|
// See https://github.com/coreos/etcd/issues/9333 for more detail.
|
||||||
|
InitialElectionTickAdvance bool `json:"initial-election-tick-advance"`
|
||||||
|
|
||||||
QuotaBackendBytes int64 `json:"quota-backend-bytes"`
|
QuotaBackendBytes int64 `json:"quota-backend-bytes"`
|
||||||
MaxTxnOps uint `json:"max-txn-ops"`
|
MaxTxnOps uint `json:"max-txn-ops"`
|
||||||
MaxRequestBytes uint `json:"max-request-bytes"`
|
MaxRequestBytes uint `json:"max-request-bytes"`
|
||||||
@ -307,6 +337,7 @@ func NewConfig() *Config {
|
|||||||
|
|
||||||
TickMs: 100,
|
TickMs: 100,
|
||||||
ElectionMs: 1000,
|
ElectionMs: 1000,
|
||||||
|
InitialElectionTickAdvance: true,
|
||||||
|
|
||||||
LPUrls: []url.URL{*lpurl},
|
LPUrls: []url.URL{*lpurl},
|
||||||
LCUrls: []url.URL{*lcurl},
|
LCUrls: []url.URL{*lcurl},
|
||||||
|
@ -174,6 +174,7 @@ func StartEtcd(inCfg *Config) (e *Etcd, err error) {
|
|||||||
PeerTLSInfo: cfg.PeerTLSInfo,
|
PeerTLSInfo: cfg.PeerTLSInfo,
|
||||||
TickMs: cfg.TickMs,
|
TickMs: cfg.TickMs,
|
||||||
ElectionTicks: cfg.ElectionTicks(),
|
ElectionTicks: cfg.ElectionTicks(),
|
||||||
|
InitialElectionTickAdvance: cfg.InitialElectionTickAdvance,
|
||||||
AutoCompactionRetention: autoCompactionRetention,
|
AutoCompactionRetention: autoCompactionRetention,
|
||||||
AutoCompactionMode: cfg.AutoCompactionMode,
|
AutoCompactionMode: cfg.AutoCompactionMode,
|
||||||
QuotaBackendBytes: cfg.QuotaBackendBytes,
|
QuotaBackendBytes: cfg.QuotaBackendBytes,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user