Developer TOP Tools

このページでは、K2HR3システムの中で使われている環境変数と設定項目を説明しています。

環境変数

K2HR3システムの中で使われている環境変数を説明しています。

REST APIサーバー

この章は、REST APIサーバで使われている環境変数を説明しています。

HOME

HOME環境変数は、k2hr3-api Node.jsモジュールを起動するユーザのホームディレクトリとして使用されます。

devcluster を使って、K2HR3を構築した場合は、 /home/k2hr3 がデフォルト値となっています。

NODE_CONFIG_DIR

NODE_CONFIG_DIR環境変数は、k2hr3-api Node.jsモジュールの設定ファイルのインストール先ディレクトリとして使われます。

devcluster を使って、K2HR3を構築した場合は、 /home/k2hr3/etc/k2hr3-api がデフォルト値となっています。

NODE_DEBUG

NODE_DEBUG環境変数は、ログレベルとして使われます。指定可能なレベルと動作概要は次の通りです。

devcluster を使って、K2HR3を構築した場合は、 LOGLEVEL_ERR がデフォルト値となっています。

NODE_ENV

NODE_ENV環境変数は、nodeプロセスの動作環境として表す環境変数として使用されます。指定可能な名前と動作概要は次の通りです。

devcluster を使って、K2HR3を構築した場合は、 development がデフォルト値となっています。

補足:systemd使用時の環境変数の指定について

ここでは、systemdを使ってプロセスを起動する場合の環境変数の指定方法について説明しています。

systemd は、OS起動または終了時に、常駐プロセスの起動・停止を制御することができる、OS付属のサービスマネージャーです。

systemdの設定は、必須ではありません。OS起動(または終了)時に、自動的にプロセスを起動(または停止)したい場合は、次のように設定しておくこともできます。

systemd を使って REST APIサーバを起動する場合は、 systemdの設定ファイルのEnvironment変数に、環境変数を指定します。

devcluster を使って、REST APIサーバを構築した場合は、 REST APIサーバのsystemd設定ファイルは、/etc/systemd/system/k2hr3-api.service にインストールされます。

/etc/systemd/system/k2hr3-api.service の環境変数をエディタなどで更新し、次のように実行すると、環境変数がプロセスに反映されます。

$ sudo systemctl daemon-reload
$ sudo systemctl restart k2hr3-api.service

Web Applicationサーバー

この章は、Web Applicationサーバーで使われている環境変数を説明しています。

HOME

HOME環境変数は、k2hr3-app Node.jsモジュールを起動するユーザのホームディレクトリとして参照されています。

devcluster を使って、K2HR3を構築した場合は、 /home/k2hr3 がデフォルト値となっています。

NODE_CONFIG_DIR

NODE_CONFIG_DIR環境変数は、k2hr3-app Node.jsモジュールの設定ファイルのインストール先ディレクトリとして使われます。

devcluster を使って、K2HR3を構築した場合は、 /home/k2hr3/etc/k2hr3-app がデフォルト値となっています。

NODE_ENV

NODE_ENV環境変数は、nodeプロセスの動作環境として表す環境変数として使用されます。指定可能な名前と動作概要は次の通りです。

devcluster を使って、K2HR3を構築した場合は、 development がデフォルト値となっています。

補足:systemd使用時の環境変数の指定について

ここでは、systemdを使ってプロセスを起動する場合の環境変数の指定方法について説明しています。

systemd は、OS起動または終了時に、常駐プロセスの起動・停止を制御することができる、OS付属のサービスマネージャーです。

systemdの設定は、必須ではありません。OS起動(または終了)時に、自動的にプロセスを起動(または停止)したい場合は、次のように設定しておくこともできます。

systemd を使って Web Applicationサーバを起動する場合は、 systemdの設定ファイルのEnvironment変数に、環境変数を指定します。

devcluster を使って、Web Applicationサーバを構築した場合は、 Web Applicationサーバのsystemdの設定ファイルは、/etc/systemd/system/k2hr3-app.service にインストールされます。

