Skip to content
Cristi Pufu edited this page Nov 28, 2016 · 7 revisions

OpenStack Swift standalone setup guide

Concepts

General configuration

Proxy node configuration

Storage node configuration

Testing configuration

Adding a new proxy node

Adding a new storage node

Replacing a storage disk

Achieve high availability and scalability with OpenStack Swift and SwiftClient

OpenStack Swift is an eventually consistent storage system designed to scale horizontally without any single point of failure. All objects are stored with multiple copies and are replicated across zones and regions making Swift withstand failures in storage and network hardware. Swift can be used as a stand-alone distributed storage system on top of Linux without the need of expensive hardware solutions like NAS or SAN. Data is stored and served directly over HTTP making Swift the ideal solution when dealing with applications running in Docker containers.

Lets assume you have an ASP.NET 5 MVC app that needs to manage documents, photos and video files uploaded by users. In order for your application to achieve HA and scalability you can host the app inside a container and launch a minimum of two containers with a load balancer in front. Now days this can be easily done with Docker and Nginx on Ubuntu Server.

The same architecture can be applied to the storage with Swift. You'll need to set up a minimum of two swift servers, each containing a proxy and a storage node. Ideally these servers or VMs should be hosted in different regions/datacenters. Adding both swift proxy endpoints to SwfitClient config will ensure that any app instance will share the same storage and if a swift node becomes unreachable due to a restart or network failure all app instances will silently fail-over to the 2nd node.

Below is a schematic view of our HA setup:

Cluster