目次


Db2 Docker コンテナーを構築してデプロイする際の考慮事項

IBM Db2 for Linux, UNIX and Windows を Docker コンテナー内にデプロイする際に考慮しなければならないこと

Comments

Docker は、誰もがアプリケーションを軽量の、移植可能で自立した Linux コンテナー (LXC) としてパッケージ化して配布し、実行できる軽量の仮想化ソリューションです。Docker を使用してパッケージ化された LXC は、実質上、どこでも実行できます。しかも Docker では、以前のコンテナー風のテクノロジー (Solaris Zones など) やその他のコンテナー・バリアントでは提供されていなかった新しい機能を使用できます。

これまでの手法に比べ、Docker ではコンテナーを簡単かつ安全にデプロイすることができます。また、切望されているコンテナーの標準化を実現するために、Docker はコンテナー・ベースのテクノロジーに取り組む他の主要な企業と提携し、libcontainer という Docker の要となるオープンソース・コンポーネントを開発しました。

IBM Db2 for Linux, UNIX and Windows はトランザクション処理と分析処理に対応する次世代のデータ・プラットフォームです。このプラットフォームではデータを常時利用可能にして、トランザクション・ワークロードとアナリティクスの最大限の動作効率を維持します。Db2 for LUW は「ロードして開始」というシンプルなセットアップによって、インメモリー・パフォーマンスを飛躍的に向上させます。さらに、他のインメモリー・ソリューションにあるような制約がないため、思考を途切らせない迅速なアナリティクスが可能になります。

この記事では、Db2 を Docker コンテナー内にデプロイする際に考慮すべき有益なヒントを取り上げます。

Docker の特権モードと非特権モードを選択する

デフォルトでは、すべての Docker コンテナーは非特権モードで作成されます。コンテナーを特権モードで作成すると (Docker の --privileged=true 実行コマンド・オプションを使用)、Docker はそのホスト上のすべてのデバイスへのアクセスをコンテナーに許可します。Docker がコンテナーに与えるホストへのアクセス権は、ホスト上のコンテナー外部で実行されるプロセスに与えられるアクセス権とほぼ同じです。

DB2 can be deployed in either mode, but be aware of the following:Db2 はどちらのモードでもデプロイできますが、次の点に注意してください。

  • 特権モードでも非特権モードでも、root タイプと非 root タイプの Db2 インストールの両方がサポートされています。
  • 特権モードの場合、追加で必要となる構成はありません。
  • 非特権モードの場合、次の 2 つの要件を満たす必要があります。
  1. ホスト・オペレーティング・システムが、Db2 の Inter-Process Communication (IPC) カーネル・パラメーターの最小設定を満たすこと。要件とされる最小設定のリストとアップグレード手順については、このリンク先の IBM Knowledge Center のページ「カーネル・パラメーターの変更 (Linux)」を参照してください。
  2. docker run コマンドを使用して、Db2 に使用する予定でコンテナーを作成するときには、--ipc=host オプションをコマンドに含めて、ホストの IPC 名前空間がコンテナーと共有されるようにすること。また、--cap-add=IPC_OWNER オプションを含めて、System V IPC オブジェクトに対する権限チェックをバイパスする Linux 機能を組み込む必要もあります。
リスト 1. 例: 非特権モードで Db2 を Docker コンテナー内で実行する場合
docker run –it ‑‑ipc=host ‑‑cap‑add=IPC_OWNER
‑‑name="myDB2v105container" ${image_repo}:${image_tag} /bin/bash

Db2 用のストレージ

デフォルトでは、すべてのイメージとコンテナーの永続的データは、Docker のホーム・ディレクトリー (通常は、/var/lib/docker) のサブディレクトリーに保存されます。これらのサブディレクトリーには、次のデータが保管されます。

  • /var/lib/docker/containers: コンテナーの永続的データのすべてが保管されます。
  • /var/lib/docker/{image-layer-storage-driver}: イメージの内容を保管する、ドライバー固有のストレージが格納されます。Docker では現在、aufsdevicemapperbtrfszfs、および overlay イメージ層ストレージ・ドライバーをサポートしています。
  • /var/lib/docker/graph/<image-id>: イメージに関するメタデータが保管されます。

