Open amitlimaye opened 2 years ago
There have been some thoughts about reworking the protocol to make it even more efficient network-wise and CPU-wise. However I strongly doubt that this will go in the direction of a very generic protocol like gRPC, because CPU and bandwidth currently are the main challenges, not the ease of implementation by external components, and any time you replace a tailor-made protocol by a generic one, your processing costs explode. That doesn't mean that it couldn't happen, it can be considered as part of the options, but I don't have big hopes to ever announce you a good news on this front, but rather to all those who want to always process more messages more efficiently.
I look at the peer protocol and it looks like it is designed for a cluster of haproxy servers to communicate between themselves without the need for an external abritrator. The design i am thinking is of an aggregator which pulls periodically rather than through continuous updates. I was hoping to write a filter/service to pull this data and export it using grpc/rest ( something similar to prometheus exporter) and also provide a mechanism to update tables. The filter it looks like cannot be built outside the haproxy tree ( it cannot be a shared object that is loaded) which is why i was thinking about this feature. If i add this as a filter is there a chance of this filter making it to upstream.
I understand the efficiency concerns when there are continuous updates and cpu/networks concern become a very valid reason. i am not proposing that we modify the peer protocol but rather provide another mechanism to update/retrieve these tables for use cases which don't need these continuous updates
Your Feature Request
The haproxy peers protocol allows exporting and updating stick tables in a cluster. I want to develop a REST/GRPC api for the same behavior. This will allow standard backend services which will consume this data to do it without having to implement another protocol.
What are you trying to do?
i am trying to develop a service which has a global view of all the stick tables configured in all my haproxy instances and take actions based on this centralized view which will involve updating some other stick tables to block/rate limit traffic. The rest of the services understand rest/grpc and wanted to avoid developing a peers protocol implementation if possible.
Output of
haproxy -vv