Replies: 3 comments 2 replies
-
Any detail I can add here to encourage a response? Accurately reproducing our actual environment for replication would require a couple of VLANs and wireguard tunnels so I don't think it would be practical. I realise the solution may well be in the detail of how we have done this, but an answer to those questions would help I think:
Thanks! |
Beta Was this translation helpful? Give feedback.
-
One last bump - no-one able to shed any light on the design thinking here? |
Beta Was this translation helpful? Give feedback.
-
Let me try helping you, but someone more informed might come along, and provide an even better perspective.
The separation serves distinct architectural purposes as you've correctly identified:
Yes, health checks use client URLs. Looking at the etcd/server/etcdserver/api/etcdhttp/health.go Lines 58 to 73 in 52ce705 hc can be serializable (local node only) or linearizable (requires cluster consensus). The checkAPI function performs health checks using Range requests.
If my understanding serves me right, there is no priority mechanism. Source: Lines 657 to 670 in 52ce705 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello all,
I don't quite see this covered explicitly in the docs, but apologies if it is.
I am trying to understand the distinction between peers and client connections in etcd. The background is that we run two separate etcd clusters to support our patroni implementations. In one cluster we have VMs with single interfaces and no problems: peer and client advertised and listening URLs are all on the same IP, differentiated by port.
Our other cluster is constrained in that all VMs are multihomed with separate administrative and data interfaces. Without going down the rabbit hole of our configuration, we are having trouble configuring etcd to pass healthchecks. My assumption so far has been that the peer IP is for exchanging all significant cluster traffic in terms of replicating data and RAFT comms. It seems that the client IP is used for healthchecks (etcdctl endpoint health and status) and for clients such as patroni to connect.
If this is correct, can I also confirm that if I configure a node to listen on all interfaces (with ETCD_LISTEN_CLIENT_URLS="0.0.0.0" and by advertising both client URLs) then clients such as patroni and etcdctl should be able to connect to either interface? I have configured this scenario, confirmed with ss that etcd is listening on 0.0.0.0:*, and confirmed with 'member list' that both interfaces are advertised - however, I find that I am failing healthchecks from other nodes despite the fact that they have a route to one or both interfaces and can successfully ping and curl to both peer and client ports.
Thanks for any insights!
Beta Was this translation helpful? Give feedback.
All reactions