Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

9.5. Docker コンテナーの Pacemaker サポート (テクノロジープレビュー)

重要
Docker コンテナーの Pacemaker サポートは、テクノロジープレビュー目的でのみ実現されています。「テクノロジープレビュー」の意味については、テクノロジプレビュー機能のサポート範囲 を参照してください。
テクノロジープレビューであるこの機能には 1 つの例外があります。Red Hat Enterprise Linux 7.4 以降、Red Hat は、Red Hat Openstack Platform (RHOSP) デプロイメントで Pacemaker バンドルの使用を完全にサポートします。
Pacemaker は、必要なインフラストラクチャで Docker コンテナーを起動するための特殊構文 (bundle) に対応しています。Pacemaker バンドルを作成したら、バンドルがカプセル化する Pacemaker リソースを作成できます。

9.5.1. Pacemaker バンドルリソースの設定

Docker コンテナーの Pacemaker バンドルを作成するコマンド構文は以下の通りです。このコマンドを使用すると、その他のリソースをカプセル化しないバンドルが作成されます。バンドルでクラスターリソースを作成する方法は、「バンドルでの Pacemaker リソースの設定」 を参照してください。
pcs resource bundle create bundle_id container docker [container_options] [network network_options] [port-map port_options]...  [storage-map storage_options]... [meta meta_options] [--disabled] [--wait[=n]]
必要な bundle_id パラメーターは、バンドルに対する一意の名前にする必要があります。--disabled オプションを指定すると、バンドルは自動的に起動されません。--wait オプションを指定すると、Pacemaker は、バンドルが起動し、成功時に 0 を、エラー時に 1 を返すまで最大 n 秒待機します。n を指定しないと、デフォルトの 60 分に設定されます。
以下のセクションでは、Pacemaker バンドルの各要素に設定できるパラメーターを説明します。

9.5.1.1. Docker パラメーター

表9.6「Docker コンテナーのパラメーター」 バンドルに設定できる docker コンテナーオプションを示します。
注記
Pacemaker で docker バンドルを設定する前に、Docker をインストールし、バンドルの実行が許可されている各ノード上に完全に設定した Docker イメージを展開します。

表9.6 Docker コンテナーのパラメーター

フィールドデフォルト説明
image
Docker イメージタグ (必須)
replicas
正であれば promoted-max の値。それ以外は 1。
起動するコンテナーインスタンスの数を指定する正の整数
replicas-per-host
1
単一ノードで起動できるコンテナーインスタンスの数を指定する正の整数
promoted-max
0
正であれば、非負の整数は、マスターロールにおいてサービスを実行できる多くのレプリカとともに、コンテナー化されたサービスが複数のサービスとして扱われる必要があることを示しています。
network
これが指定されると、Docker コンテナーのネットワーク設定として docker run コマンドに渡されます。
run-command
/usr/sbin/pacemaker_remoted バンドルがリソースを含む場合、それ以外はなし
このコマンドは、起動する際にコンテナー内で実行されます (”PID 1”)。バンドルにリソースが含まれる場合、このコマンドは pacemaker_remoted デーモンを起動する必要があります (ただし、その他のタスクも実行するスクリプトでも問題ありません)。
options
docker run コマンドに渡す、その他のコマンドラインオプション

