-
Notifications
You must be signed in to change notification settings - Fork 24.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement a remote proxy connection mode #49067
Comments
Pinging @elastic/es-distributed (:Distributed/Network) |
This is related to #49067. This commit adds the simple connection strategy settings and strategy mode setting to the cluster settings registry. With these changes, the simple connection mode can be used. Additionally, it adds validation to ensure that settings cannot be misconfigured.
This commit back ports three commits related to enabling the simple connection strategy. Allow simple connection strategy to be configured (#49066) Currently the simple connection strategy only exists in the code. It cannot be configured. This commit moves in the direction of allowing it to be configured. It introduces settings for the addresses and socket count. Additionally it introduces new settings for the sniff strategy so that the more generic number of connections and seed node settings can be deprecated. The simple settings are not yet registered as the registration is dependent on follow-up work to validate the settings. Ensure at least 1 seed configured in remote test (#49389) This fixes #49384. Currently when we select a random subset of seed nodes from a list, it is possible for 0 seeds to be selected. This test depends on at least 1 seed being selected. Add the simple strategy to cluster settings (#49414) This is related to #49067. This commit adds the simple connection strategy settings and strategy mode setting to the cluster settings registry. With these changes, the simple connection mode can be used. Additionally, it adds validation to ensure that settings cannot be misconfigured.
This is related to elastic#49067. As part of this work a new sniff number of node connections setting, a simple addresses setting, and a simple number of sockets setting have been added. This commit ensures that these settings are properly hooked up to support dynamic updates.
This is related to #49067. As part of this work a new sniff number of node connections setting, a simple addresses setting, and a simple number of sockets setting have been added. This commit ensures that these settings are properly hooked up to support dynamic updates.
This is related to elastic#49067. As part of this work a new sniff number of node connections setting, a simple addresses setting, and a simple number of sockets setting have been added. This commit ensures that these settings are properly hooked up to support dynamic updates.
This is related to #49067. As part of this work a new sniff number of node connections setting, a simple addresses setting, and a simple number of sockets setting have been added. This commit ensures that these settings are properly hooked up to support dynamic updates.
This is related to elastic#49067. As part of this work a new sniff number of node connections setting, a simple addresses setting, and a simple number of sockets setting have been added. This commit ensures that these settings are properly hooked up to support dynamic updates.
Adds more tests for the new "proxy" remote cluster connection mode, using a Docker-based setup, as well as testing SNI-based routing using HAProxy. - Checks that the new proxy mode can work in situations where the publish host of the nodes in the remote cluster are not routable. - Checks that the new proxy mode can work with clusters where nodes are hidden behind HAProxy. - Checks that the new proxy mode can work with clusters where nodes are hidden behind HAProxy, using SNI to identify the nodes/cluster behind HAProxy. Relates #49067
Adds more tests for the new "proxy" remote cluster connection mode, using a Docker-based setup, as well as testing SNI-based routing using HAProxy. - Checks that the new proxy mode can work in situations where the publish host of the nodes in the remote cluster are not routable. - Checks that the new proxy mode can work with clusters where nodes are hidden behind HAProxy. - Checks that the new proxy mode can work with clusters where nodes are hidden behind HAProxy, using SNI to identify the nodes/cluster behind HAProxy. Relates #49067
Adds more tests for the new "proxy" remote cluster connection mode, using a Docker-based setup, as well as testing SNI-based routing using HAProxy. - Checks that the new proxy mode can work in situations where the publish host of the nodes in the remote cluster are not routable. - Checks that the new proxy mode can work with clusters where nodes are hidden behind HAProxy. - Checks that the new proxy mode can work with clusters where nodes are hidden behind HAProxy, using SNI to identify the nodes/cluster behind HAProxy. Relates #49067
From : https://discuss.elastic.co/t/documentation-to-link-remote-clusters-using-proxy/220229 When I try to find "proxy" in 7.6.0 remote clusters documentation I can't find any occurence, it seems that the documentation is not yet updated according to this issue. The Usage section of this issue is unclear for me. I don't know where to begin to implement this. I have two clusters (localcluster_1 and remotecluster_2) on different locations running on Kubernetes deployed with ECK. Working fine.
|
This is related to elastic#49067.
The documentation for Elasticsearch in the process of being updated in #52779 for the next 7.6 did go live with the functionality described in this PR and can be configured using the above settings. The only two required settings are:
Similar to other remote cluster settings they can be configured in a yml file. However, those settings are limited to the node with the yml file. The most common mode of enablement for cluster wide remote connections is the settings update infrastructure. These specific settings are pretty low-level though. They essentially require that you have a proxy in between your two Elasticsearch clusters. I think in your specific case you are looking to enable this on ECK. ECK I know has started or completed work to use this proxy mode to integrate remote cluster connections. I'll ping @pebrc here as he might be able to give you some direction on the ECK side. |
@tbrooks8 I responded on the discuss forum post linked above. We have some preliminary documentation describing how to use the new functionality in our master branch https://www.elastic.co/guide/en/cloud-on-k8s/master/k8s-remote-clusters.html |
Would it make sense to align the naming for the remote cluster mode settings with the For example:
|
I just tried proxy mode and found out that it does not support My issue is that without this option, if some of remote clusters are offline, searches will fail. I am looking for option that will not break searches if some of remote clusters is not working. |
@tbrooks8 Can we close this? |
I will look into the final two outstanding tasks soon. And then close. |
Hi there - we are faced with an issue using this proxy technology in our ECE setup - as we have ALB's fronting our environments. I would like to suggest an alternative to providing a single Proxy - but instead enable the possibly to provide a list of proxies so that we gain high-availability across multiple regions without the need to setup an NLB to balance across multiple proxy nodes. Hope it makes sense. |
@IASecurity the proxy address is resolved afresh on each connection attempt so you can today provide multiple proxy addresses via DNS. That said, I can see why you might want Elasticsearch to handle multiple addresses itself so this seems like a reasonable feature request. Would you open a separate issue to suggest it? |
You sir - have just saved us a lot of work and money :) - Not only do we not have to create more IaC for components and security groups ets. - but we also get to keep the 25Gbit connection speeds between our EC2, by not having to go over a NLB. I just tried setting a DNS record up across 3 Proxy nodes - and that does work! |
Thanks for this: #82366 |
Is there any documentation on how to configure the proxy? Other than TCP pass-through so that mTLS continues to function, how do we do health checking? Is a simple |
@tbrooks8 anything left here or can we close this one now? |
Summary
We are interested in implementing a proxy connection mode for remote cluster connections. Instead of sniffing the remote cluster and connecting directly to specific nodes, this connection mode will open single channel connections to the remote cluster with no regard for the identity of the remote node. This will allow an intermediate proxy to make the routing decisions.
Tasks
7.6.1/7.7
Future:
Usage
To enable this mode the following settings must be configured:
The text was updated successfully, but these errors were encountered: