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 リソースを作成できます。
- 「Pacemaker バンドルリソースの設定」 では、Pacemaker バンドルを作成するコマンドについて説明し、各バンドルパラメーターに定義できるパラメーターについてまとめた表が記載されています。
- 「バンドルでの Pacemaker リソースの設定」 では、Pacemaker バンドルに含まれているリソースの設定について説明しています。
- 「Pacemaker バンドルの制限」 では、Pacemaker バンドルの制限について説明しています。
- 「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「バンドルリソースネットワークパラメーター」 では、バンドルに設定できる
network オプションを説明します。
表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-0 と httpd-bundle-1 になります。
ネットワークパラメーターに加え、バンドルに
port-map パラメーターを任意で指定できます。表9.8「バンドルリソースポートマップパラメーター」 では port-map パラメーターを説明します。
表9.8 バンドルリソースポートマップパラメーター
| フィールド | デフォルト | 説明 |
|---|---|---|
id
| |
ポートマッピングの一意の名前 (必須)
|
port
| |
これが指定されると、ホストネットワーク上 ((
ip-range-start が指定されていル場合は、コンテナーの、割り当てられた IP アドレス上)) のこの TCP ポート番号に対する接続 がコンテナーネットワークに転送されます。port または range のいずれ 1 つがポートマッピングで指定される必要があります。
|
internal-port
| port の値
| port と internal-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-dir と source-dir-root のいずれかを指定する必要があります。
|
source-dir-root
| |
各コンテナーインスタンスのホスト上で異なるサブディレクトリーを使用した、コンテナーにマッピングされるホストのファイルシステム上のパスの開始。このサブディレクトリーには、バンドル名と同じ名前が付けられ、ダッシュと 0 から始まる整数カウンターも加えられます。
storage-map パラメーターを設定するときには、source-dir と source-dir-root のいずれかを完全に指定する必要があります。
|
target-dir
| |
ホストストレージがマッピングされるコンテナー内のパス名 (必須)
|
options
| |
ストレージをマッピングする際に使用するファイルシステムマウントオプション
|
ホスト上のサブディレクトリーが
source-dir-root パラメーターで名前が付けられる仕組みの例として、source-dir-root=/path/to/my/directory、target-dir=/srv/appdata、バンドルに replicas=2 で mybundle という名前が指定されている場合、クラスターは、mybundle-0 と mybundle-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/authkey と source-dir-root=/var/log/pacemaker/bundlestarget-dir=/var/log と同等のものをコンテナーにマッピングします。そのため、storage-map パラメーターを設定する際には、これらのパスを指定する必要はありません。
重要
PCMK_authkey_location 環境変数は、クラスターのノード上の /etc/pacemaker/authkey のデフォルト以外に設定することはできません。