Oracle Cloud の Storage Gateway(ストレージ・ゲートウェイ)を使ってみた

みなさまこんにちわ。id-nakamuraaです。
今回はOracle Cloud Infrastructure(OCI)の Storage Gateway(ストレージ・ゲートウェイ)を使用してみた内容を書いていきます。

ストレージ・ゲートウェイは、OCIのコンピュートやオンプレミスから接続できるクラウド・ストレージ・ゲートウェイです。
ストレージ・ゲートウェイを使用することで、クライアントはファイル・システムをリモート・サーバーにマウントし、ローカル・ファイル・システムのようにネットワーク経由でリモート・ファイル・システムにアクセスできます。

<OCI 使用可能リージョン>※2020年2月現在
US East (Ashburn)
US West (Phoenix)
Canada Southeast (Toronto)
Switzerland North (Zurich)
UK South (London)
Germany Central (Frankfurt)
Brazil East (Sao Paulo)
Sao Paulo Classic
Japan Central (Osaka)
Australia East (Sydney)
UK Gov South (London)
※東京リージョンは対象外です( ; _ ; )
Japan East (Tokyo)
(2020/02/07 UPDATE)
東京リージョンでも使用可能とのことです!

公式ドキュメント docs.oracle.com
docs.oracle.com
www.oracle.com

構築する

OCIのパブリックネットワーク上のコンピュートにストレージ・ゲートウェイをインストールし、
オブジェクトストレージをクライアントサーバーの /sgtest として使用できるよう構築していきます。
こちらは US East (Ashburn)リージョン上で作成します。

f:id:a-nakamuraa:20200130144405j:plain
構成図

0.事前準備

以下を事前に作成しました
・VCN ※DNS解決を外して作成
・パブリックネットワーク上にストレージゲートウェイサーバーを作成
・プライベートネットワーク上にクライアントサーバーを作成
・APIキーが使用できるユーザーを作成

<ハードウェア要件>
- CPU:2つ以上のデュアル・コアCPUまたはそれ以上。(oracleは4コアCPUを推奨)
- メモリー:16GB 以上。 5000万ファイル未満は32GB、1億ファイル未満は64GB。
- ローカルストレージ:600GB以上。

<ソフトウェア要件>
- Oracle Linux7 以上
- Docker1.12.6 を使用
- NFSv4 を使用
※Docker1.12.6とNFSv4はストレージゲートウェイのインストールソフトウェアによりインストールされます

1.ストレージゲートウェイのインストール

ストレージゲートウェイインストール先の準備
・ストレージ・ゲートウェイサーバーにブロックボリューム(600GB)をアタッチします。
  (参考)https://community.oracle.com/docs/DOC-1019345

・ストレージゲートウェイサーバーにログイン

・ パーティションを作成

$ sudo fdisk /dev/sdb  
 m:fdiskオプションを表示させます  
 g:新しいからのGPTパーティション表を作成  
 w:ディスクに表を書き込み、終了します    

・ファイル・システム(/dev/sdb)を作成

$ sudo mkfs -t ext3 /dev/sdb  

・マウント・ディレクトリ(/ocisg)を作成

$ sudo mkdir /ocisg  

・ドライブをマウント

$ sudo mount /dev/sdb /ocisg  

ストレージゲートウェイインストール
インストールソフトウェアのダウンロード、インストールを進めていきます

・以下リンク先からStorage Gateway 1.3 tarアーカイブをダウンロードし、/tmp ディレクトリにコピーします
Oracle Cloud Infrastructure Storage Gateway

・ダウンロードファイルを解凍

$ cd /tmp  
$ sudo tar xvzf ocisg-1.3.tar.gz  

・ocisg-1.3へ移動し、インストールスクリプトを実行

$ cd ocisg-1.3  
$ sudo ./ocisg-install.sh  

スクリプト実行中に以下を聞かれるのでパスを入力します

インストール先
Enter the install location press enter for default (/opt/ocisg/) : /opt/ocisg   

ファイルシステムキャッシュのパス  
Enter the path for OCISG file system cache : /ocisg/sg/cache  

