SYSTEM AND METHOD FOR AN OBJECT STORE PRE-CHECK

In some aspects, a non-transitory computer readable medium includes instructions when executed by a processor cause the processor to configure an object store, execute a pre-check of the configuration of the object store, provide an indication that the pre-check has passed, and responsive to providing the indication that the pre-check has passed, permit a selection to deploy the object store.

BACKGROUND

Virtual computing systems are widely used in a variety of applications. Virtual computing systems include one or more host machines running one or more virtual machines and other entities (e.g., containers) concurrently. Modern virtual computing systems allow several operating systems and several software applications to be safely run at the same time, thereby increasing resource utilization and performance efficiency. However, the present-day virtual computing systems have limitations due to their configuration and the way they operate.

SUMMARY

The disclosure relates generally to object storage and, more particularly, to systems and methods for an object store deployment pre-check.

In some aspects, a non-transitory computer readable medium includes instructions when executed by a processor cause the processor to configure an object store, execute a pre-check of the configuration of the object store, provide an indication that the pre-check has passed, and responsive to providing the indication that the pre-check has passed, permit a selection to deploy the object store.

In some aspects, an apparatus includes a processor and memory. In some embodiments, the memory includes instructions that, when executed by the processor, cause the apparatus to configure an object store, execute a pre-check of the configuration of the object store, provide an indication that the pre-check has passed, and responsive to providing the indication that the pre-check has passed, permit a selection to deploy the object store.

In some aspects, a computer-implemented method includes configuring an object store, executing a pre-check of the configuration of the object store, providing an indication that the pre-check has passed, and responsive to providing the indication that the pre-check has passed, permitting a selection to deploy the object store.

DETAILED DESCRIPTION

In some embodiments, an object store deployment consumes significant time (e.g., greater than 30 minutes) only to fail in the middle of, or at the end of, the deployment. In some embodiments, an object store configuration or network port reachability can only be checked mid-deployment. What is needed is a tool to validate an object store environment.

Disclosed herein are embodiments of a system and method for executing a pre-check of an object store deployment. The system and method can collect input for deployment. The system and method can run pre-checks on a central manager. In response to a check failing, system and method can modify firewall settings, fix errors, and repeat the pre-check. The system and method can deploy the object store using a user interface or a command line interface.

Advantageously, in one aspect, the system and method improve the user experience while deploying the object store. In some embodiments, the system and method reduce deployment wait time and simplify troubleshooting by catching misconfigurations before the object store deployment is initialized.

FIG.1is an example block diagram of a computer system100, in accordance with some embodiments of the present disclosure. The computer system100includes one or more clusters such as cluster102. The cluster102may refer to a cluster of (e.g., a number of) hosts (e.g., host machines, machines, nodes, etc.) or a cluster of workloads. The cluster102includes one or more workloads such as the workload104. The workload104can be one of a virtual machine (VM), a container, a microservice, etc. The cluster102includes a number of resources such as resource106. The resources can be distributed across the number of hosts of the cluster102. The resource106can be a storage (e.g., storage and/or memory) resource, a compute (e.g., central processing unit (CPU) and/or memory) resource, or a network resource.

The cluster102includes a hypervisor108. The hypervisor108can be a type-1 hypervisor, a type-2 hypervisor, a hypervisor from any of various vendors, etc. The workload104runs one or more services/applications/operating systems by using the resource106, which is virtualized through the hypervisor108as a virtual resource (e.g., virtual disk, virtual CPU, virtual memory, etc.). In some embodiments, the cluster102is a hyper-converged infrastructure (HCl) cluster. In some embodiments, each host as a hypervisor such as the hypervisor108. An HCl cluster is a cluster in which a number of disparate resources (e.g., storage, compute, and network resources) are deployed, allocated, or otherwise managed, by a single component. The102cluster can be located in one data center (e.g., on-premises), in a cloud, across multiple data centers, multiple clouds or across a combination of one or more data centers and one or more clouds (e.g., hybrid cloud).

The computer system100includes one or more object stores such as the object store110. A workload in a virtualized environment can be configured to run software-defined object storage service. Unlike file or block storage, the object storage architecture model handles data as objects in an unstructured manner. Unstructured data is data organized in a flat hierarchy, such as a bucket, with no directory structures, recursion, sub-folders, or traditional blocks. The buckets can be backed by resources such as the resource106through the hypervisor108. The buckets can be accessed with an endpoint such a uniform resource locator (URL).

In some embodiments, each object in the object store110comprises the data, its metadata, and a unique key used to identify the object. The metadata used in object storage may contain granular information about the objects it describes, giving flexibility and greater control when managing and manipulating an object at any point in its life cycle. Other storage solutions such as file systems and relational databases typically have higher-level metadata, which situates the additional handling of contextual information about the data in the high-level applications that use that data. In some embodiments, an object is immutable data. In some embodiments, an object is unstructured data. An object can be a file, a document, a spreadsheet, a video, data, metadata, etc.

