Documentation
¶
Index ¶
- Constants
- func AdvCheckValidationRule(b *BackendRequest) error
- func DefaultBackendModeRule(b *BackendRequest) error
- func DefaultFrontendModeRule(f *FrontendRequest) error
- func DefaultServerValidateRule(b *BackendRequest) error
- func TCPBalanceRule(b *BackendRequest) error
- func ValidateFronend(request *FrontendRequest) error
- type API
- type BackendNormalizer
- type BackendRequest
- type BackendRule
- type Balance
- type Check
- type Client
- func (c *Client) AddBackendOptions(ctx context.Context, backendName string, opts any) error
- func (c *Client) AddBackendServer(ctx context.Context, backendName string, body *ServerRequest) error
- func (c *Client) AddFrontendBinds(ctx context.Context, frontendName string, body *FrontendBindRequest) error
- func (c *Client) CreateBackend(ctx context.Context, request *BackendRequest) error
- func (c *Client) CreateFrontend(ctx context.Context, body *FrontendRequest) error
- func (c *Client) DeleteBackend(ctx context.Context, name string) error
- func (c *Client) DeleteBackendServer(ctx context.Context, backendName, serverName string) error
- func (c *Client) DeleteFrontend(ctx context.Context, name string) error
- func (c *Client) GetBackendNames(ctx context.Context) ([]string, error)
- func (c *Client) GetBackendServers(ctx context.Context, backendName string) (*[]ServerRequest, error)
- func (c *Client) GetConfigVersion(ctx context.Context) (int64, error)
- type DefaultServer
- type ForwardFor
- type FrontendBindRequest
- type FrontendNormalizer
- type FrontendRequest
- type FrontendRule
- type ServerRequest
- type ValidationError
- type ValidationErrors
Constants ¶
View Source
const ( ReasonUnsupportedCombination = "UnsupportedCombination" MsgHTTPBalanceInTCP = "http-based balance algorithm is not allowed in tcp mode" MsgHTTPChkInTCP = "httpchk is not allowed in tcp mode" MsgSendProxyInHTTP = "send-proxy is not allowed in http mode" MsgSendProxy2InHTTP = "send-proxy-v2 is not allowed in http mode" MsgTCPKAInHTTP = "tcpka is not allowed in http mode" // Frontend Messages MsgDefaultBackendEmpty = "default-backend empty" )
Variables ¶
This section is empty.
Functions ¶
func AdvCheckValidationRule ¶ added in v0.1.3
func AdvCheckValidationRule(b *BackendRequest) error
func DefaultBackendModeRule ¶ added in v0.1.3
func DefaultBackendModeRule(b *BackendRequest) error
func DefaultFrontendModeRule ¶ added in v0.1.3
func DefaultFrontendModeRule(f *FrontendRequest) error
func DefaultServerValidateRule ¶ added in v0.1.3
func DefaultServerValidateRule(b *BackendRequest) error
func TCPBalanceRule ¶ added in v0.1.3
func TCPBalanceRule(b *BackendRequest) error
func ValidateFronend ¶ added in v0.1.3
func ValidateFronend(request *FrontendRequest) error
Types ¶
type API ¶ added in v0.1.3
type API interface {
// reader
GetBackendNames(ctx context.Context) ([]string, error)
GetBackendServers(ctx context.Context, backendName string) (*[]ServerRequest, error)
// writer
CreateBackend(ctx context.Context, request *BackendRequest) error
AddBackendServer(ctx context.Context, backendName string, body *ServerRequest) error
DeleteBackendServer(ctx context.Context, backendName, serverName string) error
DeleteBackend(ctx context.Context, name string) error
AddBackendOptions(ctx context.Context, backendName string, opts any) error
CreateFrontend(ctx context.Context, body *FrontendRequest) error
AddFrontendBinds(ctx context.Context, frontendName string, body *FrontendBindRequest) error
DeleteFrontend(ctx context.Context, name string) error
}
type BackendNormalizer ¶ added in v0.1.3
type BackendNormalizer struct {
// contains filtered or unexported fields
}
func (*BackendNormalizer) Normalize ¶ added in v0.1.3
func (n *BackendNormalizer) Normalize(b *BackendRequest) error
type BackendRequest ¶
type BackendRequest struct {
Name string `json:"name"` // Имя бэкенда
Mode string `json:"mode,omitempty"` // Режим работы (tcp, http)
// Определяет алгоритм балансировки нагрузки для бэкенда.
// Может использоваться в контекстах: tcp, http, log
Balance Balance `json:"balance"`
// Дополнительные проверки сервера.
// Допустимые значения: httpchk┃ldap-check┃mysql-check┃pgsql-check┃redis-check┃smtpchk┃ssl-hello-chk┃tcp-check
AdvCheck string `json:"adv_check,omitempty"`
// Изменение опций по умолчанию для серверов в бэкенде
// Может использоваться в контекстах: tcp, http
DefaultServer DefaultServer `json:"default_server"`
// Включение или отключение отправки TCP keepalive пакетов со стороны клиента
// Может использоваться в контекстах: tcp, http
TCPKeepAlive string `json:"tcpka,omitempty"`
// Включение вставки заголовка X-Forwarded-For в запросы к серверам
// Может использоваться в контекстах: http
ForwardFor *ForwardFor `json:"forwardfor,omitempty"`
// Установка максимального времени ожидания для успешного подключения к серверу
// Может использоваться в контекстах: tcp, http, log
ConnectTimeout int64 `json:"connect_timeout,omitempty"`
// Установка максимального времени бездействия на стороне сервера
// Может использоваться в контекстах: tcp, http, log
ServerTimeout int64 `json:"server_timeout,omitempty"`
}
func (*BackendRequest) RequiresBackendHTTP ¶
func (b *BackendRequest) RequiresBackendHTTP() bool
type BackendRule ¶ added in v0.1.3
type BackendRule func(*BackendRequest) error
type Balance ¶
type Balance struct {
// Allowed: first┃hash┃hdr┃leastconn┃random┃rdp-cookie┃roundrobin┃source┃static-rr┃uri┃url_param
Algorithm string `json:"algorithm,omitempty"`
}
type Client ¶
type Client struct {
BaseURL string
HTTPClient *http.Client
Username string
Password string
Log *slog.Logger
}
func (*Client) AddBackendOptions ¶
func (*Client) AddBackendServer ¶
func (*Client) AddFrontendBinds ¶
func (*Client) CreateBackend ¶
func (c *Client) CreateBackend(ctx context.Context, request *BackendRequest) error
func (*Client) CreateFrontend ¶
func (c *Client) CreateFrontend(ctx context.Context, body *FrontendRequest) error
func (*Client) DeleteBackend ¶
func (*Client) DeleteBackendServer ¶
func (*Client) DeleteFrontend ¶
func (*Client) GetBackendNames ¶
func (*Client) GetBackendServers ¶
type DefaultServer ¶
type DefaultServer struct {
// https://www.haproxy.com/documentation/haproxy-configuration-manual/latest/#5.2-inter
// inter <delay> — интервал между обычными health check в миллисекундах (по умолчанию 2000 ms).
// Используется, когда сервер в стабильном состоянии UP.
Inter int64 `json:"inter,omitempty"`
// fastinter <delay> — сокращённый интервал для промежуточных состояний сервера
// (например, когда он транзитом уходит в DOWN или восстанавливается).
Fastinter int64 `json:"fastinter,omitempty"`
// fall <count> — сервер считается неработоспособным (DOWN) после <count>
// подряд неудачных health check (по умолчанию 3).
// Используется вместе с check, inter и rise для настройки проверки состояния серверов.
Fall int64 `json:"fall,omitempty"`
Rise int64 `json:"rise,omitempty"`
// Currently one action is available: shutdown-sessions
OnMarkedDown string `json:"on-marked-down,omitempty"`
// https://www.haproxy.com/documentation/haproxy-configuration-manual/latest/#send-proxy
// send-proxy заставляет HAProxy использовать PROXY protocol при соединении с сервером,
// передавая реальный IP клиента и адрес, к которому подключились.
// Сервер должен поддерживать PROXY protocol, иначе это сломает соединение.
// Подходит для цепочек HAProxy и TCPv4/6 соединений. Для health check PROXY protocol
// включается автоматически, если не указаны port или addr.
SendProxy string `json:"send-proxy,omitempty"`
// Тоже самое что и send-proxy но с поддержкой расширенной информации и ALPN.
SendProxy2 string `json:"send-proxy-v2,omitempty"`
}
type ForwardFor ¶
type ForwardFor struct {
Enabled string `json:"enabled"` // Включение/отключение вставки X-Forwarded-For
// Можно исключить добавление заголовка для определённого IP или сети,
// указав "except" и адрес сети. В этом случае запросы с этими IP не будут получать заголовок.
// Чаще всего используется для приватных сетей или 127.0.0.1. Поддерживаются IPv4 и IPv6.
Except string `json:"except,omitempty"`
// Имя конкретного заголовка, который нужно вставлять.
Header string `json:"header,omitempty"`
// Ключевое слово "if-none" означает, что заголовок будет добавлен
// только если его ещё нет. Использовать только в полностью доверенной среде,
// иначе это может создать уязвимость, если заголовки, поступающие в HAProxy,
// контролируются пользователем.
IfNone bool `json:"ifnone,omitempty"`
}
type FrontendBindRequest ¶
type FrontendNormalizer ¶ added in v0.1.3
type FrontendNormalizer struct {
// contains filtered or unexported fields
}
func (*FrontendNormalizer) Normalize ¶ added in v0.1.3
func (n *FrontendNormalizer) Normalize(b *FrontendRequest) error
type FrontendRequest ¶
type FrontendRequest struct {
Name string `json:"name"`
DefaultBackend string `json:"default_backend"`
Mode string `json:"mode,omitempty"`
// Устанавливает максимальное время бездействия на стороне клиента.
// Может использоваться в следующих контекстах: tcp, http
ClientTimeout int64 `json:"client_timeout,omitempty"`
}
type FrontendRule ¶ added in v0.1.3
type FrontendRule func(*FrontendRequest) error
type ServerRequest ¶
type ValidationError ¶
type ValidationErrors ¶
type ValidationErrors struct {
Errors []*ValidationError
}
Click to show internal directories.
Click to hide internal directories.