/etc/systemd/system/k2hr3-app.service の環境変数をエディタなどで更新し、次のように実行すると、環境変数がプロセスに反映されます。

$ sudo systemctl daemon-reload
$ sudo systemctl restart k2hr3-app.service

設定

K2HR3システムの中で使われている設定ファイルの項目を説明しています。

データーサーバー(K2HDKC)

この章では、データーサーバー(K2HDKC)の設定ファイルとその項目説明します。

データーサーバー(K2HDKC)は、複数のホストから構成されるクラスタです。各ホスト上には、chmpxプロセスとk2hdkcプロセスが起動します。

/etc/k2hdkc/server.ini の [SVRNODE] セクションの NAME に、データーサーバー(K2HDKC)のホスト名が記述されています。サーバ名が複数の場合は、正規表現に似た表記で記述することも可能です。

例:データーサーバー(K2HDKC)が、dkc01~dkc04.example.comというホストで構成されていた場合、次のように記述することも可能です。

...
#
# SERVER NODES SECTION
#
[SVRNODE]
NAME                            = dkc[1-4].example.com
PORT                            = 8020
CTLPORT                         = 8021
SSL                             = no
...

補足:サービスマネージャ(systemd)の設定

ここでは、systemdを使ってデーターサーバー(K2HDKC)のプロセスを制御する方法を説明しています。

systemd は、OS起動または終了時に、常駐プロセスの起動・停止を制御することができる、OS付属のサービスマネージャーです。

systemdの設定は、必須ではありません。OS起動(または終了)時に、自動的にプロセスを起動(または停止)したい場合は、次のように設定しておくこともできます。

次の内容を /etc/systemd/system/chmpx.service に保存します。

[Unit]
Description=chmpx
After=network-online.target

[Service]
Type=simple
User=k2hr3
PermissionsStartOnly=true
ExecStartPre=/sbin/sysctl fs.mqueue.msg_max=1024
ExecStart=/usr/bin/chmpx -conf /etc/k2hdkc/server.ini -d err
Restart=on-failure
PIDFile=/var/run/chmpx.pid

[Install]
WantedBy=multi-user.target

次のように実行し、上で保存した設定ファイルをsystemdに反映させ、chmpxプロセスをchmpxというサービスとして起動します。

$ sudo systemctl daemon-reload
$ sudo systemctl restart chmpx.service

続いて、k2hdkcプロセスをサービスとして起動する設定をします。次の内容を /etc/systemd/system/k2hdkc.service に保存します。

[Unit]
Description=k2hdkc
Requires=chmpx.service
After=chmpx.service

[Service]
Type=simple
User=k2hr3
PermissionsStartOnly=true
ExecStartPre=/sbin/sysctl fs.mqueue.msg_max=1024
ExecStart=/usr/bin/k2hdkc -conf /etc/k2hdkc/server.ini -d err
Restart=on-failure
PIDFile=/var/run/k2hdkc.pid

[Install]
WantedBy=multi-user.target

次のように実行し、上で保存した設定ファイルをsystemdに反映させ、k2hdkcプロセスをk2hdkcサービスとして起動します。

$ sudo systemctl daemon-reload
$ sudo systemctl restart k2hdkc.service

REST APIサーバー

この章は、REST APIサーバで動作するプロセスとその設定ファイルについて説明しています。

REST APIサーバーの設定ファイルの項目を説明します。REST APIサーバーには、次の三つのプロセスが起動します。

HTTPサーバー設定

ここでは、HTTPサーバーの設定項目を説明しています。

以下は、設定項目のサンプルとその説明です。