The object store110may perform various operations on objects and buckets such as deploying (e.g., creating) buckets, adding objects to the buckets, looking up the objects, versioning the objects, tagging the objects, maintaining the lifecycle of the objects, controlling access of the objects, deleting the objects, deleting the buckets, and the like, using one or more application programming interfaces (APIs). This type of storage architecture may provide greater accessibility and velocity when handling the data because it removes the complexities and overhead introduced by multiple layers of formatting.

In some embodiments, the object store110includes a number of workers such as the worker112. The worker112services API requests by executing tasks associated with the API requests. The object store includes a number of load balancers such as the load balancer114. The load balancer114allocate tasks to (e.g., schedules tasks for) workers based on resource capacity of each of the workers. In some embodiments, each of the worker112and the load balancer114is a VM, a container, or a (e.g., containerized) microservice. In some embodiments, the object store110includes an identity and access management (IAM) service116. The IAM service116manages security (e.g., authentication, authorization) of the object store110. In some embodiments, the IAM service116uses attribute-based access control (ABAC).

The computer system100includes a central manager118. The central manager118manages a number of clusters (e.g., and a number of VMs thereon) across separate physical locations. The central manager118can be deployed in a VM or in a distributed cluster of VMs, in which each VM runs a central manager instance of the central manager118.

The central manager118includes a pre-check service120. The pre-check service120checks (e.g., validates, tests, etc.) a configuration of an object store before the object store is deployed. In some embodiments, the central manager118includes a microservices platform (MSP) controller122. The MSP controller122can manage microservices running in, or associated with the object store110.

In some embodiments, the central manager118includes a number of lightweight VMs such as the lightweight VM124. The lightweight VM124may be referred to as a dummy VM. In some embodiments, the lightweight VM124is deployed by the pre-check service120in order to perform pre-check functions which are described with respect toFIG.2. In some embodiments, the lightweight VM124is a VM with a small image from which the VM boots or loads. For example, the image has a size less than 1 GB, 100 MB, or 10 MB. In some embodiments, the image is stored in a cache. In some embodiments, the cache is a content-based read cache (CBRC). In some embodiments, the cache stores the image and metadata about the image such as a block, offset, or other location information of the image. In some embodiments, the lightweight VM124uses proprietary APIs or remote procedure calls (RPCs).

The central manager118includes a domain name system (DNS) server126, a network time protocol (NTP) server128, and a client130. The DNS server can translate human readable domain names to machine readable internet protocol (IP) addresses. The NTP server can synchronize computer clock times in the computer system100. The client130may be an endpoint for a cloud-based object storage service.

The computer system100includes an internal network132. The internal network132may be referred to as a storage network. In some embodiments, the cluster102, the object store110, the central manager118, the DNS server126, and the NTP server128are coupled through the internal network132, although more or less components may be coupled through the internal network132while remaining in the scope of the present disclosure. The computer system100includes an external network134. The external network134may be referred to as a client access network. In some embodiments, the object store110, the central manager118, the DNS server126, the NTP server128, and the client130are coupled through the external network134, although more or less components may be coupled through the external network134while remaining in the scope of the present disclosure.

In some embodiments, the central manager118deploys the lightweight VM124on one of the components coupled to the internal network132or the external network134. The lightweight VM124can send a request to another component in the internal network132and wait for an expected response. In some embodiments, if the expected response is received within a first time interval, the lightweight VM124determines that there is connectivity between the component and the another component. In some embodiments, the central manager118deploys the lightweight VM124on multiple components. In some embodiments, the central manager118deploys the lightweight VM124on at least one component coupled to the internal network132and at least one component coupled to the external network134. In some embodiments, the lightweight VM124is deployed using a plugin (e.g., a selectable plugin).

Referring now toFIG.2, a block diagram of the pre-check service120is illustrated, in accordance with some embodiments of the present disclosure. The pre-check service120includes a processor202. Processor202is configured to execute computer program code, scripts, applications, services, or plugins, such as a predeployment port check210, a predeployment compatibility check212, and a user interface (UI) service214, encoded in computer-readable storage medium204(referred to herein as storage medium204). In one or more embodiments, processor202is a central processing unit (CPU), a multi-processor, a distributed processing system, an application specific integrated circuit (ASIC), and/or a suitable processing unit. In some embodiments, the processor202is a virtual representation of one of the compute resources (e.g. the resource106) ofFIG.1.

The pre-check service120includes the storage medium204. In one or more embodiments, the storage medium204is an electronic, magnetic, optical, electromagnetic, infrared, and/or a semiconductor system (or apparatus or device). For example, the storage medium204includes a semiconductor or solid-state memory, a random access memory (RAM), a read-only memory (ROM), a magnetic tape, a removable computer diskette, a rigid magnetic disk, and/or an optical disk. In some embodiments, the storage medium204is a virtual representation of one of the storage resources (e.g. the resource106) ofFIG.1.

