1. Welcome
1.1. Product overview
LiveData for MultiCloud provides LiveData replication across different types of object storage services. It combines the functionality and, going forward, replaces the Plugins for Live S3 and Live Azure Blob Storage. It brings the added benefit of support for the coordination of activities between Fusion zones that reference underlying object storage services that do not use the same interface in each zone.
1.2. Documentation guide
This guide contains the following:
- Welcome
-
This chapter introduces this user guide and provides help with how to use it.
- Release Notes
-
Details the latest software release, covering new features, fixes and known issues to be aware of.
- Concepts
-
Explains how LiveData for MultiCloud through WANdisco Fusion uses WANdisco’s LiveData platform.
- Installation
-
Covers the steps required to install and set up LiveData for MultiCloud into a WANdisco Fusion deployment.
- Operation
-
The steps required to run, reconfigure and troubleshoot LiveData for MultiCloud.
- Reference
-
Additional LiveData for MultiCloud documentation, including documentation for the available REST API.
1.2.1. Symbols in the documentation
In the guide we highlight types of information using the following call outs:
The alert symbol highlights important information. |
The STOP symbol cautions you against doing something. |
Tips are principles or practices that you’ll benefit from knowing or using. |
The i symbol shows where you can find more information, such as in our online Knowledgebase. |
1.3. Contact support
See our online Knowledgebase which contains updates and more information.
If you need more help raise a case on our support website.
1.4. Give feedback
If you find an error or if you think some information needs improving, raise a case on our support website or email docs@wandisco.com.
2. Release Notes
2.1. LiveData for MultiCloud 2.0.1 Build 379
12 March 2019
WANdisco is pleased to present a minor update of LiveData for MultiCloud. This 2.0.1 release provides full functionality for Amazon S3 and Azure Blob Storage replication in a Live Data environment, with consistent replication of S3 objects and Azure Blob among multiple buckets and containers, and features to perform consistency checks and to bring buckets and containers to a consistent state for initial transfer of data.
The LiveData for MultiCloud 2.0.1 release is entirely focussed on bug fixes and performance improvements.
LiveData for MultiCloud 2.0.1 supports the latest version of WANdisco Fusion, 2.12.4.
2.1.1. System Requirements
Before installing or upgrading, ensure that your systems, software, and hardware meet the requirements. The requirements for WANdisco Fusion are found in the prerequisites checklist in the user guide.
LiveData for MultiCloud is tested on a limited number of operating systems then the main product. These are:
-
RHEL 6 x86_64
-
RHEL 7 x86_64
-
Oracle Linux 6 x86_64
-
Oracle Linux 7 x86_64
-
CentOS 6 x86_64
-
CentOS 7 x86_64
-
Ubuntu 16.04LTS
-
SLES 11 x86_64
-
SLES 12 x86_64
Unsupported:
-
Ubuntu 14.04LTS
-
Ubuntu 18.04LTS
2.1.2. Resolved Issues
-
WD-MXC-642 - S3 object storage class and ACLs are not replicated.
-
WD-MXC-650, WD-MXC-778 - Large numbers of parallel uploads could cause the proxy to run out of threads. This is now configurable.
-
WD-MXC-652 - Outbound connections only configurations were not respected.
-
WD-MXC-682 - Performance optimization for upload of small files.
-
WD-MXC-719 - Networking settings to enable/disable direct pull apply to the whole rule.
-
WD-MXC-731 - Resolving conflicting dependencies.
-
WD-MXC-738 - Replication page doesn’t display replication rule.
-
WD-MXC-764 - Don’t coordinate requests which resulted in non-success.
-
WD-MXC-794 - HTTPS requests are proxied to HTTP for non replicated buckets.
-
WD-MXC-800 - Not all big files were replicated when IHC pull is enabled.
2.1.3. Other Improvements
-
WD-MXC-683 - Object deletion from AWS Java SDK not replicated.
-
WD-MXC-718 - Proxy responds 403 SignatureDoesNotMatch to some S3 requests.
-
WD-MXC-732 - Use version id to improve behavior with S3 eventual consistency.
-
WD-MXC-744 - Disabled list object V2 support for Ceph Mimic.
-
WD-MXC-755 - Requests which originated from neither S3 nor Azure clients failed.
-
WD-MXC-757 - Replication doesn’t work on Ubuntu 16 MultiCloud installation.
-
WD-MXC-763 - Object tagging not replicated from Ceph to AWS S3.
-
WD-MXC-773 - Maximum stream buffer size configured for IHC pull.
-
WD-MXC-775 - Repair doesn’t work in vbucket with direct pull disabled.
-
WD-MXC-781 - Race condition which could have led to objects/blobs not being replicated.
-
WD-MXC-799 - S3 POST Object not replicated.
-
WD-MXC-634 - Repair does not work for blobs of type append or page.
-
WD-MXC-651 - Wrongly excluded /.* for both types of Oracle Object Storage.
-
WD-MXC-679 - Create StorageDriver needs to be synchronized.
-
WD-MXC-695 - Proxy responds with Internal Server Error to unsupported S3 operations requests.
-
WD-MXC-697 - Bucket API operation does not work between two replicated OOS Classic buckets.
-
WD-MXC-698 - IBM COS - AWS S3 repair fails when direct pull is disabled.
-
WD-MXC-702 - Using Minio + local storage - delete object fails via proxy.
-
WD-MXC-712 - Logging the storage connection string should not print the access key.
-
WD-MXC-717 - Azure download/upload is using S3 constant for part of a calculation.
-
WD-MXC-743 - Don’t log error message if the cc task is not found.
-
WD-MXC-751 - Proxy duplicates log entries for requests.
-
WD-MXC-758 - Allow inbound and outbound connections by default.
-
WD-MXC-765 - POST Object causes NPE.
-
WD-MXC-769 - Filter out unrelated request headers.
-
WD-MXC-770 - Validate features for Ceph Mimic provider.
-
WD-MXC-774 - Request coordination doesn’t happen during IHC pull.
-
WD-MXC-787 - Failed Consistency Check task not marked as done.
-
WD-MXC-806 - Allow fast SSL in Proxy using Conscrypt library.
-
WD-MXC-807 - Add configurable incoming connection limit.
-
WD-MXC-812 - IHC plugin should not create client instance per request.
-
WD-MXC-720 - The proxy log should use same rolling names as Fusion logs.
2.1.4. Known Issues
Some S3 concepts do not map directly to an environment that replicates buckets—e.g., bucket creation or deletion, and operations that act on objects by unique identifier provided by the S3 endpoint. There are also some aspects of the S3 API that are not yet supported—e.g., browser-based object upload/creation.
-
WD-SPX-48 - POST Object restore allows restoration of a temporary copy of an archived object. It is not supported by the Fusion Plugin for Live S3.
-
WD-SPX-104 - AWS KMS SSE is not yet supported.
-
WD-SPX-123 - Multi-chunk payloads are not yet supported.
-
WD-SPX-125 - Buckets configured with MFA serial security are not yet supported.
-
WD- MXC-187 - POST is an alternative to PUT for browser-based uploads. The Fusion Plugin for Live S3 does not support Post object replication with a virtual bucket.
-
WD-MXC-188 - Deletion of specific object versions is not supported because independent S3 buckets assign different version identifiers to replicated instances of an object.
-
WD-MXC-190 - Deletion of tagging for a specific object version is not supported because independent buckets assign different version identifiers to replicated instances of an object.
-
WD-MXC-207 - Complete Multipart Upload won’t replicate when Server-Side Encryption (SSE) is Enabled.
-
In Azure, Blob versioning will not be considered since there is no concept of Azure Blob versioning.
-
Non-replicated bucket must be created under the default-endpoint-url storage.
-
Server-Side Encryption will not be coordinated because of difference in implementation in AWS S3 and Azure Blob Storage. However, when the encryption is configured, server-side uploaded objects will be automatically encrypted at rest.
-
WD-SPX-498 - Credentials limitations For replicated buckets/containers with assigned virtual bucket: only the accessKey/secretKey pair which is defined in virtual bucket configuration will be used to access the proxy. Other accessKey/secretKey will be refused as invalid credentials (even though it may be valid with the underlying storage).
For non-replicated buckets/containers: Any accessKey/secretKey pair that appears in any virtual bucket configuration can be used to access the proxy. The same pair will be used when request is passed to the underlying storage.
-
WD-MXC-335 - There are a number of characters that are currently not supported in Azure blob storage objects. Please ensure that you do use any of the following characters in Azure Blob Storage names.
Problem when put via command line cli - ( ) = $ , brackets, equals, dollar, comma Problem when put via Java SDK - ! * ( ) = $, exclamation, asterisk, brackets, equals, dollar, comma
-
WD-MXC-629 - Manual configuration adjustment needed in HA setup. This issue will be addressed in the next release.
-
On each node (where IHC is installed), edit
/etc/wandisco/fusion/ihc/server/<distro>/core-site.xml
so that the propertyfusion.server
should be updated to contain a comma separated list of all Fusion Servers in the zone. -
Save the changes and restart the node.
-
-
WD-MXC-706 - Currently, MultiCloud does not take eventual consistency into account for S3 storage, resulting in an issue where a second 'put' of a file is pooled to the target zone when it is not completely put on the source zone. This results in the following:
-
If the files are unique (no overwrites) - there is no issue (as S3 has read-after-write consistency).
-
If there are overwrites, then we have this problem and it could be removed by enabling the versioning on source bucket.
-
-
WD-MXC-725 - The proxy requires credentials for non-replicated buckets/containers to be able to interact with them.
-
WD-MXC-791 - If
Delete Multiple Objects
is issued before some of the deleted objects are fully replicated, it might result in the object not being deleted in the non-originating zones. -
WD-MXC-801 - Authentication via an IAM role is not yet supported.
-
WD-MXC-828 - In Ceph the Delete Bucket Metrics Operation, deletes the bucket if the bucket is empty.
2.2. LiveData for MultiCloud 2.0 Build 310
19 December 2018
WANdisco is pleased to present the first release of LiveData for MultiCloud. This 2.0 release provides full functionality for Amazon S3 and Azure Blob Storage replication in a Live Data environment, with consistent replication of S3 objects and Azure Blob among multiple buckets and containers, and features to perform consistency checks and to bring buckets and containers to a consistent state for initial transfer of data.
LiveData for MultiCloud 2.0 supports the latest version of WANdisco Fusion, 2.12.3.
2.2.1. Highlighted New Features
- Installation
-
Supports installation of LiveData for MultiCloud using a standard RPM- or DEB-based installation process
- User Interface
-
Simplified User Interface for common tasks such as replication rules management (create, list, update, delete), consistency check, consistency report and a "Make Consistent" tool.
- High Availability
-
Supports Fusion high availability deployment in a MultiCloud environment. This allows for the Live S3 Plugin and its Proxy to operate in a High Availability configuration.
- Improved Scalability
-
Horizontal scalability capabilities for MultiCloud environments where large number of simultaneous network connections try to access the service
- Replication across firewall
-
Enables Fusion to replicate data from on-premises to Cloud (AWS or Azure) in a DMZ configuration, where on-premises Fusion Server can see and make connections to AWS / Azure Fusion server. However, the AWS / Azure Fusion server is completely firewalled from the on-premises network. No inbound connections are allowed on any port.
- Enhanced Selective Replication
-
Replication rules will provide inclusion & exclusion patterns. User can be selective about content to be replicated at a finer level of granularity than a bucket.
- Virtual Bucket
-
Allows applications to interact with the underlying object storage using the virtual bucket abstraction which maps into the actual S3 bucket or Azure Blob container.
- Support Replication between
-
-
S3 ↔ S3
-
Azure Blob Storage ↔ Azure Blob Storage
-
S3 ↔ Azure Blob Storage
-
- Non-Replicated Bucket / Container
-
Support for non-replicated bucket / container accessed via LiveData for MultiCloud
- Dynamic configuration
-
API support for dynamic configuration for specific virtual bucket
- Selective replication
-
API support for selective replication with inclusion and exclusion patterns
- API Support
-
Add link to the sub-section of the supported AWS S3 and Azure Blob Storage APIs
- Storage end-points
-
Supports the following S3 Compatible storage providers & Azure Blob Storage
-
AWS S3
-
AWS Snowball
-
Azure Blob Storage
-
IBM Cloud Object Storage (COS)
-
Dell EMC Elastic Cloud Storage
-
Ceph Object Storage (v0.94.x Hammer Release)
-
Dell Virtustream Storage Cloud
-
Oracle Cloud Object Storage
-
Oracle Cloud Object Storage Classic
-
Alibaba Cloud Object Storage Service (OSS)
-
Pure FlashBlade Object Storage
-
HGST (Western Digital) ActiveScale Object Storage
-
Minio Gateway for Azure Blob Storage
-
Scality Zenko CloudServer
-
2.2.2. System Requirements
Before installing or upgrading, ensure that your systems, software, and hardware meet the requirements. The requirements for WANdisco Fusion are found in the User Guide at http://docs.wandisco.com/bigdata/wdfusion/2.12/#_prerequisites_checklist.
LiveData for MultiCloud is tested on a limited number of operating systems then the main product. These are:
-
RHEL 6 x86_64
-
RHEL 7 x86_64
-
Oracle Linux 6 x86_64
-
Oracle Linux 7 x86_64
-
CentOS 6 x86_64
-
CentOS 7 x86_64
-
Ubuntu 16.04LTS
-
SLES 11 x86_64
-
SLES 12 x86_64
Unsupported:
-
Ubuntu 14.04LTS
-
Ubuntu 18.04LTS
2.2.3. Known Issues
Some S3 concepts do not map directly to an environment that replicates buckets—e.g., bucket creation or deletion, and operations that act on objects by unique identifier provided by the S3 endpoint. There are also some aspects of the S3 API that are not yet supported—e.g., browser-based object upload/creation.
-
WD-SPX-48 - POST Object restore allows restoration of a temporary copy of an archived object. It is not supported by the Fusion Plugin for Live S3.
-
WD-SPX-104 - AWS KMS SSE is not yet supported.
-
WD-SPX-123 - Multi-chunk payloads are not yet supported.
-
WD-SPX-125 - Authentication via an IAM role is not yet supported.
-
WD-SPX-125 - Buckets configured with MFA serial security are not yet supported.
-
WD- MXC-187 - POST is an alternative to PUT for browser-based uploads. The Fusion Plugin for Live S3 does not support Post object replication with virtual bucket.
-
WD-MXC-188 - Deletion of specific object versions is not supported because independent S3 buckets assign different version identifiers to replicated instances of an object.
-
WD-MXC-190 - Deletion of tagging for a specific object version is not supported because independent buckets assign different version identifiers to replicated instances of an object.
-
WD- MXC-207 - Complete Multipart Upload won’t replicate when Server-Side Encryption (SSE) is Enabled.
-
In Azure, Blob versioning will not be considered since there is no concept of Azure Blob versioning.
-
Non-replicated bucket must be created under the default-endpoint-url storage.
-
Server-Side Encryption will not be coordinated because of the difference in implementation in AWS S3 and Azure Blob Storage. However, when the encryption is configured, server-side uploaded objects will be automatically encrypted at rest.
-
WD-SPX-498 - Credentials limitations (Impacts both S3 and Azure implementations) -
For replicated object containers (buckets, etc) with assigned virtual bucket: only the accessKey/secretKey pair which is defined in the virtual bucket configuration will be used to access the proxy. Other accessKey/secretKey will be refused as invalid credentials (even though it may be valid with the underlying storage).For non-replicated object containers: Any accessKey/secretKey pair that appears in any virtual bucket configuration can be used to access the proxy. The same pair will be used when a request is passed to the underlying storage.
-
WD-MXC-335 - There are a number of characters that are currently not supported in Azure blob storage objects. Please ensure that you do use any of the following characters in Azure Blob Storage names.
Problem when put via command line cli - ( ) = $ , brackets, equals, dollar, comma Problem when put via Java SDK - ! * ( ) = $, exclamation, asterisk, brackets, equals, dollar, comma
-
WD-MXC-642 - S3 object storage class and ACLs are currently not replicated. This issue will be addressed in the next release.
-
WD-MXZ-629 - Manual configuration adjustment needed in HA setup. This issue will be addressed in the next release.
-
On each node (where IHC is installed), edit
/etc/wandisco/fusion/ihc/server/<distro>/core-site.xml
so that the propertyfusion.server
should be updated to contain a comma-separated list of all Fusion Servers in the zone. -
Save the changes and restart the node.
-
-
WD-MXC-706 - Currently, MultiCloud does not take eventual consistency into account for S3 storage, resulting in an issue where a second 'put' of a file is pooled to the target zone when it is not completely put on the source zone. This results in the following:
-
If the files are unique (no overwrites) - there is no issue (as S3 has read-after-write consistency).
-
If there are overwrites, then we have this problem and it could be removed by enabling the versioning on source bucket.
-
3. Concepts
Familiarity with the following concepts will improve your use of LiveData for MultiCloud.
3.1. Product concepts
- Virtual Bucket
-
Applications should be able to interact with the underlying object storage using the virtual bucket abstraction which will mapping into the actual bucket or container
- Bucket
-
Associated storage name for AWS S3.
- Objects
-
S3 object has data stored in the bucket.
- Container
-
Associated storage for Microsoft Azure
- Blobs
-
A Binary Large Object is a collection of binary data stored as a single entity in a container.
S3 |
Azure Blob |
WDOS (WANdisco Object Store) |
Bucket |
Container |
Bucket |
Object |
Blob |
Objects |
3.1.1. MultiCloud Proxy
Applications use LiveData for MultiCloud via one or more MultiCloud-compatible endpoints that it provides in the MultiCloud proxy, which is the runtime component that proxies access to underlying MultiCloud-compatible storage services on behalf of LiveData for MultiCloud.
3.2. Architecture
LiveData for MultiCloud plugin will provide three runtime components:
-
A MultiCloud Proxy - a process operating as a forward/reverse proxy that intercepts client requests and submits them for coordination
-
A MultiCloud Plugin for Fusion - plugin implementing FusionPlugin interface, runs inside Fusion server process, hooks into Fusion to coordinate intercepted requests
-
A MultiCloud Plugin for IHC - plugin implementing StorageFactory<CoordinatedFs> interface, allows the IHC to pull from object stores We will implement ‘Direct Pull’ as a default approach and IHC will be a configurable option and will be plugged-in as an when enabled in Fusion Core (FUS-5481)
3.3. Supported Functionality
3.3.1. S3 features
The Fusion Plugin for MultiCloud supports a broad range of S3-compatible features, including:
Virtual-hosted style URLs
where the virtual bucket name is part of the domain name in a virtual-hosted–style URL. For example: http://virtualbucket.s3proxyhost.yourdomain.com.
Path style URLs
where the bucket name is not included in the domain unless as a region-specific endpoint. For example: http://s3proxyhost.yourdomain.com/virtualbucket.
Client request signature validation
Requests are validated for correct credentials before being executed against an underlying S3-compatible storage. Versions 2 and 4 of AWS signatures are supported:
-
AWS V4 Path Style
-
AWS V4 Virtual Hosted Style
-
AWS V4 Pre-signed URLs
-
AWS V2 Path Style
-
AWS V2 Virtual Hosted Style
-
AWS V2 Pre-signed URLs
AWS signatures
The Fusion Plugin for Live S3 supports versions 2 and 4 of AWS signatures in Path Style. To enable virtual hosted style, follow the below steps:
|
Default config values in AWS CLI
- Signature type
-
v4
- Path addressing style
-
auto
Run the commands below to set the required signature type and addressing style:
-
Signature type v4: aws configure set default.s3.signature_version s3v4
-
Signature type v2: aws configure set default.s3.signature_version s3
-
Enable Path Style: aws configure set default.s3.addressing_style path
-
Enable Virtual Style: aws configure set default.s3.addressing_style virtual
- Payload Options
-
S3 Payloads can be signed or unsigned in a single chunk. Multi-chunk payloads are not yet supported.
- Server-side Encryption
-
AES-256 server-side encryption is supported. AWS KMS SSE is not yet supported.
- IAM role authentication
-
IAM role-based authentication is not yet supported.
- MFA Serial authentication
-
Buckets configured with MFA serial security are not yet supported.
3.3.3. WANdisco LiveData Features
The Fusion Plugin for MultiCloud provide support for additional features beyond those of standard S3 and Azure Blob endpoints as a result of supporting LiveData functionality. These include:
- Consistency Check
-
Determine and report on differences in content between replicated buckets/containers.
- Make Consistent
-
The Make Consistent tool can fix issues of inconsistency between content among multiple buckets/containers.
Support for:
-
MultiCloud installation using RPM installer.
-
MultiCloud installation using Debian installer.
-
S3 APIs
-
Azure Blob APIs
-
Replication between
-
S3 ↔ S3
-
Azure Blob ↔ Azure Blob
-
S3 ↔ Azure Blob
-
-
API support for dynamic configuration for specific virtual bucket.
-
API support for selective replication with inclusion and exclusion pattern.
-
non-replicated bucket accessed via MultiCloud
-
S3 Compatible storage providers:
-
AWS S3 (AWS_S3)
-
Snowball (AWS_SNOWBALL)
-
Virtustream (VIRTUSTREAM)
-
Activescale (ACTIVESCALE)
-
IBM Cloud Object Storage (IBM_COS)
-
Alibaba Cloud Object Storage Service (ALIBABA_OSS)
-
Oracle Cloud Object Storage (ORACLE_OBJECT_STORAGE)
-
Oracle Cloud Object Storage Classic (ORACLE_OBJECT_STORAGE_CLASSIC)
-
Minio Gateway for Azure Blob Storage (MINIO_AZURE)
-
Ceph Object Storage (v0.94.x Hammer Release) (CEPH_HAMMER)
-
Pure FlashBlade Object Storage (PURESTORAGE)
-
Dell EMC Elastic Cloud Storage
-
Scality S3 Server Object Storage (SCALITY_S3)
-
3.3.4. Support for Cloud REST APIs
See the API chapter in the Reference section.
3.4. Deployment models
3.4.1. Use Cases for LiveData for MultiCloud
Use the Fusion Plugin for MultiCloud with S3/Azure for a variety of reasons, including:
- Heterogenous storage
-
Your applications may benefit from accessing cloud data in different storage systems, perhaps both on-premises and in the cloud, or with multiple cloud providers to take advantage of cost arbitrage.
- Multi-geo applications
-
Applications that operate in multiple, geographically-separate locations can work with a local S3/Azure endpoint in each location, and ensure that each location has access to the same data.
- Improving performance
-
By having a local replica of a storage container/bucket, applications can operate more efficiently than if they need to work with data that are not physically close.
- Improved availability
-
The impact of the failure of a single source of S3/Azure objects can be eliminated by having a strongly-consistent replica of those objects in another source.
- Regulatory compliance
-
Your compliance needs may require that you store multiple copies of data in different locations, or with different service providers.
LiveData for MultiCloud automates the replication of data across S3 buckets/Azure containers and ensures that they store exactly the same information, even when applications change content in any of the replicated containers.
4. Installation
4.1. Pre-requisites
Along with the standard product requirements that you can find on the WANdisco Fusion Deployment Checklist, you also need to ensure that you have available:
-
Java 1.8
-
Fusion 2.12.3. (Packages for S3 or HDI)
-
Minimum 2 Fusion zones inducted
-
Credentials for accessing the to-be-replicated S3/Azure Blob endpoints.
-
For AWS S3, this will be in the form of an Access Key and Secret Access Key.
-
For Azure blob, this will be in the form of an Account name and Account Key.
-
-
Details of the endpoint URL by which applications access the S3/azure service normally, e.g.for S3 s3-us-west-1.amazonaws.com & for Azure blob core.windows.net Access to the hosts on which each WANdisco Fusion server is operating for the purpose of installation
-
The names of the Wandisco inc. Fusion zones across which replication will occur.
Also note that when using the S3 proxy service, authentication can be limited depending on your configuration:
-
The Fusion Bucket and MultiCloud Bucket must be different.
-
For buckets with an assigned virtual bucket, only the accessKey/secretKey pair which is defined in the vbucket configuration can be used to access the proxy. Other accessKey/secretKey will be refused as invalid credentials (even though they might actually be valid with the underlying storage).
-
For non-replicated buckets, any accessKey/secretKey pair that appears in any vbucket configuration can be used to access the proxy. The same pair will be used when request is passed to the underlying storage.
MultiCloud Plugin must be installed in all zones - All nodes that will replicate MultiCloud objects must have the MultiCloud plugin installed. |
4.1.1. System Requirements
Before installing or upgrading, ensure that your systems, software, and hardware meet the requirements. The requirements for WANdisco Fusion are found in the User Guide at http://docs.wandisco.com/bigdata/wdfusion/2.12/#_prerequisites_checklist.
4.2. Installation
Install the Fusion Plugin for MultiCloud using a standard RPM- or DEB-based installation process. Configure the plugin with simple command-line tools or manual changes to configuration files that are specific to the plugin.
4.2.1. Locate installation components
The following default locations are used during installation.
Directories |
Location |
MultiCloud installation location |
/opt/wandisco/fusion/plugins/multicloud/ |
Configuration directory |
/etc/wandisco/fusion/plugins/multicloud/ |
Directories |
Location |
Installation directory |
/opt/wandisco/multicloud-proxy/ |
Configuration directory |
/etc/wandisco/multicloud-proxy/ |
Log directory |
/var/log/wandisco/multicloud-proxy/ |
There are RPM & DEB files that provide installable components for Centos and Ubuntu respectively:
- For Centos
-
-
fusion-multicloud-plugin-asf-2.5.0-2.0.0.0_253.noarch.rpm
-
fusion-multicloud-ihc-plugin-asf-2.5.0-2.0.0.0_253.noarch.rpm
-
fusion-multicloud-proxy-asf-2.5.0-2.0.0.0_253.noarch.rpm
-
- For Ubuntu
-
-
fusion-multicloud-plugin-asf-2.5.0_2.0.0.0—253_all.deb
-
fusion-multicloud-ihc-plugin-asf-2.5.0_2.0.0.0-253_all.deb
-
fusion-multicloud-proxy-asf-2.5.0_2.0.0.0-253_all.deb
-
Obtain the files so that you can distribute them to the appropriate hosts in your deployment for Fusion. The plugin files needs to be installed on each Fusion server host in your deployment, while proxy files needs to be installed on each machine where you intend to operate a MultiCloud Proxy.
4.2.2. Install the plugin
Ensure you have read all known issues and pre-requisites and file name changes before beginning installation. |
-
Run the installer with appropriate filesystem permissions.
Verifying archive integrity... All good. Uncompressing WANdisco Live MultiCloud.................. :: :: :: # # ## #### ###### # ##### ##### ##### :::: :::: ::: # # # # ## ## # # # # # # # # # ::::::::::: ::: # # # # # # # # # # # # # # ::::::::::::: ::: # # # # # # # # # # # ##### # # # ::::::::::: ::: # # # # # # # # # # # # # # # :::: :::: ::: ## ## # ## # # # # # # # # # # # :: :: :: # # ## # # # ###### # ##### ##### ##### You are about to install WANdisco Live MultiCloud version 2.0.0.0 Do you want to continue with the installation? (Y/n)
The installer will perform an integrity check and confirm the product version that will be installed. Enter "Y" to continue the installation.
-
Follow the instructions to add all required Fusion servers
This plugin requires knowledge of all the fusion servers for this zone. You can add Fusion servers and their request ports one by one with a ‘hostname:port’ format. The hostname should be of a form that will allow the local proxy server to contact the specified hostname. No checking is currently performed to validate any server addresses entered here. Multiple entries can be added by separating entries with a ‘,’. Adding the local fusion server to the fusion server list The current fusion server list is: ‘<your.fusion.hostname>:<port>’
Enter ‘P’ to print the current fusion server list. Entering a blank value ends the fusion server collection. Host and port to add (format: ‘hostname:port’) []:
-
Confirm the hostname and port for the virtual server. Enter the details or press enter to go with the default value, e.g. 0.0.0.0:8071.
Enter the proxy server listen host and port [0.0.0.0:8071]:
-
Enter hostname for the Proxy Server(s).
Enter DNS compatible host names for the Proxy Server. Multiple entries can be added by separating with a ‘,’. The current proxy virtual host list is: ‘localhost’ ‘127.0.0.1’ Enter ‘P’ to print the current proxy virtual host list. Entering a blank value ends proxy virtual host collection. New Virtual Host []:
-
Next, decide whether you want SSL encryption for the proxy
Do you wish to enable proxy ssl? (Y/n): n
-
Installation will then occur:
Installing requested plugin components... wd-multicloud-plugin-2.0.0.0.tar.gz ... Done multicloud-plugin-ui-server-2.0.0.0-dist.tar.gz ... Done fusion-multicloud-plugin-hdi-3.6_2.0.0.0-260_all.deb ... Done fusion-multicloud-ihc-plugin-hdi-3.6_2.0.0.0-260_all.deb ... Done fusion-multicloud-proxy-hdi-3.6_2.0.0.0-260_all.deb ... Done All requested components installed.
-
A series of post-installation steps will run.
Running additional post install actions... Running fusion server plugin configuration Running proxy server configuration Moving existing ‘/etc/wandisco/multicloud-proxy/proxy-server_env.sh’ to ‘/etc/wandisco/multicloud-proxy/proxy-server_env.sh.22838.backup’
A restart of the fusion-server is required, enter "y" to continue the installation.
Restarting fusion-server is required as part of plugin activation Do you wish to restart fusion-server now? (y/N) y Restarting WANdisco Fusion Server: fusion-server Stopped WANdisco Fusion Server process 5849 successfully. Started WANdisco Fusion Server process successfully.
-
Confirm that the installation has completed by checking the Plugin status on the Fusion UI settings tab.
Figure 4. MultiCloud Plugin Status
4.2.3. Create a replication rule
LiveData for MultiCloud uses a replication rule to coordinate activities against each virtual bucket. Create a replication rule using the Fusion UI or API. See Create a rule.
4.2.4. Enable SSL encryption
SSL for Fusion
MultiCloud supports HTTP or HTTPS access. SSL should be enabled to offer clients the option of communicating with the plugin via HTTPS. Specifying yes to this setting will require further information on the keystore path, password and keytype.
- Storage Type
-
-
The type of the storage for this zone. (S3, AZURE_BLOB).
-
S3: Type should be S3
-
AZURE_BLOB: Type should be Azure
-
Without SSL
./configure-proxy-server Enter the proxy server listen host [0.0.0.0]: Enter the proxy server listen port [8071]: Do you want to enable ssl (yes/no)? [If yes, you need to provide the keystore path and encrypted password]: no Enter Proxy server's DNS compatible host names (ie., virtual host) [localhost,127.0.0.1]: marip02-vm4.bdauto.wandisco.com Enter the fusion server host and port [host:port]: marip02-vm4.bdauto.wandisco.com:8023 Is Fusion SSL enabled (yes/no)? [If yes, you need to provide the keystore path and encrypted password]: no Please specify the appropriate storage type for the proxy server to accept api request: 1) S3 2) AZURE #? 1 Storage type selected: S3 ------------------------------------------------------------------------------------------------ **** MultiCloud Proxy server details **** Proxy server listen host: 0.0.0.0 Proxy server listen port: 8071 Proxy server SSL: false MultiCloud proxy server's DNS compatible host names: localhost,127.0.0.1,marip02-vm4.bdauto.wandisco.com **** Fusion server details **** Fusion server host and port: marip02-vm4.bdauto.wandisco.com:8023 Fusion server SSL: false **** Virtual bucket **** Storage Type: S3 ------------------------------------------------------------------------------------------------ Which user should MultiCloud Proxy run as? [root]: Which group should MultiCloud Proxy run as? [root]: Enter the minimum memory(-Xms) for MultiCloud Proxy (in MB) [512]: Enter the maximum memory(-Xmx) for MultiCloud Proxy (in MB) [1024]: ------------------------------------------------- **** MultiCloud Proxy environment details **** Run as User: root Run as Group: root Minimum memory: 512m Maximum memory: 1024m ------------------------------------------------- Do you confirm the MultiCloud proxy server configuration details (yes/no): yes MultiCloud proxy server configuration done successfully, start 'multicloud-proxy-server' to load the configuration -------------------------------------------------------------------------------------------------------- Note: You can edit the configuration values anytime in: /etc/wandisco/multicloud-proxy/core-site.xml, /etc/wandisco/multicloud-proxy/proxy-server-site.xml The multicloud-proxy-server must be restarted for the changes to take effect -------------------------------------------------------------------------------------------------------
With SSL
[root@nnpxy02-vm0 ~]# /etc/wandisco/multicloud-proxy/configure-proxy-server Enter the proxy server listen host [0.0.0.0]: Enter the proxy server listen port [8071]: Do you want to enable ssl (yes/no)? [If yes, you need to provide the keystore path and encrypted password]: yes Enter the keystore file path: /etc/wandisco/multicloud-proxy/ssl/wandisco.ks Please enter the password to be encrypted > ******** log4j:WARN No appenders could be found for logger (com.wandisco.security.crypto.CryptoFactory). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. Enter Proxy server's DNS compatible host names (ie., virtual host) [localhost,127.0.0.1]: nnpxy02-vm0.bdfrem.wandisco.com Enter the fusion server host and port [host:port]: nnpxy02-vm0.bdfrem.wandisco.com:8023 Is Fusion SSL enabled (yes/no)? [If yes, you need to provide the keystore path and encrypted password]: yes Enter the fusion truststore file path: /opt/fusionssl/wandisco.ks Enter the fusion truststore key type: JKS Please enter the password to be encrypted > ******** log4j:WARN No appenders could be found for logger (com.wandisco.security.crypto.CryptoFactory). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. Please specify the appropriate storage type for the proxy server to accept api request: 1) S3 2) AZURE #? 1 Storage type selected: S3 ------------------------------------------------------------------------------------------------ **** MultiCloud Proxy server details **** Proxy server listen host: 0.0.0.0 Proxy server listen port: 8071 Proxy server SSL: true Keystore path: /etc/wandisco/multicloud-proxy/ssl/wandisco.ks Keystore password: ***************************** MultiCloud proxy server's DNS compatible host names: localhost,127.0.0.1,nnpxy02-vm0.bdfrem.wandisco.com **** Fusion server details **** Fusion server host and port: nnpxy02-vm0.bdfrem.wandisco.com:8023 Fusion server SSL: true Keystore path: /opt/fusionssl/wandisco.ks Keystore type: JKS Keystore password: ***************************** **** Virtual bucket **** Storage Type: S3 ------------------------------------------------------------------------------------------------ Which user should MultiCloud Proxy run as? [root]: Which group should MultiCloud Proxy run as? [root]: Enter the minimum memory(-Xms) for MultiCloud Proxy (in MB) [512]: Enter the maximum memory(-Xmx) for MultiCloud Proxy (in MB) [1024]: ------------------------------------------------- **** MultiCloud Proxy environment details **** Run as User: root Run as Group: root Minimum memory: 512m Maximum memory: 1024m ------------------------------------------------- Do you confirm the multiCloud proxy server configuration details (yes/no): yes MultiCloud proxy server configuration done successfully, start 'multicloud-proxy-server' to load the configuration -------------------------------------------------------------------------------------------------------- Note: You can edit the configuration values anytime in: /etc/wandisco/multicloud-proxy/core-site.xml, /etc/wandisco/multicloud-proxy/proxy-server-site.xml The multicloud-proxy-server must be restarted for the changes to take effect ------------------------------------------------------------------------------------------------------- [root@nnpxy02-vm0 ~]#
Enabling SSL
To enable SSL for the proxy server follow the steps below:
-
Generate SSL certificates.
-
Reconfigure the proxy server using /etc/wandisco/multicloud-proxy/configure-proxy-server and provide the new keystore value.
-
Start the proxy server.
Approach to Connect Proxy Server with SSL in Azure cli
-
Copy the ca.crt from proxy server /etc/wandisco/multicloud-proxy/ssl/ca.crt to the machine where azure cli is installed
-
Export ca certificate in terminal, so that the azure cli requests will use our self-signed ca-certificate.
export REQUESTS_CA_BUNDLE=ca.crt
-
Run the azure cli command with BlobEndpoint (which will point proxy-server)
az storage blob list --container-name <conatiner-name> --connection-string 'AccountName=chsiva;AccountKey=****==;BlobEndpoint=https://<Proxy-Server-Host-Name>:8071'
Approach to Connect Proxy Server with SSL in aws S3
-
Connect MultiCloud Proxy using --no-verify-ssl
-
The 'multicloud-proxy-server' can be connected via ssl without --no-verify-ssl by any of the following approaches.
Approach 1:
Passing the trusted CA root certificate using the --ca-bundle command line argument# aws s3 ls s3:// --endpoint-url https://multicloud-proxy-demo.wandisco.com:8071 --ca-bundle /etc/wandisco/multicloud-proxy/ssl/ca.crt 2018-05-21 13:38:04 vbucket
Approach 2:
Set the environment variable AWS_CA_BUNDLE with the absolute path to the trusted CA root certificate.# export AWS_CA_BUNDLE=/etc/wandisco/multicloud-proxy/ssl/ca.crt # echo $AWS_CA_BUNDLE /etc/wandisco/multicloud-proxy/ssl/ca.crt # aws s3 ls s3:// --endpoint-url https://multicloud-proxy-demo.wandisco.com:8071 2018-05-21 13:41:04 vbucket
Approach 3:
In the .aws/config file, set the variable ca_bundle with the absolute path of the trusted CA root certificate.ca_bundle = /etc/wandisco/multicloud-proxy/ssl/ca.crt # cat .aws/config [default] output = json region = us-east-1 ca_bundle = /etc/wandisco/multicloud-proxy/ssl/ca.crt s3 = signature_version = s3 addressing_style = path # aws s3 ls s3:// --endpoint-url https://multicloud-proxydemo.wandisco.com:8071 2018-05-21 13:41:04 vbucket
Changing the time zone
Logs use UTC timezone by default but this can be manually altered through log4j configuration if required. To alter the timezone the xxx.layout.ConversionPattern property needs to be overwritten.
log4j.appender.xxxxxlog.layout.ConversionPattern=%d{ISO8601}{UTC} %p %c - %t:[%m]%n
{UTC} can be replaced with, for example {GMT} or {ITC+1:30}. If offsetting from a timezone, + or - can be used, hours must be between 0 and 23, and minutes must be between 00 and 59. This property is located in /etc/wandisco/multicloud-proxy/log4j.properties
After updating the property, multicloud-proxy-server needs to be restarted for the changes to take effect.
S3 Payloads
Currently S3 Payloads can be signed or unsigned in a single chunk. Multi-chunk payloads are not yet supported and your deployment may need to be configured depending on the combination of your S3plugin and Multisite proxy.
<property> <name>fs.fusion.s3.chunkedEncoding</name> <value>false</value> </property>
4.3. Upgrade
The following steps provide a basic sequence for upgrading an existing MultiCloud installation.
-
Bring the Fusion server, UI server and IHC server to a stop.
service fusion-server stop service fusion-ui-server stop service fusion-ihc-server-<version> stop
-
Stop the MultiCloud proxy server.
service multicloud-proxy-server stop
-
Upgrade using the latest plugin RPM/DEM files.
rpm -U <multicloud-plugin-rpm-package>
or
dpkg -i <multicloud-plugin-deb-package>
-
Upgrade the proxy using the proxy RPM/DEM.
rpm -U <multicloud-proxy-rpm-package>
or
dpkg -i <multicloud-proxy-deb-package>
-
Start the Fusion, UI and IHC servers.
service fusion-server start service fusion-server-ui start service fusion-ihc-server-<version> start
-
Start the multicloud-proxy server.
service multicloud-proxy-server start
4.3.1. Package removal
Important!
Do not remove plugin RPMs/Jars as part of an uninstallation procedure. There may be cases where Fusion’s database continues to reference the core plugin RPMs after their removal, causing problems with Fusion restarts.Before removing core plugin RPMs/Jars you must first perform a flush of Fusion’s internal database, which would require a re-induction and configuration of your Fusion deployment. Contact Support for more information about this procedure. |
Currently there is no programatic method for removing components although you can use the following commands to delete the plugin components, one at a time:
# yum erase -y -q {plugin-core-package}
WANdisco Fusion MultiCloud Plugin uninstalled successfully.
rm -rf /opt/wandisco/fusion-ui-server/plugins/multicloud-2.12/
rm -rf /opt/wandisco/fusion-ui-server/ui-client-platform/plugins/multicloud-plugin/
rm -rf /opt/wandisco/fusion-ui-server/ui-client-platform/downloads/core_plugins/multicloud/
5. Operation
5.1. Configuration
Once configured, restart MultiCloud server to use the configuration applied:
# service fusion-server restart Enter
Then start each instance of the S3 proxy:
# service multicloud-proxy-server start Enter
For MultiCloud you can validate operation against the virtual buckets defined for the environment using standard MultiCloud client applications, such as the AWS CLI tools, or tools like s3cmd and for Azure blob you can validate operation against the containers defined for the environment using standard azure client applications, such as the azure CLI tools, or tools like az cmd.
5.1.1. Configuring Applications to use LiveData for MultiCloud
Client applications can be configured to use the virtual buckets provided by the Fusion Plugin for MultiCloud in multiple ways:
- As an HTTP(S) proxy
-
Applications that would normally communicate directly with the underlying S3/Azure Blob bucket can be directed to use the proxy through standard HTTP(S) proxy configuration. The benefit of this approach is that it requires no change to application code to direct them to the Fusion Plugin for MultiCloud.
Ensure that the plugin has been configured to accept requests for the original hostname used by client applications. Specify the DNS compatible host names to match when configuring the proxy. Applications can continue to use the original bucket name if it matches the underlying bucket referred to by the proxy.
- As a new MultiCloud endpoint
-
Applications can direct S3 requests directly to the proxy, which provides virtual buckets. Configure your application to refer to the proxy as the S3 endpoint, and use the virtual bucket name.
5.2. Create a rule
Before you can replicate data, you need to set up a replication rule for the resource location in the underlying file system.
-
Login to the Fusion UI and click on the Replication Rules tab. Click on the Create + button.
Figure 5. MultiCloud Create a rule -
The Rule creation screen will appear. Enter the following details.
Figure 6. MultiCloud Create a rule- Virtual Storage name
-
Choose a name, following the guidelines stated below, that will be the single identifier for the proxy’s virtual bucket. This name will be used by client applications when interacting with replicated objects, and will be available at the endpoints offered by each of the proxy instances.
Virtual Storage naming guidelines
-
v-bucket name must be alphanumeric and lower-case.
-
If you use upper-case characters you can only replicate from Azure to AWS, not use the v-bucket name in the AWS or Azure CLI.
-
If you don’t follow these rules, you may not see errors until you perform an AWS to Azure replication or use the v-bucket name for the repositories.
-
-
- Replication constraints
-
- Include in replication
-
Select which resources you wish to replicate under the rule. Note that by default the pattern ".*" is used which will replicate everything in the bucket.
- Exclude from replication
-
Select specific artifacts that you wish to block from replication.
- Zones
-
You need to select a minimum of 2 zones, the local zone is automatically selected and is manditory.
-
Continue adding your settings.
Figure 7. MultiCloud Create a rule
-
- Priority Zone
-
The Priority Zone is the zone which is most important, that which is most reliable or up to date. For example if your set up has a production zone and a disaster recovery zone then production would be more important and therefore your priority zone.
- Connect to Underlying Storage
-
- Storage name
-
The name of the underlying S3 bucket for this zone.
- Access key
-
Credentials for the underlying bucket.
- Secret access key
-
Further credentials for the underlying bucket.
- Region
-
The region by which the bucket is located.
- Endpoint URL
-
The endpoint by which the bucket can be accessed. This can be in any of the forms:
<hostname>
,<hostname>:<port>
,http(s)://<hostname>
, orhttp(s)://<hostname>:<port>
.
- Networking
-
Select whether or not you want to allow both inbound and outbound connections or limit to inbound connections only.
- Create Rule
-
Click to create the rule.
5.2.1. Edit a rule
Once created, you can edit Replication Rules by clicking on the rule resource label.
- Include in replication
-
Click the edit icon to change.
- Exclude from replication
-
Click the edit icon to change.
Click the edit icon to make changes to Storage.
Click update to save any changes that you make.
5.3. Administration
Once configured, applications interact with the virtual buckets that have been configured. Standard MultiCloud API operations are replicated with strong consistency among the underlying buckets, and content associated with objects created is replicated between these buckets.
Use the Fusion Plugin for MultiCloud to provide a Live Data environment, where applications can interact with any of the replicated buckets, and each bucket will provide access to the same content regardless of where change is initiated.
5.3.1. Regular Application Operation
Operate your applications without change, whether they are custom applications, standard command line or other tools for working with MultiCloud.
5.3.2. Consistency Check
Because applications that do not interact with the MultiCloud environment via the Fusion Plugin for MultiCloud can modify bucket content without coordination or replication, the product provides a consistency check feature. Use consistency check to report on any differences among the replicated buckets.
Consistency check is provided through a REST API call. A consistency check is a potentially long-running task, initiated with a specific REST operation. Provide the path associated with the virtual bucket when initiating the check to specify which virtual bucket to review.
Perform a consistency check
S3 data and eventual consistency
MultiCloud’s mechanism for dealing with data inconsistency is not instantaneous and operates under constraints imposed by the use of the S3 API. For this reason, all operations to make data consistent between zones run under the eventual consistency model. You may need to wait some time to see the results of a replica convergence. |
Use this procedure to complete a check of consistency between one or more zones.
-
Navigate to Replication tab.
-
Select a rule on which to perform a consistency check.
-
Click on the status panel and click on the check now button, then click on one of the available zones to be the source of truth.
Figure 8. MultiCloud Consistency CheckBy clicking on a zone you see a graph of the differences between zones. If you select a zone that has data that is not available on the other zone(s), then the bar graphs will show green. Conversely, if the selected zone doesn’t contain some data that is on the other zone(s) then this will show as red on the bar.
- Objects
-
Total number of objects.
- Size
-
Total file size of replicated data under the rule.
- Directories
-
Number of directories replicated under the rule.
- Download detailed report
-
Click this link to download a JSON file containing all available data from the consistency check.
{"inconsistencies":[{"differences":{"epam01-zone1":{"zoneName":"epam01-zone1","size":21,"directory":false}},"path":"test"},{"differences":{"epam01-zone1":{"zoneName":"epam01-zone1","size":58,"directory":false}},"path":"test"},{"differences":{"epam01-zone1":{"zoneName":"epam01-zone1","size":58,"directory":true}},"path":"test"},{"differences":{"epam01-zone1":{"zoneName":"epam01-zone1","size":58,"directory":true}},"path":"test"},{"differences":{"epam01-zone1":{"zoneName":"epam01-zone1","size":58,"directory":true}},"path":"test"},{"differences":{"epam01-zone1":{"zoneName":"epam01-zone1","size":58,"directory":false}},"path":"test"},{"differences":{"epam01-zone1":{"zoneName":"epam01-zone1","size":21,"directory":false}},"path":"test"},{"differences":{"epam01-zone1":{"zoneName":"epam01-zone1","size":21,"directory":false}},"path":"test"},{"differences":{"epam01-zone1":{"zoneName":"epam01-zone1","size":0,"directory":true}},"path":"test"}]}
S3 ←→ S3
S.No |
Properties |
Support |
1 |
bucket accelerate |
No |
2 |
bucket acl |
No |
3 |
bucket cors |
No |
4 |
bucket encryption |
No |
5 |
bucket lifecycle |
No |
6 |
bucket metrics |
No |
7 |
bucket requestPayment |
No |
8 |
bucket tagging |
No |
9 |
bucket versioning |
No |
10 |
bucket website |
No |
11 |
object content |
No |
12 |
object acl |
Yes |
13 |
object tagging |
No |
Azure Blob <→ Azure Blob
S.No |
Properties |
Support |
1 |
container metadata |
No |
2 |
container permission |
No |
3 |
container policy |
No |
4 |
blob metadata |
Yes |
5 |
blob properties |
Yes |
6 |
blob type |
Yes |
7 |
blob content |
Yes |
8 |
blob content MD5 |
Yes |
S3 <→ Azure
Bucket v Container diff:
Properties |
Bucket |
Container |
Supported |
Metadata |
Tagging |
Metadata |
No |
Object vs Block
Properties |
Object |
Block Blob |
Supported |
Metadata |
Tagging |
Metadata |
No |
Size |
Content-Length |
Content-Length |
Yes |
Wildcard Consistency checks
For the case of a wildcard, e.g. "*" only rules, the normal status tab is not shown, instead explains that consistency check and repair will need to be manually triggered using the script, noted below.
Using the Wildcard Rule scripts
In target folder there will be repairmanager.tar.gz distribution package, extract for the utility "repairmanager-1.0.jar".
How to prepare to run: We need to complete repair.properties file IS_INITIALIZED=false - IMPORTANT!!! The first run should be with value false FUSION_ENDPOINT=http://hostname:8082 - source fusion endpoint SRC_ZONE_NAME=srcZone - source Zone name MCX_PLUGIN_CONFIG=config.xml - local copy of proxy-plugin-site.xml MAIN_LOOP_DELAY=10 - in seconds, how often to check tasks are done REPAIR_STATE_PATH - absolute or relative to user.dir path where repair state files to be stored default value is user.dir RUN_CC = true/false - whether run CC task after repair task default value is true Repair options : default values are true REPAIR_OPTION_ADD_MISSING REPAIR_OPTION_FIX_DIFFERENT REPAIR_OPTION_REMOVE_EXTRA How to run java -jar repairmanager-1.0.jar
Notes on utility script usage
-
If repair manager will be stopped by Ctl-C it can be run again and will start from the point it was stopped
-
Repair manager creates files with replication rules names, where stored current state of repair process for each replication rule.
-
When repair manager finishes, these files will contain records like
-
containerName :
-
Status :
-
repairTimeCreated :
-
repairTimeFinished : :
-
isCCrun :
-
isCCconsistent
-
nzan1:finished:1543585757614:1543585763437: :CC:true
-
Consistency Check API
# curl -X POST "http://<fusion-server>:<fusion-server-api-port>/plugin/multicloud/cc?vbucket=<virtual-bucket-name>&prefix=<key-prefix>"
-
To check a particular directory under the virtual bucket associated with a replication path, add the ccpath to the end of the operation:
# curl -i -X POST "http://localhost:8082/plugin/multicloud/cc?path=/repl-path&vbucket=vbucket&ccpath=dir1/" Enter HTTP/1.1 202 Accepted Content-Location: http://localhost:8082/fusion/task/84b417f3-ec60-11e7-aa4b-0242ac120002 Content-Length: 0 Server: Jetty(6.1.26)
Access the status of the consistency check with the cc task Id generated during consistency check operation at the location referenced:
# curl -i -X GET "http://localhost:8082/fusion/task/84b417f3-ec60-11e7-aa4b-0242ac120002" Enter
HTTP/1.1 200 OK
Content-Length: 938
Content-Type: application/xml
Server: Jetty(6.1.26)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><task><taskId>84b417f3-ec60-11e7-aa4b-0242ac120002</taskId><timeCreated>1514528494614</timeCreated><creatorNodeId>400b7699-56d2-44c5-b07c-f42a760b966f</creatorNodeId><timeUpdated>1514528530417</timeUpdated><isDone>true</isDone><aborted>false</aborted><properties><entry><key>CC_REPORT_PATH</key><value>/vbucket/.fusion/4fc19ba7-e744-11e7-85c7-0242ac120003/metadata/84b417f3-ec60-11e7-aa4b-0242ac120002/cc-report</value></entry><entry><key>TOTAL_INCONSISTENCIES_FOUND</key><value>0</value></entry><entry><key>TASK_TYPE</key><value>S3PROXY_CONSISTENCY_CHECK</value></entry><entry><key>LOCAL_COMPLETE</key><value>1514528530417</value></entry><entry><key>LOCAL_START</key><value>1514528494614</value></entry><entry><key>CONSISTENCY_CHECK_STATUS</key><value>CONSISTENT</value></entry></properties><previousTask xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></task>
To access the consistency check report use the cc task Id generated during consistency check operation at the location referenced:
# curl -i -X GET "http://localhost:8082/plugin/multicloud/cc/report/84b417f3-ec60-11e7-aa4b-0242ac120002?path=/repl-path&withConsistencyReport=true" Enter
HTTP/1.1 200 OK
Content-Length: 301
Content-Type: application/xml
Server: Jetty(6.1.26)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><consistencyReport><path>/vb1</path><state>CONSISTENT</state><taskId>84b417f3-ec60-11e7-aa4b-0242ac120002</taskId><checksumMethod>MD5</checksumMethod><noInconsistencies>0</noInconsistencies><lastCheck>1514548334438</lastCheck></consistencyReport>
5.3.3. Make Consistent
Make Consistent through the UI
Resolve inconsistencies among buckets with the Make Consistent feature. Initiate a Make Consistent operation through the UI or via the REST API.
-
After completing a Consistency Check, and finding inconsistency, click on the zone that represent the "source of truth", that is the zone with the most correct and up-to-date data.
Figure 9. MultiCloud Make Consistent 01 - azure_zone1 clicked, in this example -
The graphs of the zones will update to highlight the differences between the zones, making it easier to determine the appropriate action.
Figure 10. MultiCloud Make Consistent 02 -
Select from the available options:
- Add missing objects
-
Tick to ensure that files/directories that only exist in a subset of the zones are copied across to all. Default: ticked
- Remove extraneous objects
-
Tick to ensure that files/directories that don’t appear in the "Zone of truth" are removed, to ensure that all zones contain the same files and directories. Default: unticked
- Update objects which differ
-
When files/directories with the same name are present, ticking this option will ensure that they are all the latest version, taken from the copies in the zone of truth. Default: unticked
-
Click Make consistent. This will begin the operation and a confirmation message, "Request for making zone consistent submitted".
Figure 11. MultiCloud Make Consistent 03 -
Run another Consistency Check to see if the zones have been made consistent.
Make Consistent through the REST API
In MultiCloud 2.0 it is possible to run the Make Consistent tool through the Fusion UI, although it remains possible to also run it using the REST API, as noted in the reference section.
5.3.4. Dynamic configuration of Virtual buckets
Virtual buckets (vbucket) can be added, listed, modified or deleted from the proxy-plugin-site.xml using the REST APIs below.
Add virtual buckets
This REST API adds virtual buckets to the proxy-plugin-site.xml. The details of the virtual bucket to be added have to be manually added to proxy-server-site.xml.
You must restart the S3Proxy server for changes to take effect. |
An example xml file with the details of virtual bucket to be added in the proxy-plugin-site.xml:
<s3proxy>
<vbucket name="vbucket1">
<bucket name="bucket-a">
<zonename>zone1</zonename>
<accesskey></accesskey>
<secretaccesskey>*</secretaccesskey>
<region>us-east-1</region>
<endpoint-url>s3.amazonaws.com</endpoint-url>
<provider>AWS_S3</provider>
</bucket>
<bucket name="bucket-b">
<zonename>zone2</zonename>
<accesskey></accesskey>
<secretaccesskey>*</secretaccesskey>
<region>eu-west-1</region>
<endpoint-url>s3-eu-west-1.amazonaws.com</endpoint-url>
<provider>AWS_S3</provider>
</bucket>
</vbucket>
</s3proxy>
# curl -v -i -X PUT -H "Content-Type: application/xml" -d @config.xml "http://localhost:8082/plugin/s3proxy/config/vbucket?path=/repl1" Enter
> Content-Type: application/xml
> Content-Length: 776
>
* upload completely sent off: 776 out of 776 bytes
< HTTP/1.1 202 Accepted
HTTP/1.1 202 Accepted
< Content-Length: 0
Content-Length: 0
< Server: Jetty(6.1.26)
Server: Jetty(6.1.26)
List virtual buckets
This REST API gives a listing of virtual buckets configured in the proxy-plugin-site.xml.
# curl -v -X GET "http://localhost:8082/plugin/s3proxy/config/vbucket?vbucket=vbucket1" Enter
>
< HTTP/1.1 200 OK
< Content-Length: 862
< Content-Type: application/xml
< Server: Jetty(6.1.26)
<
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Vbucket>
<bucket>
<virtualBucket>vbucket1</virtualBucket>
<bucketName>bucket1</bucketName>
<zoneName>zone1</zoneName>
<accessKey></accessKey>
<secretAccessKey></secretAccessKey>
<provider>AWS_S3</provider>
<endPointRegion>us-east-1</endPointRegion>
<endPointUrl>s3.amazonaws.com</endPointUrl>
</bucket>
<bucket>
<virtualBucket>vbucket1</virtualBucket>
<bucketName>bucket2</bucketName>
<zoneName>zone2</zoneName>
<accessKey></accessKey>
<secretAccessKey></secretAccessKey>
<provider>AWS_S3</provider>
<endPointRegion>eu-west-1</endPointRegion>
<endPointUrl>s3-eu-west-1.amazonaws.com</endPointUrl>
</bucket>
</Vbucket>
Modify virtual buckets
This REST API modifies the virtual buckets configured in the proxy-plugin-site.xml. The virtual bucket details for modification has to be given as an xml file, from which the details will be taken and specified virtual bucket will be modified in the proxy-plugin-site.xml.
You must restart the S3Proxy server for changes to take effect. |
An example xml file with details of virtual bucket to be modified in the proxy-plugin-site.xml:
<s3proxy>
<vbucket name="vbucket">
<bucket name="bucketNew1">
<zonename>zone1</zonename>
<accesskey></accesskey>
<secretaccesskey>*</secretaccesskey>
<region>us-east-1</region>
<endpoint-url>s3.amazonaws.com</endpoint-url>
<provider>AWS_S3</provider>
</bucket>
<bucket name="bucketNew2">
<zonename>zone2</zonename>
<accesskey></accesskey>
<secretaccesskey>*</secretaccesskey>
<region>eu-west-1</region>
<endpoint-url>s3-eu-west-1.amazonaws.com</endpoint-url>
<provider>AWS_S3</provider>
</bucket>
</vbucket>
</s3proxy>
# curl -v -X POST -H "Content-Type: application/xml" -d @config.xml "http://localhost:8082/plugin/s3proxy/config/vbucket?path=/repl1" Enter
> POST /plugin/s3proxy/config/vbucket/update?path=/repl1 HTTP/1.1
> Host: localhost:8082
> User-Agent: curl/7.47.0
> Accept: /
> Content-Type: application/xml
> Content-Length: 776
>
* upload completely sent off: 776 out of 776 bytes
< HTTP/1.1 202 Accepted
< Content-Length: 0
< Server: Jetty(6.1.26)
Delete virtual buckets
This REST API deletes the virtual buckets configured in the proxy-plugin-site.xml.
You must restart the S3Proxy server for changes to take effect. |
You must first manually remove the details of the vbucket to be deleted from the proxy-server-site.xml.
# curl -v -i -X DELETE "http://localhost:8082/plugin/s3proxy/config/vbucket?path=/repl1&vbucket=vbucket1" Enter
* Connected to localhost (10.6.121.44) port 8082 (#0)
> DELETE /plugin/s3proxy/config/vbucket/delete?path=/repl1&vbucket=vbucket1 HTTP/1.1
> Host: localhost:8082
> User-Agent: curl/7.47.0
> Accept: /
>
< HTTP/1.1 202 Accepted
HTTP/1.1 202 Accepted
< Content-Length: 0
Content-Length: 0
< Server: Jetty(6.1.26)
Server: Jetty(6.1.26)
5.3.5. Support for non-replicated buckets
Non-replicated buckets can be accessed via Live S3 using the default endpoint url of underlying storage. The default endpoint url must be added during the proxy configuration. The data uploaded in the non replicated bucket will be redirected to the default endpoint url and will not be coordinated.
We can access the non-replicated buckets via s3proxy with below signature and addressing styles
-
v2 Path style
-
v4 Path style
Limitations
-
The non-replicated bucket has to be created under the default-endpoint-url storage.
-
For now only one default-endpoint-url can be configured, even when there are multiple virtual buckets
For Example:
<?xml version="1.0" encoding="UTF-8"?>
<s3proxy>
<server-config>
<protocol>http</protocol>
<listen-host>127.0.0.1</listen-host>
<listen-port>8080</listen-port>
<keystore-path />
<keystore-pass />
<truststore-path />
<truststore-pass />
<virtual-host>localhost,127.0.0.1,s3proxydemo.wandisco.com</virtual-host>
</server-config>
<virtualbuckets>
<virtualbucket name="vbucket1" repl-path="/repl1" /> --> say AWS bucket
<virtualbucket name="vbucket2" repl-path="/repl2" /> ---> say IBM bucket
<virtualbucket name="vbucket3" repl-path="/repl3" /> ---> say Scality bucket
<default-endpoint-url>s3.amazonaws.com</default-endpoint-url> --> but the default endpoint url can only point any one of the storage.
</virtualbuckets>
</s3proxy>
5.3.6. Selective Replication
Selective Replication allows you to limit which data are replicated. This is achieved by using inclusion and exclusion rules for each virtual bucket configured. Based on the rule added in the inclusion/exclusion xml, specific live data can be included or excluded from replication. When both inclusion and exclusion rules are equal, then the priority will be given to inclusion rule.
You must restart the S3Proxy server for changes to selective replication to take effect. |
Exclusion
The exclusion rule can be added, listed or deleted using REST APIs. The data will not be replicated to the other zones is it matches with the exclusion rule.
Template on exclusion xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<exclusions>
<vbucket name="vbucket">
<exclusion>/*/.txt</exclusion>
</vbucket>
<vbucket name="vbucket-1">
</exclusion>
</vbucket>
</exclusions>
Add Exclusion
The exclusion rule requested will be added to the exclusion-rules.xml for the specified virtual bucket.
For Example:
# curl -v -i -X POST 'http://localhost:8082/plugin/s3proxy/config/rules/exclusion?path=/repl_dir&vbucket=vbucket&exclusion=*.txt'
>
< HTTP/1.1 202 Accepted
HTTP/1.1 200 OK
< Content-Length: 0
Content-Length: 0
< Server: Jetty(6.1.26)
Server: Jetty(6.1.26)
List Exclusions
The exclusion rules for the specified virtual bucket will be listed.
# curl -v -i -X GET 'http://localhost:8082/plugin/s3proxy/config/rules/exclusion?vbucket=vbucket'
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Content-Length: 249
Content-Length: 249
< Content-Type: application/xml
Content-Type: application/xml
< Server: Jetty(6.1.26)
Server: Jetty(6.1.26)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><exclusions><vbucket name="vbucket"><exclusion>//.fusion/</exclusion><exclusion>//.fusion/*</exclusion><exclusion>.txt</exclusion></vbucket></exclusions>
Delete Exclusion
The exclusion rules for the specified virtual bucket will be deleted from the exclusion-rules.xml.
# curl -v -i -X DELETE 'http://localhost:8082/plugin/s3proxy/config/rules/exclusion?path=/repl_dir&vbucket=vbucket&exclusion=/*/.pdf'
>
< HTTP/1.1 202 Accepted
HTTP/1.1 200 OK
< Content-Length: 0
Content-Length: 0
< Server: Jetty(6.1.26)
Server: Jetty(6.1.26)
Inclusion
The inclusion rule can be added, listed or deleted using REST APIs. The data will be replicated to the other zone when it matches with the inclusion rule based on the exclusion rule. The default inclusion rule will be ".*"
When the exclusion and inclusion rules are same, then the priority will be given for inclusion rule
Template on inclusion xml:
inclusion-tmpl.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<inclusions>
<vbucket name="vbucket">
<inclusion>dir*</inclusion>
</vbucket>
<vbucket name="vbucket-1">
<inclusion>.*</inclusion>
</vbucket>
</inclusions>
Add Inclusions
The inclusion rule requested will be added to the inclusion-rules.xml for the specified virtual bucket.
# curl -v -i -X POST 'http://localhost:8082/plugin/s3proxy/config/rules/inclusion?path=/repl_dir&vbucket=vbucket&inclusion=dir/*'
>
< HTTP/1.1 202 Accepted
HTTP/1.1 202 Accepted
< Content-Length: 0
Content-Length: 0
< Server: Jetty(6.1.26)
Server: Jetty(6.1.26)
<
* Connection #0 to host localhost left intact
* Closing connection #0
List Inclusions
The inclusion rules for the specified virtual bucket will be listed.
# curl -v -i -X GET 'http://localhost:8082/plugin/s3proxy/config/rules/inclusion?vbucket=vbucket'
>
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Content-Length: 139
Content-Length: 139
< Content-Type: application/xml
Content-Type: application/xml
< Server: Jetty(6.1.26)
Server: Jetty(6.1.26)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><inclusions><vbucket name="vbucket"><inclusion>.</inclusion><inclusion>dir/</inclusion></vbucket></inclusions>
Delete Inclusions
The inclusion rules for the specified virtual bucket will be deleted from the inclusion-rules.xml.
# curl -v -i -X DELETE 'http://localhost:8082/plugin/s3proxy/config/rules/inclusion?path=/repl_dir&vbucket=vbucket&inclusion=dir/*'
>
< HTTP/1.1 202 Accepted
HTTP/1.1 202 Accepted
< Content-Length: 0
Content-Length: 0
< Server: Jetty(6.1.26)
Server: Jetty(6.1.26)
5.4. Troubleshooting
Observe information in the log files generated for the WANdisco Fusion server and LiveData for MultiCloud to troubleshoot issues at runtime. Exceptions or log entries with a SEVERE label may represent information that can assist in determining the cause of any problem.
As a distributed system, LiveData for MultiCloud will be impacted by the operation of the underlying S3 endpoints with which it communicates. You may also find it useful to review log or other information from these endpoints.
6. Reference
6.1. MultiCloud Configuration Properties
MultiCloud configuration is managed through the following files.
6.1.1. WANdisco MultiCloud Proxy properties
/etc/wandisco/multicloud-proxy/proxy-server-site.xml
Property | Description | Default Value |
---|---|---|
<multicloud> |
Proxy Threads which process incoming request |
200 |
<multicloud> |
Client Threads which process the downstream requests |
256 |
<multicloud>
<server-config> |
Request Queue where Requests wait to be sent to underlying storage (S3 / Azure Blob Storage) |
1024 |
<multicloud> |
The total timeout for the request/response conversation |
0 |
<multicloud> |
The time in milliseconds that the connection can be idle before it is closed |
60000 |
<multicloud> |
The maximum number of connections |
2*max-client-threads |
<multicloud> |
The limit of incoming connections. This could be set to actively refuse extra connections |
0 |
<multicloud> |
The amount of requests that wait for coordination at the same time |
256 |
6.2. API Supports
6.2.1. S3 Applications
Support for the S3 API.
S.I. No. |
Operations |
Status |
WDOS equivalent |
Comments |
1 |
GET Service |
SUPPORTED |
aws s3api list-buckets --endpoint-url http://<s3proxy-server-host>:<s3proxy-server-port>/ |
|
2 |
DELETE Multiple Objects |
PARTIALLY SUPPORTED |
WD_DELETE_MULTIPLE_OBJECTS Partially Supported(with version id will not be coordinated WD-SPX-11) |
|
3 |
DELETE Object |
PARTIALLY SUPPORTED |
WD_DELETE_OBJECT +Partially Supported (with version id will not be coordinated WD-SPX-9) |
|
4 |
DELETE Object tagging |
PARTIALLY SUPPORTED |
WD_DELETE_OBJECT_TAGGING |
Partially Supported (with version id will not be coordinated WD-SPX-10) |
5 |
GET Object |
SUPPORTED |
||
6 |
GET Object ACL |
SUPPORTED |
||
7 |
GET Object tagging |
SUPPORTED |
||
8 |
GET Object torrent |
SUPPORTED |
||
9 |
HEAD Object |
SUPPORTED |
||
10 |
OPTIONS object |
SUPPORTED |
||
11 |
POST Object |
PARTIALLY SUPPORTED |
WD_POST_OBJECT Partially Supported (supports only actual bucket name and not virtual bucket name) (WD-SPX-347) |
|
12 |
POST Object restore |
NOT SUPPORTED |
Not supported (WD-SPX-48) |
|
13 |
PUT Object |
SUPPORTED |
WD_PUT_OBJECT |
|
14 |
PUT Object - Copy |
SUPPORTED |
||
15 |
PUT Object acl |
SUPPORTED |
||
16 |
PUT Object tagging |
SUPPORTED |
WD_PUT_OBJECT_TAGGING |
|
17 |
SELECT Object Content (Preview) |
SUPPORTED |
||
18 |
Abort Multipart Upload |
SUPPORTED |
||
19 |
Complete Multipart Upload |
SUPPORTED |
WD_COMPLETE_MULTIPART |
|
20 |
Initiate Multipart Upload |
SUPPORTED |
||
21 |
List Parts |
SUPPORTED |
||
22 |
Uploadar Pt |
SUPPORTED |
||
22 |
Upload Part - Copy |
SUPPORTED |
||
23 |
DELETE Bucket |
SUPPORTED |
WD_DELETE_BUCKET |
|
24 |
DELETE Bucket analytics |
PARTIALLY SUPPORTED / WON’T REPLICATE |
Supported, but with no coordination (WD-SPX-224) |
|
25 |
DELETE Bucket cors |
SUPPORTED |
WD_DELETE_BUCKET_CORS |
|
26 |
DELETE Bucket encryption |
SUPPORTED |
WD_DELETE_BUCKET_ENCRYPTION |
|
26 |
DELETE Bucket inventory |
PARTIALLY SUPPORTED / WON’T REPLICATE |
Supported, but with no coordination (WD-SPX-225) |
The specified API contains payload as xml configuration with the dependency on destination bucket which has to be in the same region as the source bucket. |
27 |
DELETE Bucket lifecycle |
SUPPORTED |
WD_DELETE_BUCKET_LIFECYCLE |
|
28 |
DELETE Bucket metrics |
SUPPORTED |
WD_DELETE_BUCKET_METRICS |
|
29 |
DELETE Bucket policy |
PARTIALLY SUPPORTED / WON’T REPLICATE |
Supported, but with no coordination (WD-SPX-229) |
The specified API contains payload as xml configuration with the dependency on destination bucket which has to be in the same region as the source bucket. |
30 |
DELETE Bucket replication |
PARTIALLY SUPPORTED / WON’T REPLICATE |
Supported, but with no coordination |
The specified API contains payload as xml configuration with the dependency on destination bucket which has to be in the different region from the source bucket. |
31 |
DELETE Bucket tagging |
SUPPORTED |
WD_DELETE_BUCKET_TAGGING |
|
31 |
DELETE Bucket website |
SUPPORTED |
WD_DELETE_BUCKET_WEBSITE |
|
32 |
GET Bucket (List Objects) Version 2 |
SUPPORTED |
||
33 |
GET Bucket accelerate |
SUPPORTED |
||
34 |
GET Bucket acl |
SUPPORTED |
||
35 |
GET Bucket analytics |
SUPPORTED |
||
36 |
GET Buckets cors |
SUPPORTED |
||
37 |
GET Bucket encryption |
SUPPORTED |
||
38 |
GET Bucket inventory |
SUPPORTED |
||
39 |
GET Bucket lifecycle |
SUPPORTED |
||
40 |
GET Bucket location |
SUPPORTED |
||
41 |
GET Bucket logging |
SUPPORTED |
||
42 |
GET Bucket metrics |
SUPPORTED |
||
43 |
GET Bucket notification |
SUPPORTED |
||
44 |
GET Bucket Object versions |
SUPPORTED |
||
45 |
GET Bucket policy |
SUPPORTED |
||
46 |
GET Bucket replication |
SUPPORTED |
||
47 |
GET Bucket requestPayment |
SUPPORTED |
||
48 |
GET Bucket tagging |
SUPPORTED |
||
49 |
GET Bucket versioning |
SUPPORTED |
||
50 |
GET Bucket website |
SUPPORTED |
||
51 |
HEAD Bucket |
SUPPORTED |
||
52 |
List Bucket Analytics Configurations |
SUPPORTED |
||
53 |
List Bucket Inventory Configurations |
SUPPORTED |
||
54 |
List Bucket Metrics Configurations |
SUPPORTED |
||
55 |
List Multipart Uploads |
SUPPORTED |
||
56 |
PUT Bucket |
SUPPORTED |
WD_PUT_BUCKET |
|
57 |
PUT Bucket accelerate |
SUPPORTED |
WD_PUT_BUCKET_ACCELERATE |
|
58 |
PUT Bucket acl |
SUPPORTED |
WD_PUT_BUCKET_ACL |
|
59 |
PUT Bucket analytics |
PARTIALLY SUPPORTED / WON’T REPLICATE |
Supported, but with no coordination |
The specified API contains payload as xml configuration with the dependency on destination bucket which has to be in the same region as the source bucket. |
60 |
PUT Bucket encryption |
SUPPORTED |
WD_PUT_BUCKET_CORS |
|
61 |
PUT Bucket cors |
SUPPORTED |
WD_PUT_BUCKET_ENCRYPTION |
|
62 |
PUT Bucket inventory |
PARTIALLY SUPPORTED / WON’T REPLICATE |
Supported, but with no coordination |
The specified API contains payload as xml configuration with the dependency on destination bucket which has to be in the same region as the source bucket. |
63 |
PUT Bucket lifecycle |
SUPPORTED |
WD_PUT_BUCKET_LIFECYCLE |
|
64 |
PUT Bucket logging |
PARTIALLY SUPPORTED / WON’T REPLICATE |
Supported, but with no coordination |
The specified API contains payload as xml configuration with the dependency on destination bucket which has to be in the same region as the source bucket. |
65 |
PUT Bucket metrics UI |
SUPPORTED |
WD_PUT_BUCKET_METRICS |
|
66 |
PUT Bucket notification |
PARTIALLY SUPPORTED / WON’T REPLICATE |
Supported, but with no coordination |
PUT Bucket Notification has payload as xml configuration containing topic arn which has the region that has to be same as the bucket region. |
67 |
PUT Bucket policy |
PARTIALLY SUPPORTED / WON’T REPLICATE |
Supported, but with no coordination |
The specified API contains payload as xml configuration with the dependency on destination bucket which has to be in the same region as the source bucket. |
68 |
PUT Bucket replication |
PARTIALLY SUPPORTED / WON’T REPLICATE |
Supported, but with no coordination |
The specified API contains payload as xml configuration with the dependency on destination bucket which has to be in the different region from the source bucket. |
69 |
PUT Bucket requestPayment |
SUPPORTED |
WD_PUT_BUCKET_REQUESTPAYMENT |
|
70 |
PUT Bucket tagging |
SUPPORTED |
WD_PUT_BUCKET_TAGGING |
|
71 |
PUT Bucket versioning |
SUPPORTED |
WD_PUT_BUCKET_VERSIONING |
6.2.2. Azure APIs
S.I. No. |
Operations |
Actual Azure Storage -V1 |
Actual Azure Storage -V2 |
Actual Azure Storage - Blob Storage |
WDOS equivalent |
Comment |
1 |
List Containers |
SUPPORTED |
SUPPORTED |
SUPPORTED |
||
2 |
Set Blob Service Properties |
SUPPORTED |
SUPPORTED |
SUPPORTED |
||
3 |
Get Blob Service Properties |
SUPPORTED |
SUPPORTED |
SUPPORTED |
||
4 |
Preflight Blob Request |
SUPPORTED |
SUPPORTED |
SUPPORTED |
||
5 |
Get Blob Service Stats |
SUPPORTED |
SUPPORTED |
SUPPORTED |
||
6 |
Create Container |
SUPPORTED |
SUPPORTED |
SUPPORTED |
WD_CREATE_BUCKET |
|
7 |
Get Container Properties |
SUPPORTED |
SUPPORTED |
SUPPORTED |
||
8 |
Get Container Metadata |
SUPPORTED |
SUPPORTED |
SUPPORTED |
||
9 |
Set Container Metadata |
SUPPORTED |
SUPPORTED |
SUPPORTED |
WD_SET_BUCKET_METADATA |
|
10 |
Get Container ACL |
SUPPORTED |
SUPPORTED |
SUPPORTED |
||
11 |
Set Container ACL |
SUPPORTED |
SUPPORTED |
SUPPORTED |
WD_SET_BUCKET_ACL |
|
12 |
Delete Container |
SUPPORTED |
SUPPORTED |
SUPPORTED |
WD_DELETE_BUCKET |
|
13 |
Lease Container |
SUPPORTED |
SUPPORTED |
SUPPORTED |
Supported, but with no coordination |
No Coordination |
14 |
List Blobs |
SUPPORTED |
SUPPORTED |
SUPPORTED |
||
15 |
Put Blob |
SUPPORTED |
SUPPORTED |
SUPPORTED |
WD_PUT_OBJECT |
|
16 |
Get Blob |
SUPPORTED |
SUPPORTED |
SUPPORTED |
||
17 |
Get Blob Properties |
SUPPORTED |
SUPPORTED |
SUPPORTED |
||
18 |
Set Blob Properties |
SUPPORTED |
SUPPORTED |
SUPPORTED |
WD_SET_OBJECT_PROPERTIES |
|
19 |
Get Blob Metadata |
SUPPORTED |
SUPPORTED |
SUPPORTED |
||
20 |
Set Blob Metadata |
SUPPORTED |
SUPPORTED |
SUPPORTED |
WD_SET_OBJECT_METADATA |
|
21 |
Lease Blob |
SUPPORTED |
SUPPORTED |
SUPPORTED |
Supported, but with no coordination |
No Coordination |
22 |
Snapshot Blob |
SUPPORTED |
SUPPORTED |
SUPPORTED |
WD_SNAPSHOT_OBJECT |
|
23 |
Copy blob |
SUPPORTED |
SUPPORTED |
SUPPORTED |
WD_COPY_OBJECT |
|
24 |
Abort Copy Blob |
SUPPORTED |
SUPPORTED |
SUPPORTED |
Supported, but with no coordination |
No Coordination |
25 |
Delete Blob |
SUPPORTED |
SUPPORTED |
SUPPORTED |
WD_DELETE_OBJECT |
|
26 |
Undelete Blob |
SUPPORTED |
SUPPORTED |
SUPPORTED |
WD_UNDELETE_OBJECT |
|
27 |
Set Blob Tier |
NOT SUPPORTED |
SUPPORTED |
SUPPORTED |
WD_SET_OBJECT_TIER |
|
28 |
Put Block |
SUPPORTED |
SUPPORTED |
SUPPORTED |
No Coordination |
|
29 |
Put Block List |
SUPPORTED |
SUPPORTED |
SUPPORTED |
WD_PUT_BLOCK_LIST |
|
30 |
Get Block List |
SUPPORTED |
SUPPORTED |
SUPPORTED |
||
31 |
Put Page |
SUPPORTED |
SUPPORTED |
SUPPORTED |
WD_PUT_PAGE |
|
32 |
Get Page Ranges |
SUPPORTED |
SUPPORTED |
SUPPORTED |
||
33 |
Incremental Copy Blob |
SUPPORTED |
SUPPORTED |
SUPPORTED |
WD_INCREMENTAL_COPY_OBJECT |
|
34 |
Append Block |
SUPPORTED |
SUPPORTED |
SUPPORTED |
WD_APPEND_BLOCK |
6.2.3. S3 ←→ Azure
S.I. No. |
S3 |
WDOS |
Azure |
1 |
Create Bucket |
WD_CREATE_BUCKET |
Create Container |
2 |
Delete Bucket |
WD_DELETE_BUCKET |
Delete Container |
3 |
PUT Bucket tagging |
WD_PUT_BUCKET_TAGGING |
Set Container Metadata |
4 |
Put Object |
WD_PUT_OBJECT |
Put Blob |
5 |
Delete Object |
WD_DELETE_OBJECT |
Delete Blob |
6 |
Copy Object |
WD_COPY_OBJECT |
Copy Blob |
7 |
Complete Multipart Upload |
WD_COMPLETEMULTIPART_UPLOAD |
Put Block List |
8 |
PUT Object Tagging |
WD_PUT_OBJECT_TAGGING |
Set Blob Metadata |
6.3. Consistency check API Calls
The following REST calls allow you to handle consistency checks programatically.
-
Specify the ccTaskId and the name of the zone that will be used as the source of truth for repair.
-
Repair ensures that each replicated bucket has the same content as the source of truth.
-
This may introduce object deletion and creation in all other replicated zones, so use this feature with care.
There are 3 types of operation available:
- Recursive
-
True "Recursive true" will copy in the contents of any subfolders in the target zone.
False "Recursive false" will not repair the contents of any subfolders in the target zone. - Replace
-
True A repair with Replace true will overwrite all duplicate files and directories in target zone.
False A repair with Replace false will not overwrite the duplicate files and directories in target zone. - Preserve
-
True A repair with Preserve true will not remove any data that exists in target zone.
False A repair with Preserve false will remove all the data that exists in target zone.
To start a repair you need to add the cc taskId generated from the consistency check e.g.:
# curl -i -X PUT "http://localhost:8082/plugin/s3proxy/repair/84b417f3-ec60-11e7-aa4b-0242ac120002?srcZone=zone1&preserve=true&recursive=true&replace=false" Enter
HTTP/1.1 202 Accepted
Content-Location: http://localhost:8082/plugin/fusion/task/0088e14d-ec62-11e7-aa4b-0242ac120002
Content-Length: 0
Server: Jetty(6.1.26)
To access the status of the repair task at the location referenced e.g.:
# curl -i -X GET "http://localhost:8082/fusion/task/0088e14d-ec62-11e7-aa4b-0242ac120002" Enter
HTTP/1.1 200 OK
Content-Length: 679
Content-Type: application/xml
Server: Jetty(6.1.26)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><task><taskId>0088e14d-ec62-11e7-aa4b-0242ac120002</taskId><timeCreated>1514548109259</timeCreated><creatorNodeId>400b7699-56d2-44c5-b07c-f42a760b966f</creatorNodeId><timeUpdated>1514528530417</timeUpdated><isDone>true</isDone><aborted>false</aborted><properties><entry><key>TASK_TYPE</key><value>REPAIR_TASK</value></entry><entry><key>REPAIR_STATUS</key><value>COMPLETED</value></entry><entry><key>LOCAL_COMPLETE</key><value>1514548109903</value></entry><entry><key>LOCAL_START</key><value>1514548109259</value></entry></properties><previousTask xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></task>
6.3.1. Start Consistency Check
curl -X POST "http://<fusion-server>:<fusion-server-api-port>/plugin/multicloud/cc?vbucket=<virtual-bucket-name>&prefix=<key-prefix>"
6.3.2. Consistency Check for pending List
curl -X GET "http://<fusion-server>:<fusion-server-port>/plugin/multicloud/cc/pending"
6.4. Consistency check API for Wildcard
This section deals with the specific checks on wildcard buckets.
6.4.1. Consistency Check for Wildcard Bucket
curl -X POST "http://<fusion-server>:<fusion-server-port>/plugin/multicloud/cc?vbucket=<virtual-bucket-name>&bucket=<bucket-name>&prefix=<key-prefix>"
6.4.2. Consistency Check Report for Wildcard Bucket with Actual Bucket
curl -v -i -X GET "http://<fusion-server>:<fusion-server-port>/plugin/multicloud/cc/report/chbucket?bucket="<actual-bucket-name>"& withConsistencyReport=true"
6.4.3. Start a Consistency check for a specific virtual bucket associated with a prefix.
curl -v -i -X POST 'http://<fusion-server>:<fusion-server-api-port>/plugin/multicloud/cc?vbucket=<virtual-bucket-name>&prefix=<key-prefix>'
Example consistency checks
[root@host01-vm1 tmp]# curl -v -i -X POST "http://nnpxy01-vm5.bdfrem.wandisco.com:8082/plugin/multicloud/cc?vbucket=chbucket"
* About to connect() to host01-vm1.cluster.hostname.com port 8082 (#0)
* Trying 10.x.y.z... connected
* Connected to host01-vm1.cluster.hostname.com (10.x.y.z) port 8082 (#0)
> POST /plugin/multicloud/cc?vbucket=chbucket HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: host01-vm1.cluster.hostname.com:8082
> Accept: */*
>
< HTTP/1.1 202 Accepted
HTTP/1.1 202 Accepted
< Content-Location: http://host01-vm1.cluster.hostname.com:8082/fusion/task/641086d9-c855-11e8-acca-e261d5d5398d
Content-Location: http://host01-vm1.cluster.hostname.com:8082/fusion/task/641086d9-c855-11e8-acca-e261d5d5398d
< Content-Length: 0
Content-Length: 0
< Server: Jetty(6.1.26)
Server: Jetty(6.1.26)
<
* Connection #0 to host nnpxy01-vm5.bdfrem.wandisco.com left intact
* Closing connection #0
[root@host01-vm1 tmp]#
6.4.4. Consistency Check for pending List
curl -i -X GET "http://<fusion-server>:<fusion-server-port>/plugin/multicloud/cc/pending"
6.4.5. Repair for Wildcard Buckets
curl -v -i -X PUT "http://<fusion-server>:<fusion-server-api-port>/plugin/multicloud/repair/<virtual-bucket-name>?bucket=<actual-bucket-name>&srcZone=<source-zone-name>&preserve=true&recursive=true&replace=false"
6.4.6. Dynamic configuration of virtual buckets
Virtual buckets (vbucket) can be added, listed, modified or deleted from the proxy-plugin-site.xml using the REST APIs. The virtual bucket details for addition has to be given as an xml file, from which the details will be added to the proxy-plugin-site.xml.
Syntax of dynamic configuration of virtual buckets
Modify virtual buckets
curl -X POST -H "Content-Type: application/xml" -d @config.xml "http://<fusion-server>:8082/plugin/multicloud/config/vbucket"
Delete virtual buckets
curl -X DELETE "http://<fusion-server>:8082/plugin/multicloud/config/vbucket?vbucket=<virtual-bucket-name>&deleteRD=true"
Add virtual buckets
This REST API gives out the addition of virtual buckets to the proxy-plugin-site.xml. The virtual bucket details for addition has to be given as an xml file, from which the details will be added to the proxy-plugin-site.xml.
-
Create replication directory in both DC’s 'fusion fs -mkdir /Newrepl'.
-
Set a permission and ownership for the directory (/Newrepl) from both zones eg:
fusion fs -chmod 777 /Newrepl fusion fs -chown fusion:fusion /Newrepl
Ensure that "fusion" ownership is replaced with the system user that you specified in your Fusion installation. -
Get the membership id
Get a membershipId
curl -X GET "https://<localhost>:8084/fusion/fs" --cacert /opt/fusionssl/ca.crt | xmllint --format -
Example
# curl -X GET "http://nnpxy01-vm5.bdfrem.wandisco.com:8082/fusion/fs" | xmllint --format -
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
101 1014 101 1014 0 0 95255 0 --:--:-- --:--:-- --:--:-- 110k
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<replicatedDirectories>
<total>1</total>
<offset>0</offset>
<size>1</size>
<replicatedDirectory>
<path>/repl</path>
<membershipId>edd9786c-1a8d-4d7a-9466-4cd09f1644f1</membershipId>
<familyRepresentativeId>
<nodeId>d1cf01d6-72f8-40cf-846f-9e1a59d2d30f</nodeId>
<dsmId>9d6615a9-c6c5-11e8-932e-da198c351b5a</dsmId>
</familyRepresentativeId>
<consistencyReport>
<result>UNKNOWN</result>
<lastCheck>-1</lastCheck>
<nextCheck>-1</nextCheck>
<lastCheckResult>UNKNOWN</lastCheckResult>
</consistencyReport>
<leader>
<nodeId>cba7e4ff-5078-47a1-adfa-9a2b4721e7bc</nodeId>
<dsmId>9d6615a9-c6c5-11e8-932e-da198c351b5a</dsmId>
</leader>
<isLeaderElected>true</isLeaderElected>
<isLeader>false</isLeader>
<writer>
<nodeId>d1cf01d6-72f8-40cf-846f-9e1a59d2d30f</nodeId>
<dsmId>9d6615a9-c6c5-11e8-932e-da198c351b5a</dsmId>
</writer>
<isWriterElected>true</isWriterElected>
<isWriter>true</isWriter>
<gsn>5154</gsn>
<transfersInProgress>0</transfersInProgress>
</replicatedDirectory>
</replicatedDirectories>
Add virtual bucket
Sample Configuration XML to Add virtual bucket: config.xml
<vbucket name="vbucket" repl-path="/Newrepl">
<bucket name="chcontainer-nnpxy01-vm4">
<storage-type>AZURE</storage-type>
<zonename>zone1-nnpxy01-vm4</zonename>
<accesskey>chvanmathi</accesskey>
<secretaccesskey>wMUSV7rkwRblkfQfyNOhkdPrOyr8ctFZRXF/WvZ/ASrY8y6CPXavjKDO9bB1GyRYaQvRaOPOBwKLjo8Gy31fGw==</secretaccesskey>
<endpoint-url>http://chvanmathi.blob.core.windows.net/</endpoint-url>
</bucket>
<bucket name="chcontainer-nnpxy01-vm5">
<storage-type>AZURE</storage-type>
<zonename>zone2-nnpxy01-vm5</zonename>
<accesskey>chvanmathi</accesskey>
<secretaccesskey>wMUSV7rkwRblkfQfyNOhkdPrOyr8ctFZRXF/WvZ/ASrY8y6CPXavjKDO9bB1GyRYaQvRaOPOBwKLjo8Gy31fGw==</secretaccesskey>
<endpoint-url>http://chvanmathi.blob.core.windows.net/</endpoint-url>
</bucket>
<exclusions>
<exclusion>.*/.fusion</exclusion>
<exclusion>.*/.fusion/.*</exclusion>
</exclusions>
<inclusions>
<inclusion>.*</inclusion>
</inclusions>
</vbucket>
Example
[root@nnpxy01-vm5 tmp]# curl -v -i -X PUT -H "Content-Type: application/xml" -d @config.xml "http://nnpxy01-vm5.bdfrem.wandisco.com:8082/plugin/multicloud/config/vbucket?membershipId=edd9786c-1a8d-4d7a-9466-4cd09f1644f1"
* About to connect() to nnpxy01-vm5.bdfrem.wandisco.com port 8082 (#0)
* Trying 10.10.214.105... connected
* Connected to nnpxy01-vm5.bdfrem.wandisco.com (10.10.214.105) port 8082 (#0)
> PUT /plugin/multicloud/config/vbucket?membershipId=edd9786c-1a8d-4d7a-9466-4cd09f1644f1 HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: nnpxy01-vm5.bdfrem.wandisco.com:8082
> Accept: */*
> Content-Type: application/xml
> Content-Length: 1038
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
HTTP/1.1 100 Continue
< HTTP/1.1 202 Accepted
HTTP/1.1 202 Accepted
< Content-Location: http://nnpxy01-vm5.bdfrem.wandisco.com:8082/fusion/task/9e72e70c-c84c-11e8-a87c-e261d5d5398d
Content-Location: http://nnpxy01-vm5.bdfrem.wandisco.com:8082/fusion/task/9e72e70c-c84c-11e8-a87c-e261d5d5398d
< Content-Length: 0
Content-Length: 0
< Server: Jetty(6.1.26)
Server: Jetty(6.1.26)
<
* Connection #0 to host nnpxy01-vm5.bdfrem.wandisco.com left intact
* Closing connection #0
[root@nnpxy01-vm5 tmp]#
Add virtual bucket status
[root@nnpxy01-vm5 tmp]# curl -X GET http://nnpxy01-vm5.bdfrem.wandisco.com:8082/fusion/task/9e72e70c-c84c-11e8-a87c-e261d5d5398d | xmllint --format -
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
111 894 111 894 0 0 201k 0 --:--:-- --:--:-- --:--:-- 291k
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<dsmTask>
<taskId>9e72e70c-c84c-11e8-a87c-e261d5d5398d</taskId>
<timeCreated>1538709203622</timeCreated>
<creatorNodeId>d1cf01d6-72f8-40cf-846f-9e1a59d2d30f</creatorNodeId>
<timeUpdated>1538709204304</timeUpdated>
<isDone>true</isDone>
<aborted>false</aborted>
<properties>
<entry>
<key>PROPOSAL_SENT</key>
<value>true</value>
</entry>
<entry>
<key>TASK_TYPE</key>
<value>UPDATE_VBUCKET_CONFIG_BY_PATH</value>
</entry>
</properties>
<previousTask>9e6eef6b-c84c-11e8-a87c-e261d5d5398d</previousTask>
<message>VBucketUpdateProposal [virtualBucketDTO=com.wandisco.multicloud.dto.VirtualBucketDTO@2c4708da, operation=CREATE, path=/Newrepl, taskIdentity=9e72e70c-c84c-11e8-a87c-e261d5d5398d, proposerNodeId=d1cf01d6-72f8-40cf-846f-9e1a59d2d30f, origin=zone2-nnpxy01-vm5, vBucketName=vbucket]</message>
<dsmId>9e6ec859-c84c-11e8-a87c-e261d5d5398d</dsmId>
</dsmTask>
[root@nnpxy01-vm5 tmp]#
List virtual buckets
This REST API gives out the listing of virtual bucket configured in the proxy-plugin-site.xml.
For example
[root@nnpxy01-vm5 tmp]# curl -v -X GET 'http://nnpxy01-vm5.bdfrem.wandisco.com:8082/plugin/multicloud/config/vbucket?vbucket=chbucket' | xmllint --format -
* About to connect() to nnpxy01-vm5.bdfrem.wandisco.com port 8082 (#0)
* Trying 10.10.214.105... connected
* Connected to nnpxy01-vm5.bdfrem.wandisco.com (10.10.214.105) port 8082 (#0)
> GET /plugin/multicloud/config/vbucket?vbucket=chbucket HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: nnpxy01-vm5.bdfrem.wandisco.com:8082
> Accept: */*
>
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0< HTTP/1.1 200 OK
< Content-Length: 1381
< Content-Type: application/xml
< Server: Jetty(6.1.26)
<
{ [data not shown]
106 1381 106 1381 0 0 52348 0 --:--:-- --:--:-- --:--:-- 55240* Connection #0 to host nnpxy01-vm5.bdfrem.wandisco.com left intact
* Closing connection #0
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<multicloud>
<vbucket name="chbucket" repl-path="/repl">
<bucket name="chcontainer-nnpxy01-vm4">
<storage-type>AZURE</storage-type>
<zonename>zone1-nnpxy01-vm4</zonename>
<accesskey>chvanmathi</accesskey>
<secretaccesskey>wMUSV7rkwRblkfQfyNOhkdPrOyr8ctFZRXF/WvZ/ASrY8y6CPXavjKDO9bB1GyRYaQvRaOPOBwKLjo8Gy31fGw==</secretaccesskey>
<provider/>
<endpoint-url>http://chvanmathi.blob.core.windows.net/</endpoint-url>
<chunked-encoding>true</chunked-encoding>
<path-style-access>true</path-style-access>
<endPointProtocol>http</endPointProtocol>
<endPointHost>chvanmathi.blob.core.windows.net</endPointHost>
</bucket>
<bucket name="chcontainer-nnpxy01-vm5">
<storage-type>AZURE</storage-type>
<zonename>zone2-nnpxy01-vm5</zonename>
<accesskey>chvanmathi</accesskey>
<secretaccesskey>wMUSV7rkwRblkfQfyNOhkdPrOyr8ctFZRXF/WvZ/ASrY8y6CPXavjKDO9bB1GyRYaQvRaOPOBwKLjo8Gy31fGw==</secretaccesskey>
<provider/>
<endpoint-url>http://chvanmathi.blob.core.windows.net/</endpoint-url>
<chunked-encoding>true</chunked-encoding>
<path-style-access>true</path-style-access>
<endPointProtocol>http</endPointProtocol>
<endPointHost>chvanmathi.blob.core.windows.net</endPointHost>
</bucket>
<exclusions>
<exclusion>.*/.fusion</exclusion>
<exclusion>.*/.fusion/.*</exclusion>
</exclusions>
<inclusions>
<inclusion>.*</inclusion>
</inclusions>
</vbucket>
</multicloud>
Modify virtual buckets
This REST API modifies virtual bucket in the proxy-plugin-site.xml. The bucket details for modification has to be given as an xml file, from which the details will be taken and specified bucket name will be modified in the proxy-plugin-site.xml.
Sample Configuration XML to Modify Virtual Bucket: config.xml
<vbucket name="vbucket" repl-path="/Newrepl">
<bucket name="chcontainer-New">
<storage-type>AZURE</storage-type>
<zonename>zone1-nnpxy01-vm4</zonename>
<accesskey>chvanmathi</accesskey>
<secretaccesskey>wMUSV7rkwRblkfQfyNOhkdPrOyr8ctFZRXF/WvZ/ASrY8y6CPXavjKDO9bB1GyRYaQvRaOPOBwKLjo8Gy31fGw==</secretaccesskey>
<endpoint-url>http://chvanmathi.blob.core.windows.net/</endpoint-url>
</bucket>
<bucket name="chcontainer-New">
<storage-type>AZURE</storage-type>
<zonename>zone2-nnpxy01-vm5</zonename>
<accesskey>chvanmathi</accesskey>
<secretaccesskey>wMUSV7rkwRblkfQfyNOhkdPrOyr8ctFZRXF/WvZ/ASrY8y6CPXavjKDO9bB1GyRYaQvRaOPOBwKLjo8Gy31fGw==</secretaccesskey>
<endpoint-url>http://chvanmathi.blob.core.windows.net/</endpoint-url>
</bucket>
<exclusions>
<exclusion>ex.*</exclusion>
<exclusion>.*/.fusion/.*</exclusion>
</exclusions>
<inclusions>
<inclusion>in.*</inclusion>
</inclusions>
</vbucket>
Example
[root@nnpxy01-vm5 tmp]# curl -v -i -X POST -H "Content-Type: application/xml" -d @config.xml "http://nnpxy01-vm5.bdfrem.wandisco.com:8082/plugin/multicloud/config/vbucket" * About to connect() to nnpxy01-vm5.bdfrem.wandisco.com port 8082 (#0) * Trying 10.10.214.105... connected * Connected to nnpxy01-vm5.bdfrem.wandisco.com (10.10.214.105) port 8082 (#0) > POST /plugin/multicloud/config/vbucket HTTP/1.1 > User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2 > Host: nnpxy01-vm5.bdfrem.wandisco.com:8082 > Accept: */* > Content-Type: application/xml > Content-Length: 1018 > < HTTP/1.1 202 Accepted HTTP/1.1 202 Accepted < Content-Location: http://nnpxy01-vm5.bdfrem.wandisco.com:8082/fusion/task/ca9bdf63-c84d-11e8-a87c-e261d5d5398d Content-Location: http://nnpxy01-vm5.bdfrem.wandisco.com:8082/fusion/task/ca9bdf63-c84d-11e8-a87c-e261d5d5398d < Content-Length: 0 Content-Length: 0 < Server: Jetty(6.1.26) Server: Jetty(6.1.26) < * Connection #0 to host nnpxy01-vm5.bdfrem.wandisco.com left intact * Closing connection #0 [root@nnpxy01-vm5 tmp]#
Modify virtual buckets Status
[root@nnpxy01-vm5 tmp]# curl -X GET http://nnpxy01-vm5.bdfrem.wandisco.com:8082/fusion/task/ca9bdf63-c84d-11e8-a87c-e261d5d5398d | xmllint --format - % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 101 913 101 913 0 0 134k 0 --:--:-- --:--:-- --:--:-- 178k <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <dsmTask> <taskId>ca9bdf63-c84d-11e8-a87c-e261d5d5398d</taskId> <timeCreated>1538709707205</timeCreated> <creatorNodeId>d1cf01d6-72f8-40cf-846f-9e1a59d2d30f</creatorNodeId> <timeUpdated>1538709707365</timeUpdated> <isDone>true</isDone> <aborted>false</aborted> <properties> <entry> <key>PROPOSAL_SENT</key> <value>true</value> </entry> <entry> <key>TASK_TYPE</key> <value>UPDATE_VBUCKET_CONFIG_BY_PATH</value> </entry> </properties> <previousTask xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> <message>VBucketUpdateProposal [virtualBucketDTO=com.wandisco.multicloud.dto.VirtualBucketDTO@5f192ae3, operation=UPDATE, path=/Newrepl, taskIdentity=ca9bdf63-c84d-11e8-a87c-e261d5d5398d, proposerNodeId=d1cf01d6-72f8-40cf-846f-9e1a59d2d30f, origin=zone2-nnpxy01-vm5, vBucketName=vbucket]</message> <dsmId>9e6ec859-c84c-11e8-a87c-e261d5d5398d</dsmId> </dsmTask> [root@nnpxy01-vm5 tmp]#
Delete virtual buckets
This REST API delete virtual buckets from the proxy-plugin-site.xml. The requested virtualBucket/bucket will be deleted from the proxy-plugin-site.xml
IMFORMATION: If the deleteRD is false, the virtual bucket will be remove from the proxy-plugin-site.xml but repl directory will not remove from the UI.
If the deleteRD is true, the virtual bucket will be remove from the proxy-plugin-site.xml and also repl directory from the UI.
[root@nnpxy01-vm5 tmp]# curl -v -i -X DELETE "http://nnpxy01-vm5.bdfrem.wandisco.com:8082/plugin/multicloud/config/vbucket?vbucket=vbucket&deleteRD=true"
* About to connect() to nnpxy01-vm5.bdfrem.wandisco.com port 8082 (#0)
* Trying 10.10.214.105... connected
* Connected to nnpxy01-vm5.bdfrem.wandisco.com (10.10.214.105) port 8082 (#0)
> DELETE /plugin/multicloud/config/vbucket?vbucket=vbucket&deleteRD=true HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: nnpxy01-vm5.bdfrem.wandisco.com:8082
> Accept: */*
>
< HTTP/1.1 202 Accepted
HTTP/1.1 202 Accepted
< Content-Location: http://nnpxy01-vm5.bdfrem.wandisco.com:8082/fusion/task/829112e4-c84e-11e8-a87c-e261d5d5398d
Content-Location: http://nnpxy01-vm5.bdfrem.wandisco.com:8082/fusion/task/829112e4-c84e-11e8-a87c-e261d5d5398d
< Content-Length: 0
Content-Length: 0
< Server: Jetty(6.1.26)
Server: Jetty(6.1.26)
<
* Connection #0 to host nnpxy01-vm5.bdfrem.wandisco.com left intact
* Closing connection #0
[root@nnpxy01-vm5 tmp]#