Cloud cluster storage resource autoscaler
Methods, systems, and computer program products herein provide operations or techniques for managing resource allocation in a data storage environment. According to aspects of the present disclosure, one or more storage nodes of hierarchy on a common hierarchy level are identified as a management group. For example, the one or more storage nodes of hierarchy may include one or more object storage daemons (OSDs) of a controlled replication under scalable hashing (CRUSH) group or the like. The resource utilization in a subset of the one or more storage nodes in the management group are monitored. Based on the monitored resource utilization, a processing device may determine respective scaling factors for allocating resources to the one or more storage nodes in the management group. The processing device may then adjust the resource allocation using the respective scaling factors in the one or more storage nodes.
1 . A method of managing resource allocation in a data storage environment, the method comprising:
identifying one or more storage nodes of hierarchy on a common hierarchy level as a management group;
monitoring, with an assigned autoscaler, resource utilization of processing resources and memory resources in a subset of the one or more storage nodes in the management group;
based on the monitored resource utilization in the subset of the one or more storage nodes, determining, by a processing device, a scaling factor for allocating resources to an unmonitored storage node in the management group, the unmonitored storage node being out of the subset and not monitored with the assigned autoscaler;
adjusting resources, in the subset of the one or more storage nodes using the autoscaler, wherein the resources do not idle and are scaled for processing tasks of the subset of the one or more storage nodes; and
adjusting the resource allocation using the scaling factor in the unmonitored storage node.
2 . The method of claim 1 , wherein the one or more storage nodes of hierarchy comprise one or more object storage daemons (OSDs) of a controlled replication under scalable hashing (CRUSH) group.
3 . The method of claim 2 , wherein the one or more OSDs are on the common hierarchy level of pods in the CRUSH group.
4 . The method of claim 1 , wherein determining the scaling factor comprises:
evaluating, by the autoscaler, a surplus or a deficit of resource utilization in the subset of the one or more storage nodes during adjustment; and
computing the scaling factor in view of a weight of the unmonitored storage node.
5 . The method of claim 1 , wherein the resource allocation comprises at least one of: a bandwidth for data processing, a share of a total computational capacity, a share of available memory resource, a portion of input and output bandwidth, or a share of communication bandwidth.
6 . The method of claim 5 , wherein adjusting the resource allocation further comprises:
adjusting the subset of the one or more storage nodes in the management group based on resources consumed on monitoring the resource allocation; or
adjusting the unmonitored storage node in the management group based on the resources consumed on monitoring the resource allocation.
7 . An apparatus for managing resource allocation in a data storage environment, the apparatus comprising:
a memory; and
a processing device operatively coupled to the memory, the processing device and the memory to:
identify one or more storage nodes of hierarchy on a common hierarchy level as a management group;
monitor, with an assigned autoscaler, resource utilization of processing resources and memory resources in a subset of the one or more storage nodes in the management group;
based on the monitored resource utilization in the subset of the one or more storage nodes, determine, by a processing device, a scaling factor for allocating resources to an unmonitored storage node in the management group, the unmonitored storage node being out of the subset and not monitored with the assigned autoscaler;
adjust resources, in the subset of the one or more storage nodes using the autoscaler, wherein the resources do not idle and are scaled for processing tasks of the subset of the one or more storage nodes; and
adjust the resource allocation using the scaling factor in the unmonitored storage node.
8 . The apparatus of claim 7 , wherein the one or more storage nodes of hierarchy comprise one or more object storage daemons (OSDs) of a controlled replication under scalable hashing (CRUSH) group.
9 . The apparatus of claim 8 , wherein the one or more OSDs are on the common hierarchy level of pods in the CRUSH group.
10 . The apparatus of claim 7 , wherein the processing device and the memory are to determine the scaling factor by:
evaluating, by the autoscaler, a surplus or a deficit of resource utilization in the subset of the one or more storage nodes during adjustment; and
computing the scaling factor in view of a weight of the unmonitored storage node.
11 . The apparatus of claim 7 , wherein the resource allocation comprises at least one of: a bandwidth for data processing, a share of a total computational capacity, a share of available memory resource, a portion of input and output bandwidth, or a share of communication bandwidth.
12 . The apparatus of claim 11 , wherein the processing device and the memory are to adjust the resource allocation by:
adjusting the subset of the one or more storage nodes in the management group based on resources consumed on monitoring the resource allocation; or
adjusting the unmonitored storage node in the management group based on the resources consumed on monitoring the resource allocation.
13 . A non-transitory computer-readable storage medium having instructions stored thereon that, when executed by a processing device to manage resource allocation in a data storage environment, cause the processing device to:
identify one or more storage nodes of hierarchy on a common hierarchy level as a management group;
monitor, with an assigned autoscaler, resource utilization of processing resources and memory resources in a subset of the one or more storage nodes in the management group;
based on the monitored resource utilization in the subset of the one or more storage nodes, determine, by a processing device, a scaling factor for allocating resources to an unmonitored storage node in the management group, the unmonitored storage node being out of the subset and not monitored with the assigned autoscaler;
adjust resources, in the subset of the one or more storage nodes using the autoscaler, wherein the resources do not idle and are scaled for processing tasks of the subset of the one or more storage nodes; and
adjust the resource allocation using the scaling factor in the unmonitored storage node.
14 . The non-transitory computer-readable storage medium of claim 13 , wherein the one or more storage nodes of hierarchy comprise one or more object storage daemons (OSDs) of a controlled replication under scalable hashing (CRUSH) group, wherein the one or more OSDs are on the common hierarchy level of pods in the CRUSH group.
15 . The non-transitory computer-readable storage medium of claim 13 , wherein to determine the scaling factor is to:
evaluate, by the autoscaler, a surplus or a deficit of resource utilization in the subset of the one or more storage nodes during adjustment; and
compute the scaling factor in view of a weight of the unmonitored storage node.
16 . The non-transitory computer-readable storage medium of claim 13 , wherein the resource allocation comprises at least one of: a bandwidth for data processing, a share of a total computational capacity, a share of available memory resource, a portion of input and output bandwidth, or a share of communication bandwidth.
17 . The non-transitory computer-readable storage medium of claim 16 , wherein to adjust the resource allocation further comprises:
to adjust the subset of the one or more storage nodes in the management group based on resources consumed on monitoring the resource allocation; or
to adjust the unmonitored storage node in the management group based on the resources consumed on monitoring the resource allocation.