With its DNS interface or with the prepared queries, consul already allows to do load balancing. So I wonder what is the added value of a solution like Traefik or Fabio.
Most applications do not support resolving SRV records when using a consul url. So if you configure a service to use example.service.consul, it will resolve to an IP and assume the port to be 443 or 80 depending on the protocol specified. If you run traefik/fabio on port x, you simply hit localhost:x/example and traefik/fabio will route the traffic to the IP:Port combinations running example service in a round robin fashion that you define. They also offer a lot of features like circuit breakers, blue/green etc