For all the reasons that search is bad for this sort of problem. The search can return inconsistent results run to run. The search index is delayed. The index can be rebuilt and during a rebuild it will fuckup your graphite nodes if they are running a converge.  you can also simply do a rest call to etcd and register a /graphite/peers key with each peer node It doesn't have to be via the services class/object. I can show you what that code looks like using the etcd gem directly (its quite simple). The Services class does error handling and some checks on building out these relationships which is also verry easy. Thats why i suggested it. 

This is IMO not very confusing as you are registering a service and service members. Weather you are clustering or balancing or whatever we use this same pattern. In this case Graphite is the proxy/lb/router (the endpoint) and peers are providers. We just assume that services are more than a description of services and service members because thats how they are using in vrrp and haproxy, doesn't mean it's what they are.