NetApp Tech OnTap NetApp Logo
NetApp Tech OnTap
     
NetApp Docker Volume Plugin (nDVP for ONTAP 編)
シェアするNetAppオフィシャルFacebook   ツイート

 

はじめに

2016/10/05 に開催された Red Hat Forum 2016 で「"なぜストレージベンダーが Docker に取り組んでいるのか?"」 という セッションを行いました。内容としては、次世代データセンター構築のために必要な要素、ストレージはどのようなものが求められるかということをお話させていただきました。この記事では、プレゼンテーションの中で説明した NetApp Docker Volume Plugin のインストール方法、設定方法、実行方法について紹介します。

データ永続化というテーマはコンテナエコシステムの中で出てきている概念です。 最近では MESOSPHERE 社から Welcome to the era of Container 2.0 のタイトルでブログがポストされています。

概要としてステートレス・ステートフルなサービスを同一のリソースないでオーケストレーションする必要があるという内容でした。

本記事の記載に沿って実施いただければ nDVP を一通り試していただけるようになっています。なお、本記事は NFS のサービスを提供する SVM を作成済みである前提です。

NetApp Docker Volume Plugin (nDVP) とは

NetApp が提供しているすべてのフラッシュストレージ (All Flash FAS, E-series, SolidFire) を Docker へ統合し Docker Engine を拡張出来るようにしたものです。

nDVP の実現には Docker 社から提供されている Docker Volume Plugin という仕組みを使用しています。Docker Volume Plugin は永続化の仕組み である「 Docker Volume 」 のデータ保存先をホストOSだけではなく外部ストレージへのデータ永続化を提供する仕組みです。

当初は Docker からホスト OS 上にデータを永続化する仕組みを提供していましたが、 Docker version 1.8 から Docker Volume の保存先を外部ストレージへ永続化できるようにプラグインフレームワーク (Docker Volume Plugin) が提供されました。(図1:Docker Volume Plugin と nDVP の関係)

nDVP は Docker ホストOSに対してストレージリソースのプロビジョニング・管理をサポートしています。
主な機能としては以下の通りです。

  • ストレージリソースのプロビジョニング/デプロビジョニング
    o ボリューム(Docker Volume, FlexVol)の作成・削除)
  • Docker Volume と FlexVol の紐付け
  • 作成したFlexVolに対してデータ管理機能の設定
  • Docker ホストOS に対するボリュームの自動マウント/アンマウント

上記の機能を使用することで Docker Volume を使用する感覚で Docker コンテナから外部ストレージ(ONTAP FlexVol)へのデータ永続化を可能とします。

OCI Image

図 1 NetApp Docker Volume pluginとnDVPの関係

Docker Volume pluginの詳細な説明は本家を参照してください。

現状使える volume plugin は以下の URL に一覧があります。

動作環境

今回準備した動作環境は以下の通りです。(図2:構成図 参照)

OCI Image

図 2構成図

各 OS のバージョン、ストレージ、ソフトウェアのバージョン

•    Docker ホスト OS

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"

Docker バージョン

$ docker -v
Docker version 1.12.2, build bb80604

NetApp ONTAP バージョン

$ ::> version
NetApp Release 9.0: Fri Aug 19 11:04:54 UTC 2016

Docker のインストール

バージョンによって変わるためDocker 公式のドキュメントを参照してください。 今回は Ubuntu 16.04 で構築しています。

NetApp Docker Volume Plugin (nDVP) のインストール

$ wget https://github.com/NetApp/netappdvp/releases/download/v1.3/netappdvp-1.3.tar.gz
$ tar zxf netappdvp-1.3.tar.gz
$ sudo mv netappdvp /usr/local/bin
$ sudo chown root:root /usr/local/bin/netappdvp
$ sudo chmod 755 /usr/local/bin/netappdvp

注意事項

OS のバージョンやディストリビューションによっては NFS クライアントが導入されていませんので留意ください。

後半の docker volume を指定した docker 起動時にマウントができない旨のエラーが発生した場合は NFS クライアントがインストール済みであるかを確認してください。

ホストOS (Ubuntu 16.04)の設定例

設定ファイル作成

$ sudo mkdir -p /etc/netappdvp
$ sudo touch /etc/netappdvp/ontap-nas.json
$ sudo chmod 755 /usr/local/bin/netappdvp

ontap-nas.json の内容

/etc/netappdvp/ontap-nas.json に以下の内容を定義します。
{
    "version": 1,
    "storageDriverName": "ontap-nas",
    "debug": true,
    "managementLIF": "192.168.199.228",
    "dataLIF": "192.168.199.227",
    "svm": "ndvpsvm",
    "username": "vsadmin",
    "password": "netapp123",
    "aggregate": "aggr3
}

上記 json ファイルに定義する “managementLIF”, “dataLIF”, “svm”, “username”, “password”, “aggregate” は事前に作成が必要な項目です。

“managementLIF” にはクラスタのマネジメントポートの IP、SVM のマネジメントポートの IP どちらも設定可能です。 今回は SVM のマネジメントポートの IP を使用してアクセスします