The storage medium204includes the predeployment port check210. The predeployment port check210determines (e.g., checks, tests) whether there is connectivity between a pair of ports. The first port can be for a first application and the second port can be for a second application. In some embodiments, the predeployment port check210determines connectivity between a pair of ports on the internal network132. For example, the predeployment port check210determines internal network connectivity between the central manager118and the cluster102, between the central manager118and the object store110, between the central manager118and the DNS server126, and between the central manager118and the NTP server128.

In some embodiments, the predeployment port check210determines connectivity between a pair of ports on the external network134. For example, the predeployment port check210determines external network connectivity between the central manager118and the object store110, between the central manager118and the DNS server126, between the central manager118and the NTP server128, and between the central manager118and the client130.

The storage medium204includes the predeployment compatibility check212. The predeployment compatibility check212determines whether different components in the computer system100are compatible with each other. For example, the predeployment compatibility check212determines whether a version of the object store110is compatible with a version of the central manager118, whether a version of the object store110is compatible with a version of the cluster102, and whether a version of the cluster102is compatible with a version of the central manager118. In some embodiments, the predeployment compatibility check212determines whether an operating system of the cluster102is in installed state. In some embodiments, the operating system of the cluster102is running in the workload104or the hypervisor108.

The predeployment compatibility check212determines a health status of one or more components in the computer system100. For example, the predeployment compatibility check212determines a health status of the MSP controller122and the IAM service116. In some embodiments, the predeployment compatibility check212determines a health status by sending an API request or RPC request to an endpoint (e.g., port of a component). The endpoint may be used or dedicated for health queries. In some embodiments, if the predeployment compatibility check212receives a first response (e.g., a200response) from the endpoint within a first time interval, the predeployment compatibility check212determines that the component associated with the endpoint has a satisfactory health status (e.g., is healthy). In some embodiments, if the predeployment compatibility check212receives a second response, or no response at all, from the endpoint within a first time interval, the predeployment compatibility check212determines that the component associated with the endpoint has an unsatisfactory health status (e.g., is not healthy).

In some embodiments, a number of the services including the predeployment port check210and the predeployment compatibility check212are selectable plugins to the pre-check service120(e.g., pre-check framework). In some embodiments, a user or administrator running the pre-check service120can choose which of the number of services/plugins to run as part of the pre-check service120.

FIG.3Aillustrates a display300, in accordance with some embodiments. The storage medium204includes the UI service214. The UI service214provides an interface for a user or administrator to pre-check an object store deployment. In some embodiments, the UI service214provides the display300to configure an object store such as the object store110. In some embodiments, the display300includes fields for inputting at least one of an object store name, an object store domain name, a cluster name, a number of worker nodes, a storage or memory amount corresponding to the number of worker nodes, a number of load balancer nodes, or a storage or memory amount corresponding to the number of load balancer nodes. In some embodiments, the UI service214receives a first user input. The first user input may be a selection/input for configuring the object store.

FIG.3Billustrates a display320, in accordance with some embodiments. In some embodiments, the UI service214provides the display320to configure an object store. In some embodiments, the UI service214provides the display320to execute a pre-check of the object store based on the first user input. In some embodiments, the UI service214receives a second user input. The second user input may be a selection/input for finalizing the configuration and for beginning execution of the pre-check. Display320may be provided after display300. In some embodiments, the display320includes fields for inputting at least one of a public network name, a public network IP address, a storage network name, or a storage network IP address. In some embodiments, the display320displays information inputted in either display300or display320.

FIG.3Cillustrates a display340, in accordance with some embodiments. In some embodiments, the UI service214provides the display340to show progress of an execution of a pre-check of the object store based on the first user input. In some embodiments, the display340shows a percentage of the pre-check that is completed.

FIG.3Dillustrates a display360, in accordance with some embodiments. In some embodiments, the UI service214provides the display360that indicates that the pre-check has failed based on the first and second user inputs. In some embodiments, the display360shows the results of the failed pre-check. In some embodiments, the UI service214receives a third user input. The third user input may be a selection to return to the display300to reconfigure the object store. In some embodiments, the UI receive may receive a number of inputs to modify firewall settings, fix errors, or to otherwise modify or fix the object store configuration in response to determining that the pre-check failed.

FIG.3Eillustrates a display370, in accordance with some embodiments. In some embodiments, the UI service214provides the display370that indicates that the pre-check has passed based on the first and second user inputs. In some embodiments, the display370shows the results of the passed pre-check.