Docker コンテナー内にパッケージ化されたソフトウェアを、アップグレード後の再構成をほとんど、あるいはまったく必要とせずに簡単にアップグレードできるようにするには、このリンク先のページで説明されている Docker のベスト・プラクティスに従って、コンテナーをエフェメラル・コンテナーとして作成してください。Db2 を使用してエフェメラル・コンテナーを作成する際は、次の点を考慮する必要があります。

  • すべての永続的 Db2 データ・ファイルの保管先とする外部データ・ボリュームを選択します。
  • 個別の名前付きデータ・ボリューム・コンテナーをリンクするか、ホストのディレクトリーをコンテナーにバインドしてマウントするかを選択します。
  • バインドしてマウントするホストのファイル・システム、またはリンクする名前付きデータ・ボリューム・コンテナーが、直接 I/O をサポートしていることを確認します。
リスト 2. 例: ホストのファイル・システムをコンテナーの起動時にバインドしてマウントする場合
docker run ‑d ‑i
‑‑name="myDB2v105container" ‑v/fsonhost:/mnt/db2datavol ${image_repo}:${image_tag} bin/bash

メモリーの使用法

Docker のようなコンテナー環境では、他のアプリケーションに影響を与えることなくホストのリソースの使用効率を向上させるために、ホスト上で利用可能なリソースのうち、コンテナー内で利用可能なリソースをユーザーが制限できるようになっています。Docker では一般に、プロセッサーおよびメモリーのリソース制約をコンテナーに適用することができます。例えば、--memory=8GB オプションを使用すると、8GB のメモリー制限が適用された Docker を作成できます。

Db2 を実行するコンテナーに対してメモリー制約を使用することを考えている場合は、次の点を考慮してください。

  • 制限付きコンテナーを使用する場合、INSTANCE_MEMORY 構成パラメーターを使用して、Db2 が使用できるメモリーの量を制限します。これにより、Db2 がコンテナーで利用可能なメモリー量を超える量のメモリーを使用しようとしなくなります。
  • コンテナーが Db2 だけを実行する場合、INSTANCE_MEMORY パラメーターをコンテナーのメモリー制限の 80 パーセントに設定します。コンテナー内に他のアプリケーションも配置されている場合は、INSTANCE_MEMORY パラメーターの値を小さくすることを考慮してください。

: 以下の例に、Db2 のメモリー使用量を 6.4GB (1638、4K ページ) に制限する場合のコマンドを記載します。この例では、Docker コンテナーの起動時に、--memory=8GB コマンドを使用して 8 GB のメモリー制限を適用していることを前提としています。

db2 UPDATE DBM CFG USING INSTANCE_MEMORY 1638

コンテナーのホスト名

新しいコンテナーを作成すると常に、その Docker コンテナーにホスト名が割り当てられます。一般に、割り当てられるホスト名は次の 3 つの要因に依存します。

  • 他のオプションが指定されていない場合: コンテナーのホスト名は、コンテナー ID の最初の 12 文字に基づいてランダムに生成されます。

  • --net=host オプションが指定されている場合: コンテナーのホスト名は、そのコンテナーが稼働する Docker ホストのホスト名と同じになります。

  • –hostname=”{my_hostname}”--hostname="{my_hostname}" が指定されている場合: コンテナーのホスト名は、このオプションで指定されている値に設定されます。

Db2 を Docker コンテナーにデプロイする際は、ホスト名に関する次の考慮事項を念頭に置く必要があります。

  • db2nodes.cfg ファイル内で設定されるホスト名と、DB2SYSTEM registry 変数は、常にコンテナーの現在のホスト名と一致していなければなりません。
  • コンテナー内部で Db2 Administration Server (DAS) を使用する予定の場合、db2admin 構成を変更しなければならない場合があります。
  • 作成済みの Db2 インスタンスを使用して Docker イメージをビルドする際は、常に上記のランタイムに関する考慮事項に留意する必要があります。

Db2 構成を変更してコンテナーのホスト名と一致させる方法については、このリンク先の記事「Changing the hostname of the Db2 server」を参照してください。

高可用性

IBM Tivoli® Systems Automation と Db2 pureScale® の使用は、現在のところ、Docker コンテナー環境内ではサポートされていません。

まとめ

Docker はよく使われている Linux コンテナー・ベースのテクノロジーであり、多くの IT 環境内でその勢いを増しています。このことは、プライベート・クラウドがデプロイされる環境では特に言えることです。この記事では、Db2 for Linux, UNIX and Windows を実行する Docker コンテナーを確実に作成してデプロイするために非常に重要となる考慮事項をいくつか紹介しました。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=ビジネス・アナリティクス, Open source
ArticleID=1064713
ArticleTitle=Db2 Docker コンテナーを構築してデプロイする際の考慮事項
publish-date=02212019