メタデータ・ストレージのパス   
Enter the path for OCISG metadata storage : /ocisg/sg/metadata  
  
ログストレージのパス    
Enter the path for OCISG log storage : /ocisg/sg/log    

・Dockerを起動

$ sudo systemctl start docker  

・ストレージ・ドライバの確認
 Storage Driver項目がdevicemapperになっていることを確認します。

$ sudo docker info  

devicemappeになっていない場合は、dockerを停止、daemon.jsonを編集、docker起動し直します

$ sudo systemctl stop docker  
$ sudo vim /etc/docker/daemon.json  
   {"storage-driver": "devicemapper"}   
$ sudo systemctl start docker  

2. ファイルシステム作成

ストレージゲートウェイ管理コンソールにログイン
ストレージゲートウェイにアクセスするためにセキュリティリストを更新します。

・管理コンソールのポート番号を確認

$ sudo ocisg info

f:id:a-nakamuraa:20200130114803j:plain
sudo ocisg info 結果

・セキュリティリストに管理コンソールのポートを追加(パブリックネットワーク側)

f:id:a-nakamuraa:20200130120534j:plain
セキュリティリスト設定

・ブラウザから管理コンソールへアクセス

https://<ストレージゲートウェイのパブリックIP>:<管理コンソール ポート番号>  
例)https://129.213.161.30:32769  

・パスワードを設定し、ログインする

f:id:a-nakamuraa:20200128113743j:plain
ストレージゲートウェイ 管理コンソール ログイン画面

ファイルシステム作成
・管理コンソール画面の「Create a File System」をクリックして各情報を入力
 「Show Advanced File System Configuration▼」をクリックするとNFS情報を入力可能になります。

f:id:a-nakamuraa:20200130132022j:plain
ファイルシステム作成画面
f:id:a-nakamuraa:20200130132854j:plain
save後画面

・「connect」をクリック
ファイルシステム作成時にコンパートメントを指定した場合、バケットはそのコンパートメント内に作成されます。それ以外はroot配下に作成されます。 ファイルシステムと同じ名前のバケットがオブジェクト・ストレージに存在する場合、ファイルシステムはそのバケットに接続します。存在しない場合は新規作成され、接続します。

f:id:a-nakamuraa:20200130134204j:plain
接続完了後

3.クライアントサーバーからマウント

・ストレージゲートウェイサーバーでNFSポートを確認

$ sudo ocisg info

f:id:a-nakamuraa:20200130134741j:plain
sudo ocisg info 結果

・セキュリティリストにNFSポートを追加(パブリック、プライベートどちらも追加)

f:id:a-nakamuraa:20200130135331j:plain
セキュリティリスト設定画面

・クライアントサーバーにディレクトリ(/sgtest)を作成

$ sudo mkdir /sgtest

・ファイル・システム(/sgtest-mount-point)をマウントを実施

$ sudo mount -t nfs -o vers=4,port=<NFSポート番号> <ストレージゲートウェイのプライベートIP>:<ファイルシステム名> <クライアントのディレクトリ>  
例)sudo mount -t nfs -o vers=4,port=32770 172.16.1.3:/sgtest-mount-point /sgtest

f:id:a-nakamuraa:20200130142436j:plain
マウント後の確認

クライアントでファイルを作成して、オブジェクトストレージ側に反映されることを確認できました!

$ touch /sgtest/file ; date
2020130日 木曜日 05:26:26 GMT

f:id:a-nakamuraa:20200130143856j:plain
オブジェクトストレージ側の確認画面

さいごに

今回はストレージゲートウェイをOCIのコンピュートにインストールして使用しましたが、オンプレミスのサーバーにインストールしても使用できます。(Oracle Linux7以上という要件がありますが、、)
OCIでは2020年2月現在 東京リージョンでは使用できないので、大阪リージョンで構築することが多くなりそうです!
東京リージョンで使用できるそうです!!!

告知

次回は 2020/2/18に STEPUP OCI、大阪リージョン(仮)というコンテンツで開催されます。 興味がある方、是非ご参加ください!

fullenergy-oci.connpass.com