| <?xml version='1.0' encoding='utf-8' ?> |
| <!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ |
| <!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent"> |
| %BOOK_ENTITIES; |
| ]> |
| <!-- Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| http://www.apache.org/licenses/LICENSE-2.0 |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| <section id="castor-with-cs"> |
| <title>Using the CAStor Back-end Storage with &PRODUCT;</title> |
| <para>This section describes how to use a CAStor cluster as the back-end storage system for a |
| &PRODUCT; S3 front-end. The CAStor back-end storage for &PRODUCT; extends the existing storage |
| classes and allows the storage configuration attribute to point to a CAStor cluster.</para> |
| <para>This feature makes use of the &PRODUCT; server's local disk to spool files before writing |
| them to CAStor when handling the PUT operations. However, a file must be successfully written |
| into the CAStor cluster prior to the return of a success code to the S3 client to ensure that |
| the transaction outcome is correctly reported.</para> |
| <note> |
| <para>The S3 multipart file upload is not supported in this release. You are prompted with |
| proper error message if a multipart upload is attempted.</para> |
| </note> |
| <para>To configure CAStor:</para> |
| <orderedlist> |
| <listitem> |
| <para>Install &PRODUCT; by following the instructions given in the INSTALL.txt file.</para> |
| <note> |
| <para>You can use the S3 storage system in &PRODUCT; without setting up and installing the |
| compute components.</para> |
| </note> |
| </listitem> |
| <listitem> |
| <para>Enable the S3 API by setting "enable.s3.api = true" in the Global parameter section in |
| the UI and register a user.</para> |
| <para>For more information, see <ulink |
| url="https://cwiki.apache.org/CLOUDSTACK/s3-api-in-cloudstack.html">S3 API in |
| &PRODUCT;</ulink>.</para> |
| </listitem> |
| <listitem> |
| <para>Edit the cloud-bridge.properties file and modify the "storage.root" parameter.</para> |
| <orderedlist numeration="loweralpha"> |
| <listitem> |
| <para>Set "storage.root" to the key word "castor".</para> |
| </listitem> |
| <listitem> |
| <para>Specify a CAStor tenant domain to which content is written. If the domain is not |
| specified, the CAStor default domain, specified by the "cluster" parameter in CAStor's |
| node.cfg file, will be used.</para> |
| </listitem> |
| <listitem> |
| <para condition="">Specify a list of node IP addresses, or set "zeroconf" and the cluster |
| name. When using a static IP list with a large cluster, it is not necessary to include |
| every node, only a few is required to initialize the client software.</para> |
| <para>For example:</para> |
| <programlisting>storage.root=castor domain=cloudstack 10.1.1.51 10.1.1.52 10.1.1.53</programlisting> |
| <para>In this example, the configuration file directs &PRODUCT; to write the S3 files to |
| CAStor instead of to a file system, where the CAStor domain name is cloudstack, and the |
| CAStor node IP addresses are those listed.</para> |
| </listitem> |
| <listitem> |
| <para>(Optional) The last value is a port number on which to communicate with the CAStor |
| cluster. If not specified, the default is 80.</para> |
| <programlisting>#Static IP list with optional port |
| storage.root=castor domain=cloudstack 10.1.1.51 10.1.1.52 10.1.1.53 80 |
| #Zeroconf locator for cluster named "castor.example.com" |
| storage.root=castor domain=cloudstack zeroconf=castor.example.com</programlisting> |
| </listitem> |
| </orderedlist> |
| </listitem> |
| <listitem> |
| <para>Create the tenant domain within the CAStor storage cluster. If you omit this step before |
| attempting to store content, you will get HTTP 412 errors in the awsapi.log.</para> |
| </listitem> |
| </orderedlist> |
| </section> |