{
    "keystone": {
        "type": "openstackapiv3",                              // keystoneエンドポイントのバージョン(openstackapiv3 または openstackapiv2)
        "eptype": "list",                                      // keystoneエンドポイントの指定方法(listまたはfile)
        "epfile": null,                                        // keystoneエンドポイントのファイル名(listの場合はnull)
        "eplist": {
            "myregion": "https://dummy.keystone.openstack/"    // keystoneエンドポイント名及びURL
        }
    },
    "k2hdkc": {
        "config": "/etc/k2hdkc/slave.ini",                     // chmpx-slaveの設定ファイル名
        "port": 8031,                                          // chmpx-slaveのサービスポート番号
        "cuk": null                                            // chmpx-slaveのCUK文字列
    },
    "multiproc": true,                                         // 複数プロセス起動の有無
    "scheme": "https",                                         // APIサーバープロトコル(http/https)
    "runuser": "nobody",                                       // 起動ユーザ名
    "privatekey": "config/key.pem",                            // 秘密鍵ファイル名
    "cert": "config/cert.pem",                                 // サーバ証明書ファイル名
    "ca": "/etc/pki/tls/certs/ca-bundle.crt",                  // ルート認証局証明書ファイル名
    "logdir": "log",                                           // ログディレクトリ名
    "accesslogname": "access.log",                             // 標準出力ファイル名
    "consolelogname": "error.log",                             // 標準エラー出力ファイル名
    "watcherlogname": "watcher.log",                           // 標準出力ファイル名(watcher用)
    "wconsolelogname": "watchererror.log",                     // 標準エラー出力ファイル名(watcher用)
    "logrotateopt": {                                          // ログローテーション関連設定
        "compress": "gzip",                                    // ローテーション時のログ圧縮方式(gzipのみ)
        "interval": "6h",                                      // ローテーション期間
        "initialRotation": true                                // ローテーション期間以降の初回起動時におけるローテーション実行の有無
    },
    "userdata": {                                              // UserData取得API関連設定
        "baseuri": "https://localhost",                        // APIエンドポイントの基本パス
        "cc_templ": "config/k2hr3-cloud-config.txt.templ",     // cloud configのテンプレートファイルパス
        "script_templ": "config/k2hr3-init.sh.templ",          // cloud init用シェルスクリプトテンプレートファイル名
        "errscript_templ": "config/k2hr3-init-error.sh.templ", // cloud init用エラー出力用シェルスクリプトテンプレートファイル名
        "algorithm": "aes-256-cbc",                            // 暗号アルゴリズム名
        "passphrase": "k2hr3_regpass"                          // 暗号化パスフレーズ
    },
    "extdata": {                                               // Extdata取得API関連設定
        "dummy": {                                             // Extdata取得サブURIパス(/v1/extdata/dummy)
            "baseuri":     "https://localhost",                // APIエンドポイントの基本パス
            "template":    "config/extdata-dummy.sh.templ",    // Extdataテンプレートファイル名
            "useragent":   "dummy-client",                     // 許可User-Agent
            "contenttype": "text/x-shellscript"                // ExtdataレスポンスContent-Type
        }
    },
    "k2hr3admin": {
        "tenant": "admintenant",                               // テナント(プロジェクト)名
        "delhostrole": "delhostrole"                           // ホスト削除用サーバ用のロール名
    },
    "localtenants": true,                                      // K2HR3クラスターのローカルテナントを有効・無効(TENANT APIの有効・無効)
    "confirmtenant": false,                                    // 未登録のテナント(プロジェクト)のサービスへの追加確認の有無
    "chkipconfig": {                                           // IPアドレス死活監視
        "type": "Listener"                                     // IPアドレス死活監視の方式名(後述)
        "pendingsec": 864000,                                  // 最初に未検出となった時刻から削除されるまでの時間(秒)
        "intervalms": 4320000,                                 // 死活監視の実行間隔時間(ミリ秒)
        "parallelcnt": 32,                                     // 死活監視実行処理の並列数
        "command4": "ping",                                    // UNIXコマンドパス名(IPv4アドレス用)
        "command6": "ping6",                                   // UNIXコマンドパス名(IPv6アドレス用)
        "params": "-c 1",                                      // UNIXコマンド引数(ICMPによるリクエスト回数)
        "timeoutparam": "-W",                                  // UNIXコマンド引数(タイムアウト時間指定用)
        "timeoutms": 5000                                      // UNIXコマンド引数(タイムアウト時間)
    },
    "allowcredauth": true                                      // クレデンシャル認証のみによるアクセス許可
}

