OSSのオブジェクトストレージ Scality S3 Server をDocker 上で運用
運用のオブジェクトストレージには、Windows クライアント、ownCloud、Linux等のクライアントからのアクセスが出来ます
構成例
- Scality S3 オブジェクトストレージ (Dockerで運用 IP=192.168.100.56:8000 )
- Windows ユーザー / Cyberduck で オブジェクトストレージ へアクセス
- ownCloud ユーザー / 外部ストレージとして オブジェクトストレージ へアクセス
- Linux ユーザー / aws cli コマンドなどで オブジェクトストレージ へアクセス
Dockerの環境
docker 環境 ( CentOS 7 / xfs file system / IP=192.168.100.56 )
標準の scality/s3server イメージをダウンロード
# docker pull scality/s3server
コンテナの実行
# docker run -d –name s3server -p 8000:8000 scality/s3server
docker container IP : 192.168.100.56:8000
Windows クライアントから Scality S3 オブジェクトストレージへのアクセス
- Cyberduckを利用します
- Cyberduck S3 HTTP プロファイル を以下からダウンロードします。
- https://svn.cyberduck.io/trunk/profiles/S3%20(HTTP).cyberduckprofile
S3 HTTP を選択
- IP 192.168.100.56:8000
- アクセスキー accessKey1
- シークレットアクセスキー verySecretKey1
フォルダを作成 test-new
ファイルアップロード & フォルダを作成 2nd-folder
ownCloudから Scality S3 オブジェクトストレージ へのアクセス
ownCloud ( IP=192.168.100.50 ) の設定
ownCloud の外部ストレージとして Object Storage (IP=192.168.100.56:8000 ) へのアクセスを設定
- 外部ストレージを有効に設定
- 外部ストレージを追加 : type は amazon S3
- フォルダ名は、Cyberduckを利用時にObject Storage へ作成した test-new
- バケット名も test-new
- IP : 192.168.100.56 : 8000
- アクセスキー : accessKey1
- パスワード : verySecretKey1
赤色の☐ が 緑色の〇 になると 接続完了です
ownCloud へアクセス
test-new フォルダーが 表示されています
test-new フォルダへ移動
2nd-folder フォルダ へ移動 ( test-new > 2nd-folder )
Linux からオブジェクトストレージへアクセス
aws cli でアクセス
Client ( IP = 192.168.100.60 ) から aws cli を利用して、Object Storage ( 192.168.100.56:8000) へアクセス
- # curl ”https://bootstrap.pypa.io/get-pip.py” -o “get-pip.py”
- # sudo pip install awscli
- # mkdir ~/.aws
- # cat ~/.aws/credentials
[default]
aws_access_key_id = accessKey1
aws_secret_access_key = verySecretKey1
s3 コマンドでのフォルダの確認
[root@localhost]# aws s3 –endpoint-url http://192.168.100.56:8000 ls
2017-05-18 17:26:03 test-new
s3コマンドでファイルのアップロード (php.log ファイルを test-new バケット以下にアップロード)
[root@localhost]# aws s3 cp /tmp/php.log –endpoint-url http://192.168.100.56:8000 s3://test-new
upload : ./php.log to s3://test-new/php.log
s3コマンドでバケットを削除 ( test-new バケット 内のファイルなどの削除・test-new バケットは削除できない )
[root@localhost]# aws s3 rb s3://test-new –endpoint-url http://192.168.100.56:8000 –force
delete: s3://test-new/php.log
delete: s3://test-new/xpdf-3.04-6.el6.x86_64.rpm
delete: s3://test-new/2nd-folder/
delete: s3://test-new/am1-002620.pdf
remove_bucket: test-newh ~0 file(s) remaining (calculating…)
S3API コマンドの例
[root@localhost tmp]# aws s3api –endpoint-url http://192.168.100.56:8000 list-buckets
{
“Owner”: {
“DisplayName”: “Bart”,
“ID”: “79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be”
},
“Buckets”: [
{
“CreationDate”: “2017-05-19T03:35:02.332Z”,
“Name”: “test-new”
}
]
}
[root@localhost tmp]# aws s3api –endpoint-url http://192.168.100.56:8000 get-bucket-acl –bucket test-new
{
“Owner”: {
“DisplayName”: “Bart”,
“ID”: “79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be”
},
“Grants”: [
Docker コンテナのデータ保持について
[root@centos72 containers]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bd313afc119b scality/s3server “/usr/src/app/docker-” 34 hours ago Up 4 hours 0.0.0.0:8000->8000/tcp s3server
scality/s3serverコンテナは、利用しない場合には廃棄ではなく停止をさせます
# docker stop bd313afc119b
必要な際には停止したコンテナを再起動させることで、以前に登録したオブジェクトストレージ内のデータは残っており、そのまま利用が出来ます。
# docker start bd313afc119b
[root@localhost]# aws s3 –endpoint-url http://192.168.100.56:8000 ls
2017-05-19 12:35:02 test-new
scality/s3serverを利用することで、自前のオブジェクトストレージの運用が出来ます。