Hacker Newsnew | past | comments | ask | show | jobs | submit | rogerdonut's commentslogin

HAProxy can as well (as well as listen on unix sockets)



HAProxy Technologies | Pre-Sales, Software, & Systems Engineers, Technical Marketing Engineer | Waltham, MA | Paris, France | REMOTE

HAProxy Technologies is the company behind the world's fastest and most widely used open-source software load balancer.

- Technical Marketing Engineer: We are looking for a Technical Marketing Engineer that can aid in creating and promoting technical content. This position requires a unique combination of technical understanding, a high level of creativity, attention to detail and eagerness to learn, as well as the goal to teach others. Basic Linux experience is a must. An ideal candidate has real world experience in a DevOps or SysAdmin environment (bonus if you have programming exp.)

- Pre-Sales Engineer We are looking for a skilled Pre-Sales Engineer with in-depth knowledge in Linux who will help to expand our client base. Experience with load balancing and networking is a requirement.

- C: We are looking to reinforce the development team of HAProxy and are looking for developers who have solid skills in Shell, C, HTTP, TCP/IP and Git. Knowledge of cloud environments is a plus. We are looking for people who are not afraid of patching the Linux Kernel and who can quickly become autonomous.

- Golang: We are looking for Go developers with 2+ years of experience in Kubernetes and Cloud environments, as well as load balancing. A Bachelors or higher degree in IT is desirable. If you want to contribute to the software enabling performance and reliability of some of the largest websites on the internet.

- Senior Systems Engineer: We are seeking Senior Systems Engineers (Linux) to work out of our Waltham, MA office or remotely in the EST/CST/MST/PST time zones. Knowledge of HAProxy is a plus.

Please send cover letter and resume to [email protected]


IMO you would use OpenResty as a web server and HAProxy as a load balancer in front of it. HAProxy focuses on being a high-performance load balancer. OpenResty is built ontop of NGINX and many of the load balancing features in NGINX are locked behind their "Plus" product, all of which are provided by default within HAProxy. In order to take advantage of these features in OpenResty (such as active health checking and DNS service discovery) you would need to use Lua scripts where in HAProxy they are implemented in the core.


Well said, to add to this, HAProxy is also closing the gap on convenience with its recent addition of AWS EC2 service discovery [1] and Consul service discovery integrations [2].

[1] https://www.haproxy.com/blog/announcing-haproxy-data-plane-a...

[2] https://www.haproxy.com/blog/announcing-haproxy-data-plane-a...


Wow, cool. HAProxy is coming a long way. Consul integration makes me excited to take another look at using it for our mesh. Using Fabio right now, and it's fine, but I'd love to go back to HAProxy for this if it makes sense.


Author of the blog post here, happy to answer any questions about this release.


Not specific to this release, but for an system architect that is taking the first look ever to the product:

- the site does not do a good job of describing the products and what they do. https://www.haproxy.com/products/haproxy-enterprise-edition/ has a download button as the start and tells nothing about the product.