9.5.1.2. (バンドルネットワークパラメーター

表9.7「バンドルリソースネットワークパラメーター」 バンドルに設定できる ネットワーク オプションを説明します。

表9.7 バンドルリソースネットワークパラメーター

フィールドデフォルト説明
add-host
TRUE
TRUE で ip-range-start が使用される場合は、Pacemaker により自動的に、コンテナー内の /etc/hosts ファイルに、各レプリカ名と割り当てられている IP のエントリーが指定されるようにします。
ip-range-start
これが指定されると、Pacemaker は、各コンテナーインスタンスに対して暗黙的な ocf:heartbeat:IPaddr2 リソースを作成します。これは、この IP アドレスで始まり、Docker 要素の replicas として指定されている限りのシーケンシャルアドレスとして使用します。これらのアドレスは、ホストのネットワークから使用して、コンテナー内のサービスに到達できます。ただし、コンテナー自身の中では表示されません。現在サポートされているアドレスは、IPv4 のみです。
host-netmask
32
ip-range-start が指定されると、IP アドレスがこの CIDR ネットマスクで (多数のビットとして) 作成されます。
host-interface
ip-range-start が指定されていると、IP アドレスがこのホストインターフェイスで作成されます (デフォルトでは、IP アドレスから決まります)。
control-port
3121
バンドルに Pacemaker リソースが含まれる場合、クラスターは、コンテナー内の Pacemaker Remote との通信に、この整数 の TCP ポートを使用します。コンテナーがデフォルトポートでリッスンできない場合は、このポートを変更すると便利です。これは、コンテナーが ip-range-start (この場合 replicas-per-host は 1 である必要があります) ではなく、ホストのネットワークを使用しようとしているか、バンドルがデフォルトポートですでにリッスンしている Peacemaker Remote ノードを実行できる場合に起こります。ホストやコンテナーで設定されている PCMK_remote_port 環境変数は、バンドル接続に対しては無視されます。
Pacemaker バンドル設定が control-port パラメーターを使用するときに、バンドルに独自の IP アドレスがある場合には、corosync を実行しているすべてのクラスターノード上およびそのクラスターノードから、その IP アドレスでポートを開く必要があります。あるいは、バンドルが network="host" コンテナーパラメーターを設定している場合には、すべてのクラスターノードから、それぞれのクラスターノードの IP アドレスでポートを開く必要があります。
注記
レプリカは、バンドル ID とダッシュそしてゼロから始まる整数カウンターで名前が付けられます。httpd-bundle というバンドル名により replicas=2 が設定されれば、 そのコンテナーの名前は httpd-bundle-0httpd-bundle-1 になります。
ネットワークパラメーターに加え、バンドルに port-map パラメーターを任意で指定できます。表9.8「バンドルリソースポートマップパラメーター」 では、これらの port-map パラメーターを説明します。

表9.8 バンドルリソースポートマップパラメーター

フィールドデフォルト説明
id
ポートマッピングの一意の名前 (必須)
port
これが指定されると、ホストネットワーク上 ((ip-range-start が指定されていル場合は、コンテナーの、割り当てられた IP アドレス上)) のこの TCP ポート番号に対する接続 がコンテナーネットワークに転送されます。port または range のいずれ 1 つがポートマッピングで指定される必要があります。
internal-port
port の値
portinternal-port が指定されている場合は、ホストネットワーク上の port に対する接続が、コンテナーネットワーク上のこのポートに転送されます。
range
range が指定されると、ホストネットワーク上 ((ip-range-start が指定されている場合は、コンテナーの、割り当てられた IP アドレス上)) のこれらの TCP ポート番号 (first_port-last_port) に対する接続 が、コンテナーネットワークの同じポートに転送されます。port または range のいずれ 1 つがポートマッピングで指定される必要があります。
注記
バンドルにソースが含まれる場合、Pacemaker は自動的に control-port をマッピングします。そのため、ポートマッピングでは、そのポートを指定する必要はありません。

9.5.1.3. バンドルストレージパラメーター

必要に応じて、バンドルに storage-map パラメーターを設定することができます。表9.9「バンドルリソースストレージマッピングパラメーター」 これらのパラメーターについて説明します。

表9.9 バンドルリソースストレージマッピングパラメーター

フィールドデフォルト説明
id
ストレージマッピングの一意の名前 (必須)
source-dir
コンテナーにマッピングされるホストファイルシステム上の絶対パス。storage-map パラメーターを設定する際には、source-dirsource-dir-root のいずれかを指定する必要があります。
source-dir-root
各コンテナーインスタンスのホスト上で異なるサブディレクトリーを使用した、コンテナーにマッピングされるホストのファイルシステム上のパスの開始。このサブディレクトリーには、バンドル名と同じ名前が付けられ、ダッシュと 0 から始まる整数カウンターも加えられます。storage-map パラメーターを設定するときには、source-dirsource-dir-root のいずれかを完全に指定する必要があります。
target-dir
ホストストレージがマッピングされるコンテナー内のパス名 (必須)
options
ストレージをマッピングする際に使用するファイルシステムマウントオプション
ホスト上のサブディレクトリーが source-dir-root パラメーターで名前が付けられる仕組みの例として、source-dir-root=/path/to/my/directorytarget-dir=/srv/appdata、バンドルに replicas=2mybundle という名前が指定されている場合、クラスターは、mybundle-0mybundle-1 というホスト名で 2 つのコンテナーインスタンスを作成します。また、コンテナー /path/to/my/directory/mybundle-0/path/to/my/directory/mybundle-1 を実行しているホストで 2 つのディレクトリーを作成します。各コンテナーには、いずれかのディレクトリーが与えられ、そのコンテナー内で実行しているアプリケーションには、/srv/appdata というディレクトリが表示されます。
注記
Pacemaker は、ソースディレクトリが既にホストに存在しない場合の動作を定義しません。ただし、コンテナーテクノロジーまたはそのリソースエージェントがソースディレクトリーを作成します。
注記
バンドルに Pacemaker リソースが含まれる場合、Pacemaker は自動的に source-dir=/etc/pacemaker/authkeytarget-dir=/etc/pacemaker/authkeysource-dir-root=/var/log/pacemaker/bundlestarget-dir=/var/log と同等のものをコンテナーにマッピングします。そのため、storage-map パラメーターを設定する際には、これらのパスを指定する必要はありません。
重要
PCMK_authkey_location 環境変数は、クラスターのノード上の /etc/pacemaker/authkey のデフォルト以外に設定することはできません。