-
Notifications
You must be signed in to change notification settings - Fork 1.8k
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
[Feature Request] New index setting/property for toggling a remote store index as "writable warm” #12501
Comments
thanks @kotwanikunal, also posting some of the alternative options that can be considered: Alternatives consideredIndex creation and migrationUtilize a new dynamic property on index settings for tiering which can be set at index creation or be updated to trigger migration.
Tracking the migration Request:
This would require exposing transitionary statuses like CancelationAn alternative cancellation API can be added for convenience which will be useful mainly for admin operations so that a user can cancel/remove the tiering requests which are pending completion. Request: |
We would love to get feedback from the community for this: @andrross @sohami @reta @mch2 @shwetathareja @Bukhtawar @rohin |
Makes sene, intent should always be to take an extensible approach. |
With I would go with the |
Thanks for the proposal @kotwanikunal @neetikasinghal
|
@Bukhtawar thanks for your feedback.
|
@Bukhtawar Good points around the security consideration. These actions like tiering an index from hot to warm or vice versa are performed at index level and IMO will be more natural choice to keep it an index level action versus cluster level. For cluster admin one can define a role to provide access to this action on all the indices as needed. Coming to status API, this will again be at index level, as different user should be able to view the status of indices which they are managing. If there are multiple indices they are managing then a pattern based input can be provided and based on security role/permission configuration it will be allowed or rejected based on how pattern resolve. In this world as well, a cluster admin will have access to this API but for all the indices so it can see the cluster view.
Regarding
I think we can build index/shard level limits later as well. But one thing that will be useful is to see if we can configure an optional max limit on the space used by warm indices on a shared node setup. |
Thanks for the great write up around this feature, I like seeing the API calls and alternatives considered. I've got some very naïve question;
|
Thanks @peternied, please find the answers inline:
Read/write availability is ensured when the tier for an index is changed from hot to warm or warm to hot at all times.
Resource allocation will differ in terms of the disk usage or hot/warm.
It would be safe for universal read. It would be the choice of the customers to keep an index in hot/warm tier depending on their use-case. |
Thanks for the proposal @kotwanikunal @neetikasinghal Thinking more on the access pattern for tiering APIs or tier information
|
@neetikasinghal Following up on this - this feature won't support tiers other than hot/warm, or isn't in scope for the current plan? Or is this more of an OpenSearch core vs ISM plugin boundary? |
@peternied This is just not in the scope of current plan, however the API options presented above are extensible to support other tiers like cold in future. |
Is your feature request related to a problem? Please describe
The feature described below is related to #11703
Describe the solution you'd like
Background
Coming in from #11703 - A new mechanism is needed to configure the storage properties for an index, which can be used to modify the type of underlying node storage used by an index.
This mechanism should trigger a change on the index properties and should also provide the user with a mechanism to track the progress or cancel the operation.
Goals
Proposed Solution
How can the user create an index with the new properties?
The process to create an index with the new properties would utilize the existing
store
attribute on index settings.Simplified approach
This approach will auto configure properties of the
store
with predefined configuration for the corresponding tier.API:
**PUT** /<index_name>?tier=WARM
Body:
Expert user approach:
This approach can be used by expert users to define individual values for the corresponding tier properties on the store.
API:
**PUT** /<index_name>/
Body:
How can the user know the current tier attributes of an index?
API:
**GET** /<index_name>/_settings
On similar lines, we can also list indices with their current state as follows -
Request:
Sample Response: includes an extra tier parameter to show the tier of the index
How can the user migrate an existing index to a different tier?
The client will use a new, custom API to perform the migration as follows -
API:
POST
/<indexNameOrPattern>/_tier
OR
(Preferred) API:
POST
/<indexNameOrPattern>/_tier/_warm
How can the user track migrations for indexes?
This API would show the on-going or failed migrations across different tiers.
Request:
GET /_tiering/_status?source=hot&target=warm
GET /_tiering/{index}/_status?verbose=<true/false
OR
Preferred:
GET
/<indexNameOrPattern>/_tier?source=hot&target=warm
GET
/<indexNameOrPattern>/_tier?verbose=true/false
Sample Response:
How can the user cancel a migration?
The user can utilize the tiering APIs to cancel the migration by providing the original state of the index.
If there is a current hot to warm migration going on, in order to cancel the migration, the user can trigger a warm to hot migration and return to the original state.
API:
POST
/<indexNameOrPattern>/``_tier
OR
(Preferred) API:
POST
/<indexNameOrPattern>/_tier/_hot
Contributors: @kotwanikunal, @neetikasinghal
Related component
Search:Remote Search
The text was updated successfully, but these errors were encountered: