Deploying SOSS in the Cloud

Overview of Deploying SOSS in the Cloud

Version 5.0 of ScaleOut StateServer introduces the ability to deploy an in-memory data grid in public cloud computing environments. Supported public clouds include Amazon EC2 and Microsoft Azure. Running ScaleOut StateServer in a cloud environment lets you create a highly-scalable, in-memory data grid to hold very large data sets and to enable fast, parallel analysis. Cloud-based deployments also incur zero upfront hardware costs, minimize IT support, and enable on-demand scaling. Additionally, running ScaleOut StateServer on Amazon EC2 allows you to take advantage of cost-effective, pay-as-you-go pricing, so you pay only for the resources you need while allowing flexibility during periods of atypically high or low load.

In a typical cloud deployment, ScaleOut StateServer runs as a set of dedicated virtual servers that form an in-memory data grid. A client application runs as a separate set of virtual servers which connect to ScaleOut StateServer as remote clients. Note that the in-memory data grid can be scaled by adding virtual servers to match the needs of your application. The in-memory data grid can be securely managed by running the management tools either within the cloud environment or from an on-premise workstation. The following diagram depicts this configuration:

images/diagrams/cloud_deployment.png

Remote clients also can be deployed on-premise and access a cloud-based deployment of ScaleOut StateServer. However, this configuration can incur high access latency and should only be used in scenarios in which WAN delays can be tolerated. Instead, consider using ScaleOut GeoServer’s pull access mode to connect on-premise and cloud-based data grids and thereby minimize the effect of WAN delays.

Deployment Steps

Deploying ScaleOut StateServer in the cloud was designed to be as simple as possible. Full support for cloud deployment and management has been integrated into the ScaleOut Management Console. Alternatively, you can deploy ScaleOut StateServer using the management tools provided by the cloud vendors.

The general deployment steps are as follows. Specific steps for each cloud vendor are described in help topics for that vendor.

  • Create a subscription with the cloud vendor and obtain access credentials using the vendor’s management tools.
  • For Amazon EC2, license ScaleOut StateServer using the AWS Marketplace. For Microsoft Azure, license a subscription or obtain a perpetual license to ScaleOut StateServer from ScaleOut Software.
  • For Microsoft Azure, install the Microsoft Azure SDK, version 2.9, prior to installing ScaleOut StateServer on your management workstation. Two installation components are required to be installed from Microsoft Azure SDK: Microsoft Azure Authoring Tools and Microsoft Azure Libraries for .NET.
  • Install the ScaleOut StateServer Remote Client/Cloud Mgt. setup type on your management workstation. See Installation Steps for more details.
  • Using the ScaleOut Management Console or the soss.exe command-line program (see Command-line Control Programs), create a connection to the cloud vendor by entering the vendor’s access credentials.
  • Launch a named store with a specified number of virtual servers (also called instances) from the Management Console in Windows or from the soss_aws_actions.py Python script in Linux.
  • Add or terminate instances as needed to increase or decrease the size of your cloud-based in-memory data grid.
  • Manage your data grid as usual using the ScaleOut StateServer management tools.
  • Using the ScaleOut Management Console or the soss.exe command-line program (see Command-line Control Programs), record access credentials and a selected store in the soss_client_params.txt configuration file on your workstation.
  • Copy the soss_client_params.txt configuration file from your management workstation to client instances or remote systems so that clients can automatically connect to the selected store upon startup.
  • You can also use the ScaleOut.SOSS.AzureClient NuGet package to configure your Azure client application to use ScaleOut StateServer. See Overview of the ScaleOut.SOSS.AzureClient NuGet package for more details. The Nuget package will perform the following actions:

    • ScaleOut’s client libraries will be installed on your local system and references to those libraries will automatically be added to your project.
    • Client libraries will automatically be deployed with your project to Microsoft Azure.
  • Start your client application on all client instances or remote systems. They will connect to the in-memory data grid to store and access data and to perform parallel data analysis.

You optionally may specify various parameters for your cloud deployment, such as region, security information, and port numbers. However, in most cases, you can use the default values supplied by the Management Console.

[Note] Note

When you deploy ScaleOut StateServer in the cloud, you must assign it a store name. This name is used to distinguish multiple cloud deployments at the same cloud vendor. It may also be used by ScaleOut GeoServer to identify remote stores.

Accessing the Store from Clients and Management Tools

Remote clients and management tools can easily connect to a named ScaleOut StateServer store by using configuration information stored in the client parameters file, soss_client_params.txt. This information is automatically created and stored when the Management Console connects to a selected cloud-based store. It also can be explicitly created using the add_prov and select commands of the soss.exe command-line program (see Command-line Control Programs). The configuration information in the client parameters file consists of a store_access_info directive for each cloud-based store; multiple directives are allowed. In addition, a single selected_store directive identifies which cloud-based store should be accessed when the remote client starts running.

The client parameters file should be copied to all application servers accessing the store using ScaleOut StateServer’s remote client APIs. This enables all clients to access the selected cloud-based store.

When a client application or management tool starts up and attempts to connect to a cloud-based store, it determines from the client parameters file which store has been selected and then reads the access parameters needed to connect this store. It then calls a ScaleOut StateServer utility that downloads the IP addresses needed to connect to this store. Finally, it establishes a normal remote client connection to the cloud-based store.

[Note] Note

If no cloud-based store is selected and remote gateways are specified in the client parameters file, the client attempts to connect to an on-premise store using these gateways.

When accessing a cloud-based store, either the cloud’s public or private IP addresses must be used depending on where the client application runs. This choice is saved in the store’s store_access_info configuration information. If the application can make use of private IP addresses, they should be used instead of public IP addresses to reduce usage costs and/or optimize performance. Otherwise, the use of public IP addresses should be specified.