- it is hard to find requirements from the first page. (https://www.haproxy.com/documentation/hapee/2-2r1/getting-st...)

- is there any a page with basic architecture of the product? Some diagrams with typical configurations.

- is there a simpler HA setup than the 3 layer one here: https://www.haproxy.com/documentation/hapee/2-2r1/high-avail... ? What is the simplest HA configuration for 2 web servers?


Thanks for the feedback. I've provided a few replies below but I think you have made some great points and I will share them internally.

> - the site does not do a good job of describing the products and what they do.

The page does lead off by telling you it is a software load balancer, but I agree, we can do a better job of giving more information on the product itself. Most people who pursue HAProxy Enterprise are already familiar with HAProxy. With that said, we're actually working on a complete overhaul to this page and I believe the new version will address this.

> - it is hard to find requirements from the first page.

This is just a reference point and typically organizations are working closely with a sales engineer.

> - is there a simpler HA setup than the 3 layer one here:

A simpler version is found under active/standby here [1]

[1] https://www.haproxy.com/documentation/hapee/2-2r1/high-avail...


Thank you. Just for info, my personal experience working for a very big American company is that every time I call a product company for information, I get intensely called back months in a row even if the product does not meet our needs, so I prefer not to do that anymore and to dig myself for info until I figure if that is looking very promising. Maybe it is not the same in your case, but who acts assuming it's an exception?


How did you get a system architect title while somehow never looking at haproxy in the last.... 15 years?!


Downvote me all you want but “architects” need to look at the solution landscape at least once in 15 years.


Plenty areas of software where HAProxy is not part of the relevant "solution landscape".


Systems architect?! I want a load balancer. What’s your top 5 excluding HAProxy?


You don't need 5, especially when the load balancing is part of the network or infrastructure team that are a different group. Some companies have hardware load balancers, some use products like VMWare NSX or both, depending on the needs. When you are a Windows shop, HAProxy is not on the short list, hearing about it and actually knowing it are 2 different sides of the coin.


As someone who isn’t familiar with this space - is the use of HAProxy as a self hosted DDOS defense a “supported” (prioritized?) use case? I found old blog posts on this application of HAProxy but wasn’t sure if new development tries to improve those capabilities or if it is more focused on load balancing or other applications.


Open tracing sounds nice, what info is passed along?


You can pass along timing data from every aspect of the request [1] currently there are approximately 20 events supported. You can also send over just about anything that can be stored within an HAProxy variable / header through a tag. Here's an example configuration for HAProxy (simple) [2] (advanced) [3] and the OpenTracing specific configuration (simple) [4] (advanced) [5]. I've included both simple and advanced configurations.

[1] https://github.com/haproxy/haproxy/blob/master/addons/ot/REA...

[2] https://github.com/haproxy/haproxy/blob/master/addons/ot/tes...

[3] https://github.com/haproxy/haproxy/blob/master/addons/ot/tes...

[4] https://github.com/haproxy/haproxy/blob/master/addons/ot/tes...

[5] https://github.com/haproxy/haproxy/blob/master/addons/ot/tes...


Yea, it's pretty flexible and you can attach any additional metadata that you want (e.g. app version info, user name).


My question is what conversation has there been re: Opentelemetry, the successor to OT


It sounds like ot is still in beta (but it's a little confusing that they're 1.0 but it has a message saying they're in beta on their main page).

It looks like it's being adopted by a few larger app monitoring products, wondering if datadog will follow suit or if they will stick with open tracing and their custom implementations for logging and metrics. I assume they will support ingestion from ot at some point though. It sounds neat tho, will definitely read up on it more.


The added support for FIX is interesting. As far as I can tell it's just TCP-level load balancing, is that right? HAProxy doesn't have the ability to, say, distribute each incoming order to a different backend server?


It has the ability to route by FIX tags. You can find an example here [1]

[1] https://www.haproxy.com/blog/haproxy-enterprise-2-3-and-hapr...


Sure, I saw that example. Maybe let me put it a different way: if a client has one inbound FIX connection to HAProxy, can HAProxy connect to N backend servers and send each FIX message from the single client connection to a different backend?


It seems like it could:

  use_backend fix_servers_a if { var(txn.sendercompid) -m str firmA }
    default_backend fix_servers_b
Then "fix_servers_a" could be defined as a round-robin backend.


I have not tested that use case but I do not think so. It has the ability to parse FIX tag values and make routing decisions from the initial Logon message.


disclaimer: I work at HAProxy Technologies

More control/flexibility (i.e. cloud provider usually gives you a limited number of "checkboxes" that they want you to be able to modify), generally better observability (HAProxy timing metrics [1] and session state at disconnection codes [2] are very helpful for debugging), and granular control over timeouts [3]. You also get builtin rate limiting [4], which from what I have seen with most cloud load balancers usually requires an up-charge through their "WAF" product.

Better health checking, circuit breaking, and layer4/layer7 retries [5].

Another consideration is whether you have spiky traffic patterns. For AWS load balancers at least, they need time to "warm up" to larger traffic levels. If you manage your own load balancing tier you can scale on demand.

[1] https://www.haproxy.com/documentation/hapee/latest/onepage/#...

[2] https://www.haproxy.com/documentation/hapee/latest/onepage/#...

[3] https://www.haproxy.com/documentation/hapee/latest/onepage/#...

[4] https://www.haproxy.com/blog/four-examples-of-haproxy-rate-l...

[5] https://www.haproxy.com/blog/haproxy-layer-7-retries-and-cha...


I last used HAProxy about a decade ago for fairly simple load balancing and caching - worked really well.

Question about the suitability for a dynamic backend case. I have a system where clients are assigned to backends exclusively for the duration of a session. At the moment I have a pool of backends and each client is explicitly told which backend to use so they can route to it. Ideally I’d make this transparent so it was easier to reassign on the fly. Is this case reasonably supported with HAProxy and which features should I be looking at to get a sense of it?

I’m working under the assumption that I’ll need to build the machinery to maintain the pool and registry of where clients should be routed to.


While I have not tested this specific use case, I would start by exploring map files [1] and/or stick tables [2]. Map files can be updated on-the-fly through the HAProxy Runtime API. With stick tables you can persist a session/client based on anything found within the request headers, which would include a users session id.

[1] https://www.haproxy.com/blog/introduction-to-haproxy-maps/

[2] https://www.haproxy.com/blog/introduction-to-haproxy-stick-t...


Excellent, thanks for the info, will check it out.


Hello, author of release post here. If you have any questions I'd be happy to answer.


HAProxy Technologies | Pre-Sales, Software, & Systems Engineers, Technical Marketing Engineer | Waltham, MA | Paris, France | REMOTE

HAProxy Technologies is the company behind the world's fastest and most widely used open-source software load balancer.

- Technical Marketing Engineer: We are looking for a Technical Marketing Engineer that can aid in creating and promoting technical content. This position requires a unique combination of technical understanding, a high level of creativity, attention to detail and eagerness to learn, as well as the goal to teach others. Basic Linux experience is a must. An ideal candidate has real world experience in a DevOps or SysAdmin environment (bonus if you have programming exp.)

- Pre-Sales Engineer We are looking for a skilled Pre-Sales Engineer with in-depth knowledge in Linux who will help to expand our client base. Experience with load balancing and networking is a requirement.

- C: We are looking to reinforce the development team of HAProxy and are looking for developers who have solid skills in Shell, C, HTTP, TCP/IP and Git. Knowledge of cloud environments is a plus. We are looking for people who are not afraid of patching the Linux Kernel and who can quickly become autonomous.

- Golang: We are looking for Go developers with 2+ years of experience in Kubernetes and Cloud environments, as well as load balancing. A Bachelors or higher degree in IT is desirable. If you want to contribute to the software enabling performance and reliability of some of the largest websites on the internet.

- Senior Systems Engineer: We are seeking Senior Systems Engineers (Linux) to work out of our Waltham, MA office or remotely in the EST/CST/MST/PST time zones. Knowledge of HAProxy is a plus.

Please send cover letter and resume to [email protected]


HAProxy Technologies | Pre-Sales, Software, & Systems Engineers, Technical Marketing Engineer | Waltham, MA | Paris, France | REMOTE

HAProxy Technologies is the company behind the world's fastest and most widely used open-source software load balancer.

- Technical Marketing Engineer: We are looking for a Technical Marketing Engineer that can aid in creating and promoting technical content. This position requires a unique combination of technical understanding, a high level of creativity, attention to detail and eagerness to learn, as well as the goal to teach others. Basic Linux experience is a must. An ideal candidate has real world experience in a DevOps or SysAdmin environment (bonus if you have programming exp.)

- Pre-Sales Engineer We are looking for a skilled Pre-Sales Engineer with in-depth knowledge in Linux who will help to expand our client base. Experience with load balancing and networking is a requirement.

- C: We are looking to reinforce the development team of HAProxy and are looking for developers who have solid skills in Shell, C, HTTP, TCP/IP and Git. Knowledge of cloud environments is a plus. We are looking for people who are not afraid of patching the Linux Kernel and who can quickly become autonomous.

- Golang: We are looking for Go developers with 2+ years of experience in Kubernetes and Cloud environments, as well as load balancing. A Bachelors or higher degree in IT is desirable. If you want to contribute to the software enabling performance and reliability of some of the largest websites on the internet.

- Senior Systems Engineer: We are seeking Senior Systems Engineers (Linux) to work out of our Waltham, MA office or remotely in the EST/CST/MST/PST time zones. Knowledge of HAProxy is a plus.

Please send cover letter and resume to [email protected]


This can also be done with HAProxy

    listen whatismyip
        bind :::80 # listen on ipv4/ipv6
        bind :::443 ssl crt /etc/haproxy/ssl/fullchain.pem
        mode http

        http-request return status 200 content-type "text/plain" lf-string "%[src]" if { path /ip }
        http-request return status 200 content-type "application/json" lf-string "{\"ip\":\"%[src]\"}" if { path /json_ip }
        http-request deny


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: