Documentation
¶
Overview ¶
Package etcdserver defines how etcd servers interact and store their states.
Index ¶
- Constants
- Variables
- func GetClusterFromRemotePeers(urls []string, rt http.RoundTripper) (*membership.RaftCluster, error)
- type ApplierV2
- type Authenticator
- type DiscoveryError
- type EtcdServer
- func (s *EtcdServer) AddMember(ctx context.Context, memb membership.Member) ([]*membership.Member, error)
- func (s *EtcdServer) Alarm(ctx context.Context, r *pb.AlarmRequest) (*pb.AlarmResponse, error)
- func (s *EtcdServer) ApplyWait() <-chan struct{}
- func (s *EtcdServer) AuthDisable(ctx context.Context, r *pb.AuthDisableRequest) (*pb.AuthDisableResponse, error)
- func (s *EtcdServer) AuthEnable(ctx context.Context, r *pb.AuthEnableRequest) (*pb.AuthEnableResponse, error)
- func (s *EtcdServer) AuthInfoFromCtx(ctx context.Context) (*auth.AuthInfo, error)
- func (s *EtcdServer) AuthStore() auth.AuthStore
- func (s *EtcdServer) Authenticate(ctx context.Context, r *pb.AuthenticateRequest) (*pb.AuthenticateResponse, error)
- func (s *EtcdServer) Backend() backend.Backend
- func (s *EtcdServer) Cluster() *membership.RaftCluster
- func (s *EtcdServer) ClusterVersion() *semver.Version
- func (s *EtcdServer) Compact(ctx context.Context, r *pb.CompactionRequest) (*pb.CompactionResponse, error)
- func (s *EtcdServer) CutPeer(id types.ID)
- func (s *EtcdServer) DeleteRange(ctx context.Context, r *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error)
- func (s *EtcdServer) Do(ctx context.Context, r pb.Request) (Response, error)
- func (s *EtcdServer) HardStop()
- func (s *EtcdServer) ID() types.ID
- func (s *EtcdServer) Index() uint64
- func (s *EtcdServer) IsIDRemoved(id uint64) bool
- func (s *EtcdServer) KV() mvcc.ConsistentWatchableKV
- func (s *EtcdServer) Lead() uint64
- func (s *EtcdServer) Leader() types.ID
- func (s *EtcdServer) LeaderStats() []byte
- func (s *EtcdServer) LeaseGrant(ctx context.Context, r *pb.LeaseGrantRequest) (*pb.LeaseGrantResponse, error)
- func (s *EtcdServer) LeaseRenew(ctx context.Context, id lease.LeaseID) (int64, error)
- func (s *EtcdServer) LeaseRevoke(ctx context.Context, r *pb.LeaseRevokeRequest) (*pb.LeaseRevokeResponse, error)
- func (s *EtcdServer) LeaseTimeToLive(ctx context.Context, r *pb.LeaseTimeToLiveRequest) (*pb.LeaseTimeToLiveResponse, error)
- func (s *EtcdServer) Lessor() lease.Lessor
- func (s *EtcdServer) MendPeer(id types.ID)
- func (s *EtcdServer) PauseSending()
- func (s *EtcdServer) Process(ctx context.Context, m raftpb.Message) error
- func (s *EtcdServer) Put(ctx context.Context, r *pb.PutRequest) (*pb.PutResponse, error)
- func (s *EtcdServer) RaftHandler() http.Handler
- func (s *EtcdServer) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeResponse, error)
- func (s *EtcdServer) ReadyNotify() <-chan struct{}
- func (s *EtcdServer) RemoveMember(ctx context.Context, id uint64) ([]*membership.Member, error)
- func (s *EtcdServer) ReportSnapshot(id uint64, status raft.SnapshotStatus)
- func (s *EtcdServer) ReportUnreachable(id uint64)
- func (s *EtcdServer) ResumeSending()
- func (s *EtcdServer) RoleAdd(ctx context.Context, r *pb.AuthRoleAddRequest) (*pb.AuthRoleAddResponse, error)
- func (s *EtcdServer) RoleDelete(ctx context.Context, r *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error)
- func (s *EtcdServer) RoleGet(ctx context.Context, r *pb.AuthRoleGetRequest) (*pb.AuthRoleGetResponse, error)
- func (s *EtcdServer) RoleGrantPermission(ctx context.Context, r *pb.AuthRoleGrantPermissionRequest) (*pb.AuthRoleGrantPermissionResponse, error)
- func (s *EtcdServer) RoleList(ctx context.Context, r *pb.AuthRoleListRequest) (*pb.AuthRoleListResponse, error)
- func (s *EtcdServer) RoleRevokePermission(ctx context.Context, r *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error)
- func (s *EtcdServer) SelfStats() []byte
- func (s *EtcdServer) Start()
- func (s *EtcdServer) Stop()
- func (s *EtcdServer) StopNotify() <-chan struct{}
- func (s *EtcdServer) StoreStats() []byte
- func (s *EtcdServer) Term() uint64
- func (s *EtcdServer) TransferLeadership() error
- func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse, error)
- func (s *EtcdServer) UpdateMember(ctx context.Context, memb membership.Member) ([]*membership.Member, error)
- func (s *EtcdServer) UserAdd(ctx context.Context, r *pb.AuthUserAddRequest) (*pb.AuthUserAddResponse, error)
- func (s *EtcdServer) UserChangePassword(ctx context.Context, r *pb.AuthUserChangePasswordRequest) (*pb.AuthUserChangePasswordResponse, error)
- func (s *EtcdServer) UserDelete(ctx context.Context, r *pb.AuthUserDeleteRequest) (*pb.AuthUserDeleteResponse, error)
- func (s *EtcdServer) UserGet(ctx context.Context, r *pb.AuthUserGetRequest) (*pb.AuthUserGetResponse, error)
- func (s *EtcdServer) UserGrantRole(ctx context.Context, r *pb.AuthUserGrantRoleRequest) (*pb.AuthUserGrantRoleResponse, error)
- func (s *EtcdServer) UserList(ctx context.Context, r *pb.AuthUserListRequest) (*pb.AuthUserListResponse, error)
- func (s *EtcdServer) UserRevokeRole(ctx context.Context, r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error)
- func (s *EtcdServer) Watchable() mvcc.WatchableKV
- type Lessor
- type Quota
- type RaftKV
- type RaftTimer
- type Response
- type Server
- type ServerConfig
- func (c *ServerConfig) MemberDir() string
- func (c *ServerConfig) Print()
- func (c *ServerConfig) PrintWithInitial()
- func (c *ServerConfig) ReqTimeout() time.Duration
- func (c *ServerConfig) ShouldDiscover() bool
- func (c *ServerConfig) SnapDir() string
- func (c *ServerConfig) VerifyBootstrap() error
- func (c *ServerConfig) VerifyJoinExisting() error
- func (c *ServerConfig) WALDir() string
- type Storage
Constants ¶
const ( // DefaultQuotaBytes is the number of bytes the backend Size may // consume before exceeding the space quota. DefaultQuotaBytes = int64(2 * 1024 * 1024 * 1024) // 2GB // MaxQuotaBytes is the maximum number of bytes suggested for a backend // quota. A larger quota may lead to degraded performance. MaxQuotaBytes = int64(8 * 1024 * 1024 * 1024) // 8GB )
const ( DefaultSnapCount = 100000 StoreClusterPrefix = "/0" StoreKeysPrefix = "/1" // HealthInterval is the minimum time the cluster should be healthy // before accepting add member requests. HealthInterval = 5 * time.Second )
Variables ¶
var ( ErrUnknownMethod = errors.New("etcdserver: unknown method") ErrStopped = errors.New("etcdserver: server stopped") ErrCanceled = errors.New("etcdserver: request cancelled") ErrTimeout = errors.New("etcdserver: request timed out") ErrTimeoutDueToLeaderFail = errors.New("etcdserver: request timed out, possibly due to previous leader failure") ErrTimeoutDueToConnectionLost = errors.New("etcdserver: request timed out, possibly due to connection lost") ErrTimeoutLeaderTransfer = errors.New("etcdserver: request timed out, leader transfer took too long") ErrNotEnoughStartedMembers = errors.New("etcdserver: re-configuration failed due to not enough started members") ErrNoLeader = errors.New("etcdserver: no leader") ErrRequestTooLarge = errors.New("etcdserver: request is too large") ErrNoSpace = errors.New("etcdserver: no space") ErrTooManyRequests = errors.New("etcdserver: too many requests") ErrUnhealthy = errors.New("etcdserver: unhealthy cluster") ErrKeyNotFound = errors.New("etcdserver: key not found") )
Functions ¶
func GetClusterFromRemotePeers ¶
func GetClusterFromRemotePeers(urls []string, rt http.RoundTripper) (*membership.RaftCluster, error)
GetClusterFromRemotePeers takes a set of URLs representing etcd peers, and attempts to construct a Cluster by accessing the members endpoint on one of 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 response, an error is returned. Each request has a 10-second timeout. Because the upper limit of TTL is 5s, 10 second is enough for building connection and finishing request.
Types ¶
type ApplierV2 ¶
type ApplierV2 interface {
Delete(r *pb.Request) Response
Post(r *pb.Request) Response
Put(r *pb.Request) Response
QGet(r *pb.Request) Response
Sync(r *pb.Request) Response
}
ApplierV2 is the interface for processing V2 raft messages
func NewApplierV2 ¶
func NewApplierV2(s store.Store, c *membership.RaftCluster) ApplierV2
type Authenticator ¶
type Authenticator interface {
AuthEnable(ctx context.Context, r *pb.AuthEnableRequest) (*pb.AuthEnableResponse, error)
AuthDisable(ctx context.Context, r *pb.AuthDisableRequest) (*pb.AuthDisableResponse, error)
Authenticate(ctx context.Context, r *pb.AuthenticateRequest) (*pb.AuthenticateResponse, error)
UserAdd(ctx context.Context, r *pb.AuthUserAddRequest) (*pb.AuthUserAddResponse, error)
UserDelete(ctx context.Context, r *pb.AuthUserDeleteRequest) (*pb.AuthUserDeleteResponse, error)
UserChangePassword(ctx context.Context, r *pb.AuthUserChangePasswordRequest) (*pb.AuthUserChangePasswordResponse, error)
UserGrantRole(ctx context.Context, r *pb.AuthUserGrantRoleRequest) (*pb.AuthUserGrantRoleResponse, error)
UserGet(ctx context.Context, r *pb.AuthUserGetRequest) (*pb.AuthUserGetResponse, error)
UserRevokeRole(ctx context.Context, r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error)
RoleAdd(ctx context.Context, r *pb.AuthRoleAddRequest) (*pb.AuthRoleAddResponse, error)
RoleGrantPermission(ctx context.Context, r *pb.AuthRoleGrantPermissionRequest) (*pb.AuthRoleGrantPermissionResponse, error)
RoleGet(ctx context.Context, r *pb.AuthRoleGetRequest) (*pb.AuthRoleGetResponse, error)
RoleRevokePermission(ctx context.Context, r *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error)
RoleDelete(ctx context.Context, r *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error)
UserList(ctx context.Context, r *pb.AuthUserListRequest) (*pb.AuthUserListResponse, error)
RoleList(ctx context.Context, r *pb.AuthRoleListRequest) (*pb.AuthRoleListResponse, error)
}
type DiscoveryError ¶
func (DiscoveryError) Error ¶
func (e DiscoveryError) Error() string
type EtcdServer ¶
type EtcdServer struct {
Cfg *ServerConfig
SyncTicker *time.Ticker
// contains filtered or unexported fields
}
EtcdServer is the production implementation of the Server interface
func NewServer ¶
func NewServer(cfg *ServerConfig) (srv *EtcdServer, err error)
NewServer creates a new EtcdServer from the supplied configuration. The configuration is considered static for the lifetime of the EtcdServer.
func (*EtcdServer) AddMember ¶
func (s *EtcdServer) AddMember(ctx context.Context, memb membership.Member) ([]*membership.Member, error)
func (*EtcdServer) Alarm ¶
func (s *EtcdServer) Alarm(ctx context.Context, r *pb.AlarmRequest) (*pb.AlarmResponse, error)
func (*EtcdServer) ApplyWait ¶
func (s *EtcdServer) ApplyWait() <-chan struct{}
func (*EtcdServer) AuthDisable ¶
func (s *EtcdServer) AuthDisable(ctx context.Context, r *pb.AuthDisableRequest) (*pb.AuthDisableResponse, error)
func (*EtcdServer) AuthEnable ¶
func (s *EtcdServer) AuthEnable(ctx context.Context, r *pb.AuthEnableRequest) (*pb.AuthEnableResponse, error)
func (*EtcdServer) AuthInfoFromCtx ¶
func (*EtcdServer) AuthStore ¶
func (s *EtcdServer) AuthStore() auth.AuthStore
func (*EtcdServer) Authenticate ¶
func (s *EtcdServer) Authenticate(ctx context.Context, r *pb.AuthenticateRequest) (*pb.AuthenticateResponse, error)
func (*EtcdServer) Backend ¶
func (s *EtcdServer) Backend() backend.Backend
func (*EtcdServer) Cluster ¶
func (s *EtcdServer) Cluster() *membership.RaftCluster
func (*EtcdServer) ClusterVersion ¶
func (s *EtcdServer) ClusterVersion() *semver.Version
func (*EtcdServer) Compact ¶
func (s *EtcdServer) Compact(ctx context.Context, r *pb.CompactionRequest) (*pb.CompactionResponse, error)
func (*EtcdServer) CutPeer ¶
func (s *EtcdServer) CutPeer(id types.ID)
CutPeer drops messages to the specified peer.
func (*EtcdServer) DeleteRange ¶
func (s *EtcdServer) DeleteRange(ctx context.Context, r *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error)
func (*EtcdServer) Do ¶
Do interprets r and performs an operation on s.store according to r.Method and other fields. If r.Method is "POST", "PUT", "DELETE", or a "GET" with Quorum == true, r will be sent through consensus before performing its respective operation. Do will block until an action is performed or there is an error.
func (*EtcdServer) HardStop ¶
func (s *EtcdServer) HardStop()
HardStop stops the server without coordination with other members in the cluster.
func (*EtcdServer) ID ¶
func (s *EtcdServer) ID() types.ID
func (*EtcdServer) Index ¶
func (s *EtcdServer) Index() uint64
func (*EtcdServer) IsIDRemoved ¶
func (s *EtcdServer) IsIDRemoved(id uint64) bool
func (*EtcdServer) KV ¶
func (s *EtcdServer) KV() mvcc.ConsistentWatchableKV
func (*EtcdServer) Lead ¶
func (s *EtcdServer) Lead() uint64
Lead is only for testing purposes. TODO: add Raft server interface to expose raft related info: Index, Term, Lead, Committed, Applied, LastIndex, etc.
func (*EtcdServer) Leader ¶
func (s *EtcdServer) Leader() types.ID
func (*EtcdServer) LeaderStats ¶
func (s *EtcdServer) LeaderStats() []byte
func (*EtcdServer) LeaseGrant ¶
func (s *EtcdServer) LeaseGrant(ctx context.Context, r *pb.LeaseGrantRequest) (*pb.LeaseGrantResponse, error)
func (*EtcdServer) LeaseRenew ¶
func (*EtcdServer) LeaseRevoke ¶
func (s *EtcdServer) LeaseRevoke(ctx context.Context, r *pb.LeaseRevokeRequest) (*pb.LeaseRevokeResponse, error)
func (*EtcdServer) LeaseTimeToLive ¶
func (s *EtcdServer) LeaseTimeToLive(ctx context.Context, r *pb.LeaseTimeToLiveRequest) (*pb.LeaseTimeToLiveResponse, error)
func (*EtcdServer) Lessor ¶
func (s *EtcdServer) Lessor() lease.Lessor
func (*EtcdServer) MendPeer ¶
func (s *EtcdServer) MendPeer(id types.ID)
MendPeer recovers the message dropping behavior of the given peer.
func (*EtcdServer) PauseSending ¶
func (s *EtcdServer) PauseSending()
func (*EtcdServer) Put ¶
func (s *EtcdServer) Put(ctx context.Context, r *pb.PutRequest) (*pb.PutResponse, error)
func (*EtcdServer) RaftHandler ¶
func (s *EtcdServer) RaftHandler() http.Handler
func (*EtcdServer) Range ¶
func (s *EtcdServer) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeResponse, error)
func (*EtcdServer) ReadyNotify ¶
func (s *EtcdServer) ReadyNotify() <-chan struct{}
ReadyNotify returns a channel that will be closed when the server is ready to serve client requests
func (*EtcdServer) RemoveMember ¶
func (s *EtcdServer) RemoveMember(ctx context.Context, id uint64) ([]*membership.Member, error)
func (*EtcdServer) ReportSnapshot ¶
func (s *EtcdServer) ReportSnapshot(id uint64, status raft.SnapshotStatus)
ReportSnapshot reports snapshot sent status to the raft state machine, and clears the used snapshot from the snapshot store.
func (*EtcdServer) ReportUnreachable ¶
func (s *EtcdServer) ReportUnreachable(id uint64)
func (*EtcdServer) ResumeSending ¶
func (s *EtcdServer) ResumeSending()
func (*EtcdServer) RoleAdd ¶
func (s *EtcdServer) RoleAdd(ctx context.Context, r *pb.AuthRoleAddRequest) (*pb.AuthRoleAddResponse, error)
func (*EtcdServer) RoleDelete ¶
func (s *EtcdServer) RoleDelete(ctx context.Context, r *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error)
func (*EtcdServer) RoleGet ¶
func (s *EtcdServer) RoleGet(ctx context.Context, r *pb.AuthRoleGetRequest) (*pb.AuthRoleGetResponse, error)
func (*EtcdServer) RoleGrantPermission ¶
func (s *EtcdServer) RoleGrantPermission(ctx context.Context, r *pb.AuthRoleGrantPermissionRequest) (*pb.AuthRoleGrantPermissionResponse, error)
func (*EtcdServer) RoleList ¶
func (s *EtcdServer) RoleList(ctx context.Context, r *pb.AuthRoleListRequest) (*pb.AuthRoleListResponse, error)
func (*EtcdServer) RoleRevokePermission ¶
func (s *EtcdServer) RoleRevokePermission(ctx context.Context, r *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error)
func (*EtcdServer) SelfStats ¶
func (s *EtcdServer) SelfStats() []byte
func (*EtcdServer) Start ¶
func (s *EtcdServer) Start()
Start prepares and starts server in a new goroutine. It is no longer safe to modify a server's fields after it has been sent to Start. It also starts a goroutine to publish its server information.
func (*EtcdServer) Stop ¶
func (s *EtcdServer) Stop()
Stop stops the server gracefully, and shuts down the running goroutine. Stop should be called after a Start(s), otherwise it will block forever. When stopping leader, Stop transfers its leadership to one of its peers before stopping the server.
func (*EtcdServer) StopNotify ¶
func (s *EtcdServer) StopNotify() <-chan struct{}
StopNotify returns a channel that receives a empty struct when the server is stopped.
func (*EtcdServer) StoreStats ¶
func (s *EtcdServer) StoreStats() []byte
func (*EtcdServer) Term ¶
func (s *EtcdServer) Term() uint64
func (*EtcdServer) TransferLeadership ¶
func (s *EtcdServer) TransferLeadership() error
TransferLeadership transfers the leader to the chosen transferee.
func (*EtcdServer) Txn ¶
func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse, error)
func (*EtcdServer) UpdateMember ¶
func (s *EtcdServer) UpdateMember(ctx context.Context, memb membership.Member) ([]*membership.Member, error)
func (*EtcdServer) UserAdd ¶
func (s *EtcdServer) UserAdd(ctx context.Context, r *pb.AuthUserAddRequest) (*pb.AuthUserAddResponse, error)
func (*EtcdServer) UserChangePassword ¶
func (s *EtcdServer) UserChangePassword(ctx context.Context, r *pb.AuthUserChangePasswordRequest) (*pb.AuthUserChangePasswordResponse, error)
func (*EtcdServer) UserDelete ¶
func (s *EtcdServer) UserDelete(ctx context.Context, r *pb.AuthUserDeleteRequest) (*pb.AuthUserDeleteResponse, error)
func (*EtcdServer) UserGet ¶
func (s *EtcdServer) UserGet(ctx context.Context, r *pb.AuthUserGetRequest) (*pb.AuthUserGetResponse, error)
func (*EtcdServer) UserGrantRole ¶
func (s *EtcdServer) UserGrantRole(ctx context.Context, r *pb.AuthUserGrantRoleRequest) (*pb.AuthUserGrantRoleResponse, error)
func (*EtcdServer) UserList ¶
func (s *EtcdServer) UserList(ctx context.Context, r *pb.AuthUserListRequest) (*pb.AuthUserListResponse, error)
func (*EtcdServer) UserRevokeRole ¶
func (s *EtcdServer) UserRevokeRole(ctx context.Context, r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error)
func (*EtcdServer) Watchable ¶
func (s *EtcdServer) Watchable() mvcc.WatchableKV
Watchable returns a watchable interface attached to the etcdserver.
type Lessor ¶
type Lessor interface {
// LeaseGrant sends LeaseGrant request to raft and apply it after committed.
LeaseGrant(ctx context.Context, r *pb.LeaseGrantRequest) (*pb.LeaseGrantResponse, error)
// LeaseRevoke sends LeaseRevoke request to raft and apply it after committed.
LeaseRevoke(ctx context.Context, r *pb.LeaseRevokeRequest) (*pb.LeaseRevokeResponse, error)
// LeaseRenew renews the lease with given ID. The renewed TTL is returned. Or an error
// is returned.
LeaseRenew(ctx context.Context, id lease.LeaseID) (int64, error)
// LeaseTimeToLive retrieves lease information.
LeaseTimeToLive(ctx context.Context, r *pb.LeaseTimeToLiveRequest) (*pb.LeaseTimeToLiveResponse, error)
}
type Quota ¶
type Quota interface {
// Available judges whether the given request fits within the quota.
Available(req interface{}) bool
// Cost computes the charge against the quota for a given request.
Cost(req interface{}) int
// Remaining is the amount of charge left for the quota.
Remaining() int64
}
Quota represents an arbitrary quota against arbitrary requests. Each request costs some charge; if there is not enough remaining charge, then there are too few resources available within the quota to apply the request.
func NewBackendQuota ¶
func NewBackendQuota(s *EtcdServer) Quota
type RaftKV ¶
type RaftKV interface {
Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeResponse, error)
Put(ctx context.Context, r *pb.PutRequest) (*pb.PutResponse, error)
DeleteRange(ctx context.Context, r *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error)
Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse, error)
Compact(ctx context.Context, r *pb.CompactionRequest) (*pb.CompactionResponse, error)
}
type Server ¶
type Server interface {
// Start performs any initialization of the Server necessary for it to
// begin serving requests. It must be called before Do or Process.
// Start must be non-blocking; any long-running server functionality
// should be implemented in goroutines.
Start()
// Stop terminates the Server and performs any necessary finalization.
// Do and Process cannot be called after Stop has been invoked.
Stop()
// ID returns the ID of the Server.
ID() types.ID
// Leader returns the ID of the leader Server.
Leader() types.ID
// Do takes a request and attempts to fulfill it, returning a Response.
Do(ctx context.Context, r pb.Request) (Response, error)
// Process takes a raft message and applies it to the server's raft state
// machine, respecting any timeout of the given context.
Process(ctx context.Context, m raftpb.Message) error
// AddMember attempts to add a member into the cluster. It will return
// ErrIDRemoved if member ID is removed from the cluster, or return
// ErrIDExists if member ID exists in the cluster.
AddMember(ctx context.Context, memb membership.Member) ([]*membership.Member, error)
// RemoveMember attempts to remove a member from the cluster. It will
// return ErrIDRemoved if member ID is removed from the cluster, or return
// ErrIDNotFound if member ID is not in the cluster.
RemoveMember(ctx context.Context, id uint64) ([]*membership.Member, error)
// UpdateMember attempts to update an existing member in the cluster. It will
// return ErrIDNotFound if the member ID does not exist.
UpdateMember(ctx context.Context, updateMemb membership.Member) ([]*membership.Member, error)
// ClusterVersion is the cluster-wide minimum major.minor version.
// Cluster version is set to the min version that an etcd member is
// compatible with when first bootstrap.
//
// ClusterVersion is nil until the cluster is bootstrapped (has a quorum).
//
// During a rolling upgrades, the ClusterVersion will be updated
// automatically after a sync. (5 second by default)
//
// The API/raft component can utilize ClusterVersion to determine if
// it can accept a client request or a raft RPC.
// NOTE: ClusterVersion might be nil when etcd 2.1 works with etcd 2.0 and
// the leader is etcd 2.0. etcd 2.0 leader will not update clusterVersion since
// this feature is introduced post 2.0.
ClusterVersion() *semver.Version
}
type ServerConfig ¶
type ServerConfig struct {
Name string
DiscoveryURL string
DiscoveryProxy string
ClientURLs types.URLs
PeerURLs types.URLs
DataDir string
// DedicatedWALDir config will make the etcd to write the WAL to the WALDir
// rather than the dataDir/member/wal.
DedicatedWALDir string
SnapCount uint64
MaxSnapFiles uint
MaxWALFiles uint
InitialPeerURLsMap types.URLsMap
InitialClusterToken string
NewCluster bool
ForceNewCluster bool
PeerTLSInfo transport.TLSInfo
TickMs uint
ElectionTicks int
BootstrapTimeout time.Duration
AutoCompactionRetention int
QuotaBackendBytes int64
// MaxRequestBytes is the maximum request size to send over raft.
MaxRequestBytes uint
StrictReconfigCheck bool
// ClientCertAuthEnabled is true when cert has been signed by the client CA.
ClientCertAuthEnabled bool
AuthToken string
}
ServerConfig holds the configuration of etcd as taken from the command line or discovery.
func (*ServerConfig) MemberDir ¶
func (c *ServerConfig) MemberDir() string
func (*ServerConfig) Print ¶
func (c *ServerConfig) Print()
func (*ServerConfig) PrintWithInitial ¶
func (c *ServerConfig) PrintWithInitial()
func (*ServerConfig) ReqTimeout ¶
func (c *ServerConfig) ReqTimeout() time.Duration
ReqTimeout returns timeout for request to finish.
func (*ServerConfig) ShouldDiscover ¶
func (c *ServerConfig) ShouldDiscover() bool
func (*ServerConfig) SnapDir ¶
func (c *ServerConfig) SnapDir() string
func (*ServerConfig) VerifyBootstrap ¶
func (c *ServerConfig) VerifyBootstrap() error
VerifyBootstrap sanity-checks the initial config for bootstrap case and returns an error for things that should never happen.
func (*ServerConfig) VerifyJoinExisting ¶
func (c *ServerConfig) VerifyJoinExisting() error
VerifyJoinExisting sanity-checks the initial config for join existing cluster case and returns an error for things that should never happen.
func (*ServerConfig) WALDir ¶
func (c *ServerConfig) WALDir() string
type Storage ¶
type Storage interface {
// Save function saves ents and state to the underlying stable storage.
// Save MUST block until st and ents are on stable storage.
Save(st raftpb.HardState, ents []raftpb.Entry) error
// SaveSnap function saves snapshot to the underlying stable storage.
SaveSnap(snap raftpb.Snapshot) error
// Close closes the Storage and performs finalization.
Close() error
}
func NewStorage ¶
func NewStorage(w *wal.WAL, s *snap.Snapshotter) Storage
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package api manages the capabilities and features that are exposed to clients by the etcd cluster.
|
Package api manages the capabilities and features that are exposed to clients by the etcd cluster. |
|
v2http
Package v2http provides etcd client and server implementations.
|
Package v2http provides etcd client and server implementations. |
|
v2http/httptypes
Package httptypes defines how etcd's HTTP API entities are serialized to and deserialized from JSON.
|
Package httptypes defines how etcd's HTTP API entities are serialized to and deserialized from JSON. |
|
v3client
Package v3client provides clientv3 interfaces from an etcdserver.
|
Package v3client provides clientv3 interfaces from an etcdserver. |
|
v3election
Package v3election provides a v3 election service from an etcdserver.
|
Package v3election provides a v3 election service from an etcdserver. |
|
v3election/v3electionpb
Package v3electionpb is a generated protocol buffer package.
|
Package v3electionpb is a generated protocol buffer package. |
|
v3election/v3electionpb/gw
Package v3electionpb is a reverse proxy.
|
Package v3electionpb is a reverse proxy. |
|
v3lock
Package v3lock provides a v3 locking service from an etcdserver.
|
Package v3lock provides a v3 locking service from an etcdserver. |
|
v3lock/v3lockpb
Package v3lockpb is a generated protocol buffer package.
|
Package v3lockpb is a generated protocol buffer package. |
|
v3lock/v3lockpb/gw
Package v3lockpb is a reverse proxy.
|
Package v3lockpb is a reverse proxy. |
|
v3rpc
Package v3rpc implements etcd v3 RPC system based on gRPC.
|
Package v3rpc implements etcd v3 RPC system based on gRPC. |
|
v3rpc/rpctypes
Package rpctypes has types and values shared by the etcd server and client for v3 RPC interaction.
|
Package rpctypes has types and values shared by the etcd server and client for v3 RPC interaction. |
|
Package auth implements etcd authentication.
|
Package auth implements etcd authentication. |
|
Package etcdserverpb is a generated protocol buffer package.
|
Package etcdserverpb is a generated protocol buffer package. |
|
gw
Package etcdserverpb is a reverse proxy.
|
Package etcdserverpb is a reverse proxy. |
|
Package membership describes individual etcd members and clusters of members.
|
Package membership describes individual etcd members and clusters of members. |
|
Package stats defines a standard interface for etcd cluster statistics.
|
Package stats defines a standard interface for etcd cluster statistics. |