FIG.3Fillustrates a display380, in accordance with some embodiments. In some embodiments, the UI service214provides the display380to deploy the object store. In some embodiments, the display380is based on indicating that the pre-check has passed. In some embodiments, the UI service214receives a fourth user input. The fourth user input may be a selection for deploying the object store.

FIG.3Gillustrates a display390, in accordance with some embodiments. In some embodiments, the UI service214provides the display390to show progress of deploying the object store. In some embodiments, the display390shows a percentage of the object deployment that is completed.

Referring back toFIG.2, in some embodiments, the pre-check service120includes a network interface206. The network interface206allows the pre-check service120communicate with other components of the computer system100. The network interface206includes wireless network interfaces such as BLUETOOTH, WIFI, Global System for Mobile Communications (GSM), wideband code division multiple access (WCDMA), Long-Term Evolution (LTE), or 5G; or wired network interfaces such as ETHERNET or Universal serial bus (USB).

In some embodiments, the pre-check service120includes a bus208. The bus208is coupled to, and allows communication between, the processor202, the computer-readable storage medium204, and the network interface206. In some embodiments, the bus208is a number of wires, optical fiber, a high-speed bus, etc.

Referring now toFIG.4, a flowchart of an example method400of performing a pre-check is illustrated, in accordance with some embodiments of the present disclosure. The method400may be implemented using, or performed by, the computer system100, one or more components of the computer system100, or a processor associated with computer system100or the one or more components of computer system100. Additional, fewer, or different operations may be performed in the method400depending on the embodiment.

In brief overview, in some embodiments, a processor configure an object store (at operation410), executes a pre-check of the configuration of the object store (at operation420), provides an indication that the pre-check has passed (at operation430), and, responsive to providing the indication that the pre-check has passed, permits a selection to deploy the object store (at operation410).

In greater detail, at operation410, in some embodiments, the processor configures an object store. In some embodiments, the processor selects a number of compute resources (e.g., the resource106), a memory or storage amount associated with the number of compute resources, a storage network (e.g., the internal network132), a public network (e.g., the external network134), and an IP address for each of the storage network and public network. In some embodiments, the processor selects a number of workers (e.g., the worker112) and a number of load balancers (e.g., the load balancer114). In some embodiments, the processor selects an object store name, a domain name, and a cluster name.

At operation420, in some embodiments, the processor executes a pre-check of the configuration of the object store. In some embodiments, the processor determines (e.g., checks, tests) whether there is connectivity between a number of ports (e.g., a port for the central manager118, a port for the cluster102, a port for the object store110, a port for the DNS server126, a port for the NTP server128, a port for the client130). In some embodiments, the ports are connected in an internal network (e.g., the internal network132) or an external network (e.g., the external network134).

In some embodiments, the processor executes, using a lightweight VM (e.g., the lightweight VM124), a pre-check of the configuration of the object store. In some embodiments, the lightweight VM is a VM with an image from which the VM boots or loads, wherein the image has a size smaller than a predetermined size (e.g., 1 GB, 100 MB, or 10 MB). In some embodiments, the cache is a CBRC. In some embodiments, the cache stores the image and metadata about the image such as a block, offset, or other location information of the image.

At operation430, in some embodiments, the processor, the processor provides an indication that the pre-check has passed. In some embodiments, the indication that the pre-check is provided through a UI or a command line interface (CLI). In some embodiments, the processor provides an indication that the pre-check has failed.

At operation440, in some embodiments, responsive to providing the indication that the pre-check has passed, the processor permits a selection to deploy the object store. In some embodiments, the processor provides a selection to deploy the object store through a UI or CLI. In some embodiments, responsive to providing the indication that the pre-check has failed, the processor does not permit a selection (e.g., restricts a user from making the selection) to deploy the object store.

Each of the components (e.g., elements, entities) of the computer system100(e.g., the cluster102, the object store110, the worker112, the load balancer114, the IAM service116, the central manager118, the pre-check service120, the MSP controller122, the DNS server126, and the NTP server128), is implemented using hardware, software, or a combination of hardware or software, in one or more embodiments. Each of the components of the computer system100may be a processor with instructions or an apparatus/device (e.g., server) including a processor with instructions, in some embodiments. Each of the components of the computer system100can include any application, program, library, script, task, service, process, plugin, or any type and form of executable instructions executed by one or more processors, in one or more embodiments. Each of the one or more processors is hardware, in some embodiments. The instructions may be stored on one or more computer readable and/or executable storage media including non-transitory storage media.

It is understood that the embodiments described in herein with respect to a component (e.g., cluster102, workload104, resource106, the object store110, the lightweight VM124) can apply to all of the components of that type (e.g., the number of clusters, the number of workloads, the number of resources, the number of object stores, the number of lightweight VMs, respectively). A first instance of the component can be one embodiment and a second instance of the component can be a different embodiment. For example, a first resource can be storage resource and a second resource can be a CPU resource.