chmpx-slaveの設定

ここでは、chmpx-slaveプロセスの設定について説明しています。

chmpx-slaveプロセスは、HTTPサーバとデーターサーバー(K2HDKC)との接続を仲介するプロセスです。設定ファイルは、/etc/k2hdkc/slave.ini です。

[SVRNODE]セクションのNAMEに、データーサーバー(K2HDKC)のホスト名を記述します。サーバ名を正規表現に似た表記で記述することも可能です。

例:データーサーバー(K2HDKC)が、dkc01~dkc04.example.comというホストで構成されていた場合、次のように記述することも可能です。

...
#
# SERVER NODES SECTION
#
[SVRNODE]
NAME                            = dkc[1-4].example.com
PORT                            = 8020
CTLPORT                         = 8021
SSL                             = no
...

設定ファイルの項目は、 CHMPXの詳細ページ に説明されています。

Watcher(IPアドレス死活監視)の設定

ここでは、Watcherの設定について説明しています。

OpenStackからインスタンスが削除されたとき、K2HR3のデータベースからそのインスタンスのIPアドレスを削除する必要があります。

K2HR3からのIPアドレス削除は、K2HR3 OpenStack Notification Listener(k2hr3-osnl)を使って実施することをおすすめします。

k2hr3-osnl を利用できない場合は、IPアドレス死活監視プログラム(Watcher) を起動し、削除されたインスタンスのIPアドレスをK2HR3のデータベースから削除できます。

Watcher には、以下のタイプを指定できます。

補足:サービスマネージャ(systemd)の設定

この章は、systemdを使ってREST APIサーバーの各プロセスを制御する方法を説明しています。

systemd は、OS起動または終了時に、常駐プロセスの起動・停止を制御することができる、OS付属のサービスマネージャーです。

systemdの設定は、必須ではありません。OS起動(または終了)時に、自動的にプロセスを起動(または停止)したい場合は、次のように設定しておくこともできます。

次の内容を /etc/systemd/system/chmpx-slave.service に保存します。

[Unit]
Description=chmpx
After=network-online.target

[Service]
Type=simple
User=k2hr3
PermissionsStartOnly=true
ExecStartPre=/sbin/sysctl fs.mqueue.msg_max=1024
ExecStart=/usr/bin/chmpx -conf /etc/k2hdkc/slave.ini -d err
Restart=on-failure
PIDFile=/var/run/chmpx.pid

[Install]
WantedBy=multi-user.target

設定ファイルをsystemdに反映させ、chmpx-slaveをサービスとして起動します。

$ sudo systemctl daemon-reload
$ sudo systemctl restart chmpx-slave.service

次の内容を /etc/systemd/system/k2hr3-api.service に保存します。

[Unit]
Description=k2hr3-api
Requires=chmpx-slave.service
After=chmpx-slave.service

[Service]
Type=simple
WorkingDirectory=/home/k2hr3
Environment=HOME=/home/k2hr3
Environment=NODE_CONFIG_DIR=/home/k2hr3/etc/k2hr3-api
Environment=NODE_DEBUG=LOGLEVEL_ERR
Environment=NODE_ENV=production
ExecStart=/usr/bin/node /home/k2hr3/node_modules/k2hr3-api/bin/www
Restart=on-failure
PIDFile=/var/run/k2hr3-api.pid

[Install]
WantedBy=multi-user.target

設定ファイルをsystemdに反映させ、k2hr3-apiをサービスとして起動します。

$ sudo systemctl daemon-reload
$ sudo systemctl restart k2hr3-api.service

Web Applicationサーバーの設定

この章は、Web Applicationサーバの設定ファイルについて説明しています。

以下は、設定項目のサンプルとその説明です。


