Client support for etcd dynamic cluster membership reconfiguration
See original GitHub issueWhen running etcd server on the cloud (AWS, for example), as instances get terminated new instances with different IP addresses are launched to replace them. With time, an etcd cluster that used to be reachable through a set of IP addresses, will have a totally different set of addresses.
In order for the client to be able to keep connected and working with an ever changing set of cluster IP addresses, somethings are required. It seems that this client already has some of them. It already supports the configuration of both URIResolver
and LoadBalancer
which are essential for properly discovering all the nodes of a cluster but also implementing fallback strategies, as described in etcd client architecture docs https://etcd.readthedocs.io/en/latest/client-architecture.html#client-architecture
Nevertheless, I was not able to achieve the behaviour described in such architecture docs. The problems are the following:
- once an etcd host goes down, the client does not fallback to another host
- when a new host is added, it’s not automatically added in the channel
How do you think would be the correct way to achieve 1 and 2?
Ideally it would be possible to “fix” a channel by managing connections to hosts, adding and removing connections.
Issue Analytics
- State:
- Created 5 years ago
- Reactions:1
- Comments:16 (2 by maintainers)
Top GitHub Comments
@User979269852 I think this is part of grpc-core. I have a line like this in my project
import io.grpc.LoadBalancerRegistry;
How is the “DnsSrvUriResolver” defined? Is there any specific implementation code?