テスト用に起動する場合は debug モードでの起動をおすすめします。 どのように動作しているかの理解と想定どおり動作しない場合の調査に使えます。

上記の “username” には managementLIF で指定したIPでログイン可能なユーザは指定します、今回は SVM の管理ユーザを指定しています。

“aggregate” に指定するアグリゲートは SVM の aggr_list に登録が必要です。

ONTAP にログインし以下のコマンドを実行します。

$ ::> vserver modify -vserver ndvpsvm -aggr-list aggr3

以下の vserver show コマンドを実行し結果を確認します。

$ ::> vserver show -fields aggr-list -vserver ndvpsvm
vserver aggr-list
------- ---------
ndvpsvm aggr3 # 設定したアグリゲートが表示されること

Docker Volume Plugin 起動

$ sudo netappdvp --volume-driver=ontap-nas --config=/etc/netappdvp/ontap-nas.json &
INFO[0000] Successfully initialized Ontap NAS Docker driver version 1.3

ログは以下のパスに出力されています。想定どおり動作しないときには以下のログを参照しトラブルシューティングをします。

  • ログディレクトリ: /var/log/netappdvp
  • ファイル名: ontap-nas.json内の "storageDriverName" で指定した名称でログファイルが作成されます。

Docker Volume の作成 / Docker Volume マウント

Docker Volume の作成、Docker コンテナ起動時に Docker Volume をマウントする方法について確認します コンテナの起動前に Docker Volume の作成を行います。

$ sudo docker volume create -d ontap-nas --name=vol1
vol1

上記の ontap-nas.json で以下のエラーが発生した場合には、対象の SVM の aggr-list に ontap-nas.json で登録した ”aggregate” が登録されているかを見直します。

resultStatusAttr: failed
resultReasonAttr: Cannot create volume. Reason: aggregate aggr3 is not in aggr-list of Vserver ndvpsvm.
error: <nil>

docker volume 作成時にサイズの指定、スナップショットディレクトリの参照有無の設定等が可能です。オプションは “-o” で指定します。

$ sudo docker volume create --driver ontap-nas --name vol2 -o size=10g -o snapshotDir=true

docker 起動時に存在しない docker volume を指定した場合は自動で作成されます。

$ sudo docker run --rm -it --volume-driver ontap-nas --volume vol3:/mnt alpine ash # vol3 は存在しない docker volume

alpine linux にログインした状態になるので df でマウント先を確認します。

/ # df -h
Filesystem Size Used Available Use% Mounted on
none 93.9G 2.6G 86.5G 3% /
tmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
192.168.199.227:/netappdvp_vol3
972.8M 320.0K 972.5M 0% /mnt
/dev/mapper/docker--ubuntu--vg-root
93.9G 2.6G 86.5G 3% /etc/resolv.conf
/dev/mapper/docker--ubuntu--vg-root
93.9G 2.6G 86.5G 3% /etc/hostname
/dev/mapper/docker--ubuntu--vg-root
93.9G 2.6G 86.5G 3% /etc/hosts
shm 64.0M 0 64.0M 0% /dev/shm
tmpfs 1.9G 0 1.9G 0% /proc/kcore
tmpfs 1.9G 0 1.9G 0% /proc/timer_list
tmpfs 1.9G 0 1.9G 0% /proc/timer_stats
tmpfs 1.9G 0 1.9G 0% /proc/sched_debug
/ # exit

 

今までの操作で作成されたボリュームは以下の通りです。

$ sudo docker volume ls
DRIVER VOLUME NAME
ontap-nas vol1
ontap-nas vol2
ontap-nas vol3

ONTAP にログインし、ONTAP上にどのようにボリュームが作成されたかを確認します。

$ ::> volume show -vserver ndvpsvm
Vserver   Volume       Aggregate    State      Type Size       Available  Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
ndvpsvm   ndvpsvm_root aggr3        online     RW   1GB        970.7MB    5%
ndvpsvm   netappdvp_vol1
                       aggr3        online     RW   1GB        972.4MB    5%
ndvpsvm   netappdvp_vol2
                       aggr3        online     RW   10GB        9.50GB    5%
ndvpsvm   netappdvp_vol3
                       aggr3        online     RW   1GB        972.5MB    5%

ONTAP 上での FlexVol 名は標準で "netappdvp_" がプレフィックスとして付与されます。

設定と動作確認については以上となります。

まとめ

NetApp のコンテナエコシステムの中での取り組みで提供している NetApp Docker Volume Plugin の設定方法、実行方法について説明いたしました。

ユーザ視点からは 通常の Docker Volume を作成するオペレーションで外部ストレージへのデータ永続化が可能となり、エンタープライズストレージのデータ管理機能を活用することが可能となります。

技術情報

次回予告


今回は ONTAP の場合の Docker Volume Plugin の設定方法、使い方を説明しました。

次回は SolidFire 編を予定しています。

 

2016年 12月

Go further, faster
お問い合わせ   |   購入方法   |   フィードバック   |   採用情報  |   登録   |   プライバシーポリシー   |   © 2016 NetApp