{
    "scheme": "http",                               // Webサーバープロトコル(http/https)
    "port": 3000,                                   // Webサーバーポート
    "multiproc": true,                              // 複数プロセス起動の有無
    "runuser": "nobody",                            // 起動ユーザ名
    "privatekey": "config/key.pem",                 // 秘密鍵ファイル名
    "cert": "config/cert.pem",                      // サーバ証明書ファイル名
    "ca": "/etc/pki/tls/certs/ca-bundle.crt",       // ルート認証局証明書ファイル名
    "validator": "userValidateCredential",          // ユーザトークン検査用JavaScriptモジュール名
	"uselocaltenant": true,                         // ローカルテナント利用可否
    "lang": "en",                                   // 言語ロケール

    "logdir": "log",                                // ログディレクトリ名
    "accesslogname": "access.log",                  // 標準出力ファイル名
    "consolelogname": "error.log",                  // 標準エラー出力ファイル名
    "logrotateopt": {                               // ログローテーション関連設定
        "compress": "gzip",                         // ローテーション時のログ圧縮方式(gzipのみ)
        "interval": "6h",                           // ローテーション期間
        "initialRotation": true                     // ローテーション期間以降の初回起動時におけるローテーション実行の有無
    },

    "apischeme": "http",                            // APIサーバープロトコル(http/https)
    "apihost": "localhost",                         // APIサーバー名
    "apiport": 3001,                                // APIサーバーポート

    "appmenu": [                                    // メニューリスト
        {
            "name": "Document",                     // メニューの名前
            "url": "https://k2hr3app.antpick.ax/"   // メニューのURL
        }
    ],

    "userdata": "\                                  // UserDataのURL
#include\n\
{{= %K2HR3_API_HOST_URI% }}/v1/userdata/{{= %K2HR3_USERDATA_INCLUDE_PATH% }}\n\
",
    "crcobj": {                                     // Custom Registration Code(CRC) 設定
        "custom registration code 1": {             // CRCデータセット
            "crc_key_1":    "crc_value_1",          // CRCデータ(キーバリュー)
            "crc_key_2":    "crc_value_2",          // CRCデータ(キーバリュー)
        }
    }
}

補足:サービスマネージャ(systemd)の設定

ここでは、systemdを使ってWeb Applicationサーバーの各プロセスを制御する方法を説明しています。

systemd は、OS起動または終了時に、常駐プロセスの起動・停止を制御することができる、OS付属のサービスマネージャーです。

systemdの設定は、必須ではありません。OS起動(または終了)時に、自動的にプロセスを起動(または停止)したい場合は、次のように設定しておくこともできます。

次の内容を /etc/systemd/system/k2hr3-app.service に保存します。

[Unit]
Description=k2hr3-app
After=network-online.target

[Service]
Type=simple
WorkingDirectory=/home/k2hr3
Environment=HOME=/home/k2hr3
Environment=NODE_CONFIG_DIR=/home/k2hr3/etc/k2hr3-app
Environment=NODE_DEBUG=LOGLEVEL_ERR
Environment=NODE_ENV=production
ExecStart=/usr/bin/node /home/k2hr3/node_modules/k2hr3-app/bin/www
Restart=on-failure
PIDFile=/var/run/k2hr3-app.pid

[Install]
WantedBy=multi-user.target

設定ファイルをsystemdに反映させ、k2hr3-appをサービスとして起動します。

$ sudo systemctl daemon-reload
$ sudo systemctl restart k2hr3-app.service

K2HR3 OpenStack Notification Listener

この章は、K2HR3 OpenStack Notification Listenerの設定ファイルについて説明しています。

K2HR3 OpenStack Notification Listenerの設定ファイルは、 /usr/local/etc/k2hr3/k2hr3-osnl.conf にインストールされます。

以下は、設定項目のサンプルとその説明です。

[DEFAULT]
log_file = sys.stderr                                 # ログファイル名
debug_level = error                                   # ログレベル
libs_debug_level = warning                            # 依存モジュールのログのログレベル

