Skip to content

haproxytechblog/dataplaneapi-consul-example

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HAProxy with Consul service discvoery

Example project that demonstrates using Consul service discovery with HAProxy.

Setup

  1. Call vagrant up from this directory to create the virtual machines:
  • Consul server
  • HAProxy
  • Web server running Consul agent
  1. Log into the HAProxy VM:

    $ vagrant ssh haproxy
    
  2. Use the HAProxy Data Plane API to register HAProxy as a Consul agent. Set :code:address to the IP address or DNS name of your Consul server.

    $ curl -u dataplaneapi:mypassword \
           -H 'Content-Type: application/json' \
           -d '{
                 "address": "192.168.50.21",
                 "port": 8500,
                 "enabled": true,
                 "retry_timeout": 10
               }' http://192.168.50.20:5555/v2/service_discovery/consul
    

    which returns:

    {"address":"192.168.50.21","enabled":true,"id":"1de47b93-0165-44c6-b575-818b786db51d","name":"consul","port":8500,"retry_timeout":10,"server_slots_base":10,"server_slots_growth_increment":10,"server_slots_growth_type":"linear","service-blacklist":null,"service-whitelist":null}
    

How to register service

Call the consul services register command on your webserver:

$ consul services register /vagrant/web.json

The web.json file look like this:

{
  "service": {

    "name": "web",
    "port": 80
  }
}

You can register more services that have the name web and they will be put into the same backend in HAProxy.

The HAProxy configuration is updated with the server:

backend consul-backend-192.168.50.21-8500-web
  server SRV_rfBd5 192.168.50.22:80 check weight 128
  server SRV_6ti2S 192.168.50.23:80 check weight 128
  server SRV_MtYvS 127.0.0.1:80 disabled weight 128
  server SRV_gD5xA 127.0.0.1:80 disabled weight 128
  server SRV_V0YU9 127.0.0.1:80 disabled weight 128
  server SRV_9zamp 127.0.0.1:80 disabled weight 128
  server SRV_ta7Z7 127.0.0.1:80 disabled weight 128
  server SRV_S575K 127.0.0.1:80 disabled weight 128
  server SRV_LkIZ9 127.0.0.1:80 disabled weight 128
  server SRV_PYkL1 127.0.0.1:80 disabled weight 128

You will need to add a frontend that routes to this backend.

About

An example of integrating Consul and HAProxy.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages