Isilon製品単体はもちろん素晴らしいのですが、実はIsilonと連携するツールは様々なものがあります。

普段はIsilonの製品中心にお話しすることが多く、このようなツールについては中々ご紹介する機会が無いので、

本コミュニティにブログ形式で数回にわたり連載したいと思います。


今回はDocker VolumeのプラグインであるREX-RayとIsilonについてご紹介します。

code.png

                                                                                     https://thecodeteam.com/


REX-Ray

DockerのプラグインであるREX-Rayは、{code}コミュニティの中でも活発なプロジェクトです。DellEMCのストレージ以外にもAmazon、Microsoft、Google、Ceph、OpenStack Cinder、VirtualBoxなど様々なストレージをサポートしていますが、本ブログではIsilonと連携させるための方法について説明します。

 

IsilonはファイルストレージですのでDockerコンテナへはNFSでボリュームを提供します。

NFSであればコンテナからのマウントも簡単ですので個々にマウントでも良いですが、REX-Rayを用いることで、例えばサービス基盤として同じ用途のコンテナを複数構築する場合、Dockerからファイル(Isilon)やブロック(ScaleIO)などのストレージを意識することなく同一のオペレーションで実行できますのでインフラの管理を簡素化することが可能です。

もちろん、ファイルストレージ(NFS)ならではのメリットとしてLinuxクライアントのコンテナ(開発環境)で開発したものをIsilon上に配置して開発したデータを、そのまま本番側にマウントして運用することもできます。


なお、今回はテストするにあたり下記の環境を用意しました。

env.png

実際に、REX-Ray+Isilonを試して頂く際の環境としては、上記のようにDockerとREX-Ray用のLinux 1台と、Isilonクラスタを準備します。もちろん、Isilonはシミュレータでも動作上問題ありません。

まず、Isilon側で事前設定をしてから次にREX-Rayのインストールをしていきます。



Isilon側での事前準備

1. ライセンス投入

REX-RayライブラリであるlibStorageを動作させるにあたりSnapshotIQのライセンスが必須となります。

また、Dockerでボリュームを作成する際にサイズ指定したい場合は、SmartQuotasライセンスが必要になります。

Isilonはボリュームという概念が無いため、サイズを指定するとDockerで提供するディレクトリを作成する時にクォータのハードリミットが設定されます。

(余談ですがSmartQuotasは、IsilonとOpenStack Manila連携の際には必須のライセンスです。Manilaについては別の回でご紹介します。)


2. ユーザ権限付与

REX-RayではIsilonのPlatform APIを実行してボリューム作成や管理を行いますのでAPIでアクセスするユーザを作成して以下の権限を付与します。テスト用途であればrootユーザでも可です。

 Namespace Access (ISI_PRIV_NS_IFS_ACCESS)

 Platform API (ISI_PRIV_LOGIN_PAPI)

 NFS (ISI_PRIV_NFS)

 Restore (ISI_PRIV_IFS_RESTORE)

 Snapshot (ISI_PRIV_SNAPSHOT)

 Quota (ISI_PRIV_QUOTA) ※クォータが必要な場合


GUIでも簡単にグループとロールが作成できますが、CLIで実施する場合は下記を参考にしてください。

例:rexray_roleという名前のロールを作成し上記権限を含めrexrayユーザにロールを割り当てる場合

isi auth roles create --name rexray_role

isi auth roles modify rexray_role --add-priv  ISI_PRIV_NS_IFS_ACCESS

isi auth roles modify rexray_role --add-priv  ISI_PRIV_LOGIN_PAPI

isi auth roles modify rexray_role --add-priv  ISI_PRIV_NFS 

isi auth roles modify rexray_role --add-priv  ISI_PRIV_IFS_RESTORE

isi auth roles modify rexray_role --add-priv  ISI_PRIV_QUOTA 

isi auth roles modify rexray_role --add-priv  ISI_PRIV_SNAPSHOT

isi auth roles modify rexray_role --add-user rexray

 

3. Exportsの作成

Dockerへ提供するディレクトリを作成しNFS Exportsを設定します。

Dockerのコンテナは、サブディレクトリにNFSマウントしますので、Enable mount access to subdirectories(サブディレクトリのマウントアクセスを許可)をチェックしてください。


REX-Rayインストール

REX-Rayのインストールは、下記のcurlコマンドで1発でインストールできます。バージョンを指定してインストールも出来ますがステーブル版の最新をお使い頂くことを推奨します。


1. インストールの実行

[root@Rex ~]# curl -sSL https://dl.bintray.com/emccode/rexray/install | sh


rexray has been installed to /usr/bin/rexray


REX-Ray

-------

Binary: /usr/bin/rexray

Flavor: client+agent+controller

SemVer: 0.11.0

OsArch: Linux-x86_64

Commit: 508023f4b0e4974f1844c26b39af7c4219f4c7a9

Formed: Mon, 16 Oct 2017 03:07:06 EDT

 

2. コンフィグファイルの作成

REX-Rayの起動に必要なconfig.ymlを作成します。

config.ymlは下記の例をコピペ頂いてご利用頂ければと思いますが、REX-Ray Configuration Generatorを用いることにより簡単に作成できます。

config.png

                              REX-Ray Configuration Generator http://rexrayconfig.codedellemc.com/

 

コンフィグファイルは、/etc/rexray/config.ymlを配置します。

/etc/rexray/config.ymlのサンプル

libstorage:

  service: isilon

isilon:

  endpoint: https://dockerfs.isilon.local:8080/

  group: wheel

  username: rexray

  password: a

  insecure: true

  volumePath: /ifs/volumes

  quotas: true

  nfsHost: dockerfs.isilon.local

  dataSubnet: 192.168.1.0/24

コンフィグファイルの項目についてですが、

insecureは、SSL通信を無効にしたい場合はtrueにします。

volumePathは、Docker Volumeを格納するディレクトリを指定します。デフォルトは/ifs/volumesとなります。(今回は明示的に記述しています)

quotasは、クォータを使用する場合はtrueにします。(要SmartQuotasライセンス)

dataSubnetは、Docker側のSubnetを指定します。(REX-Ray+Isilonのコンフィグは難しくないのですが唯一間違えやすいところです)


3. REX-Rayの起動

[root@Rex ~]# rexray start

● rexray.service - rexray

   Loaded: loaded (/etc/systemd/system/rexray.service; enabled; vendor preset: disabled)

   Active: active (running) since Mon 2017-10-23 02:32:46 EDT; 50ms ago

Main PID: 11312 (rexray)

   CGroup: /system.slice/rexray.service

           └─11312 /usr/bin/rexray start -f

Oct 23 02:32:46 Rex systemd[1]: Started rexray.

Oct 23 02:32:46 Rex systemd[1]: Starting rexray...

 

 

いざ、実行

1. Dockerからボリュームの作成

[root@Rex ~]# docker volume create --driver rexray --opt size=100 --name isi_vol1

isi_vol1

この時点で、Isilon上の/ifs/volumes配下にisi_vol1/dataという名前のサブディレクトリが作成されisi_vol1に100GBのクォータがセットされます。(/ifs/volumes/isi_vol1/data)

 

おまけ. Isilon側から確認

s210-1# isi quota list

Type      AppliesTo  Path                     Snap  Hard    Soft  Adv  Used

----------------------------------------------------------------------------

directory DEFAULT    /ifs/volumes/isi_vol1    No    100.00G -     -    8.1k

----------------------------------------------------------------------------

Total: 1


2. ボリュームの確認

[root@Rex ~]# docker volume ls

DRIVER              VOLUME NAME

rexray              isi_vol1


3. コンテナの起動

con1という名前のコンテナを起動する際に上記で作成したボリュームを、/rex_mntというディレクトリにマウントします。

[root@Rex ~]# docker run -ti --name=con1 --volume-driver=rexray -v isi_vol1:/rex_mnt ubuntu '/bin/bash'

 

おまけ. マウントの確認(コンテナ)

dfやmountコマンドでマウント状態を確認してみると、コンテナとサーバ側でマウントされていることがわかります。

dockerfs.isilon.local:/ifs/volumes/isi_vol1/data on /rex_mnt

 

おまけ. マウントの確認(サーバ)

dockerfs.isilon.local:/ifs/volumes/isi_vol1 on /var/lib/libstorage/volumes/isi_vol1/data


以上、簡単に試せますので是非REX-Ray+Isilonを使ってみてください!

 

 

参考情報

REX-Ray (機能、アーキテクチャ、ホワイトペーパ) https://rexray.thecodeteam.com/

REX-Ray (インストレーション、構成、トラブルシューティング) http://rexray.readthedocs.io/en/stable/

REX-Ray Configuration Generator http://rexrayconfig.codedellemc.com/

Isilon simulator https://www.emc.com/products-solutions/trial-software-download/isilon.htm



バックナンバー

IsilonianTech 第1回 Isilonとオープンソース ~REX-Ray編~

IsilonianTech 第2回 Isilonとオープンソース ~OpenStack Manila編~

IsilonianTech 第3回 Isilonとオープンソース ~Isilon Data Insights Connector~

IsilonianTech 第4回 Software Defined Storage ~IsilonSD Edge~

IsilonianTech 第5回 Isilonとオープンソース ~Isilon-POSH~

IsilonianTech 第6回 Isilonとオープンソース ~Elastic Stack編~

IsilonianTech 第7回 Isilonとデータアナリティクス ~Cloudera編~

IsilonianTech 第8回 Elastic Cloud Storage (ECS) ~ECS Community Edition~

IsilonianTech 第9回 ISILON + ECS = UNLIMITED ~Isilon CloudPools~



さいごに

Isilonの良さを知っていただくために、このたびIsilonianTechブログをスタートしました!

今後はオープンソース関連では順次、OpenStack Manila、POSH、Data Insightなど掲載していく予定です。

また、オープンソース以外でも最近お問合せの多いSD Edge(私の担当のお客様でも大規模に採用頂きました)や、あらためてIsilon

の機能面の良さなど、いろいろと情報を発信していきたいと思います。

(一応、全て検証は済んでいるのですが、月イチくらいでブログにアップしていければと思います。。)



安井 謙治

EMCジャパン株式会社

アイシロン事業本部 SE部