[oslo_messaging_notifications]
event_type = ^port\.delete\.end$                      # 通知メッセージのイベントのタイプ
publisher_id = ^network.*$                            # 通知メッセージの発行者
transport_url = rabbit://guest:guest@127.0.0.1:5672/  # メッセージキューブローカーサーバのURL
topic = notifications                                 # 購読トピック名
exchange = neutron                                    # OpenStackサービス名(通知メッセージをキューに送信)
executor = threading                                  # 受け取った通知メッセージの処理方式(threading, blocking, eventlet)
pool = k2hr3_osnl                                     # キューの名前
allow_requeue = True                                  # キューの書き戻し許容の可否

[k2hr3]
api_url = https://localhost/v1/role                   # APIサーバーのURL
timeout_seconds = 30                                  # APIサーバーのリクエストタイムアウト時間(秒)
retries = 3                                           # リクエストエラー時の再送回数
retry_interval_seconds = 60                           # リクエストエラー時のリクエスト再送待機時間(秒)
allow_self_signed_cert = False                        # 自己署名のサーバ証明書許容の可否
requeue_on_error = False                              # リクエストエラー時のキューの書き戻しの可否

補足:通知メッセージのフォーマットと設定

ここでは、K2HR3 OpenStack Notification Listenerが、OpenStackの各サービスから受け取る通知メッセージのフォーマットについて説明しています。

k2hr3-osnlが解析可能な通知メッセージのフォーマットは主に2種類あり、フォーマットに合わせて設定します。

次の設定は、neutronからの通知メッセージを解析する設定例です。

...
[oslo_messaging_notifications]
event_type = ^port\.delete\.end$
publisher_id = ^network.*$
transport_url = rabbit://user:pass@127.0.0.1:5672/
topic = notifications
exchange = neutron
...

上記設定は、neutronの通知メッセージドライバが、 messagingv2 を使っていることを想定しています。

/etc/neutron/neutron.confが次のように設定されていることを確認してください。

[oslo_messaging_notifications]
#
# From oslo.messaging
#
# The Drivers(s) to handle sending notifications. Possible values are
# messaging, messagingv2, routing, log, test, noop (multi valued)
# Deprecated group/name - [DEFAULT]/notification_driver
driver = messagingv2

neutronからの通知メッセージを解析できない場合は、novaからの通知メッセージを解析するように設定することもできます。以下設定例です。

[oslo_messaging_notifications]
event_type = ^instance\.delete\.end$
publisher_id = ^nova-compute:.*$
transport_url = rabbit://user:pass@127.0.0.1:5672/
topic = versioned_notifications
exchange = nova

novaが送信する通知メッセージのtopicとevent_typeは、こちらをみてください。

補足:サービスマネージャ(systemd)の設定

ここでは、systemdを使ってK2HR3 OpenStack Notification Listenerのプロセスを制御する方法を説明しています。

systemd は、OS起動または終了時に、常駐プロセスの起動・停止を制御することができる、OS付属のサービスマネージャーです。

systemdの設定は、必須ではありません。OS起動(または終了)時に、自動的にプロセスを起動(または停止)したい場合は、次のように設定しておくこともできます。

次の内容を /etc/systemd/system/k2hr3-osnl.service に保存します。

[Unit]
Description=K2HR3 OpenStack Notification Listener
After=network-online.target

[Service]
Type=simple
User=k2hr3
PermissionsStartOnly=true
ExecStart=/opt/rh/rh-python36/root/usr/bin/k2hr3-osnl -c /usr/local/etc/k2hr3/k2hr3-osnl.conf
Restart=on-failure
PIDFile=/var/run/k2hr3-osnl.pid

[Install]
WantedBy=multi-user.target

設定ファイルをsystemdに反映させ、k2hr3-osnlをサービスとして起動します。

$ sudo systemctl daemon-reload
$ sudo systemctl restart k2hr3-osnl.service
Developer TOP Tools