Skip to content

Haproxy Agent Check protocol implementation for Elixir/Phoenix apps. Allows for easy rolling restarts and dynamic backpressure to your loadbalancer.

License

Notifications You must be signed in to change notification settings

betacooperation/agent_check

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Agent Check

HAProxy Agent Check protocol implementation for Elixir/Phoenix apps. Allows for easy rolling restarts and dynamic backpressure to your loadbalancer.

screencast

Installation

If available in Hex, the package can be installed by adding agent_check to your list of dependencies in mix.exs:

def deps do
  [
    {:agent_check, "~> 0.2.8"}
  ]
end

  def application do
    [
      extra_applications: [:logger, :agent_check],
      mod: {Your.Application, []}
    ]
  end

Then the following needs to be added to your config:

  config :agent_check,
         port: System.get_env("AGENT_CHECK_PORT") || 6666,
         capacity_callback: {Your.Application, :calculate_capacity},
         maint_callback: {Your.Application, :close_all_open_connections}

The capacity callback must return a binary or integer between 1 and 100. Both callbacks are optional.

Next you need to configure Haproxy to check for your agent.

backend your_backend_web
  mode tcp
  balance roundrobin
  server websrv1 192.168.1.101:443 weight 255 check agent-check agent-port 6666 agent-addr 192.168.1.101 agent-send state\n
  server websrv2 192.168.1.102:443 weight 255 check agent-check agent-port 6666 agent-addr 192.168.1.102 agent-send state\n

Usage

To check if the agent is running correctly, connect to it via telnet:

$ telnet 192.168.0.101 6666 
Trying 192.168.0.101...
Connected to websrv1.
Escape character is '^]'.
state
ready 100
Connection closed by foreign host.

The following commands are available:

Command Description
maint Go to maintenance mode
ready Return from maintenance mode to up state
state Get server state and capacity information in HAProxy format
stats Get server state and capacity information in raw format

About

Haproxy Agent Check protocol implementation for Elixir/Phoenix apps. Allows for easy rolling restarts and dynamic backpressure to your loadbalancer.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages