Puppet Enterprise 2017.2

インフラの規模が拡大してノードが4000台を超えた場合、負荷を分散したコンパイルmasterをモノリシックインストールのアーキテクチャに追加すると、より多くのagentを管理できるようになります。 マスターオブマスター(MoM)上で稼働するPuppetDBまたはコンソールの容量上限に達するまでは、コンパイルmasterを1つ追加すると、1500~3000台のノードを増設することができます。

コンパイルmasterの仕組み

管理対象のノードが4000台を超えると、1つのPuppet masterでPuppet agentのすべての要求処理やコードのコンパイルを行うことはできなくなります。 コンパイルmasterを追加してインフラを拡張すると、作業負荷が分散され、カタログのコンパイルが迅速になります。 コンパイルmasterの機能の多くは、Puppet masterと同じです。ファイル同期を実行し、Puppetサーバーを内包するほか、pe_repoをホストすることができます。 コンパイルmasterのデプロイにおいて、メインとなるPuppet masterはマスターオブマスターズ(MoM)と呼ばれます。

ヒント: 基本的なインストールタイプとそれぞれの推奨ハードウェアの指針については、Puppet Enterpriseハードウェアの推奨事項を参照してください。

重要: コンパイルmasterでは、MoMと同じOSメジャーバージョン、プラットフォーム、アーキテクチャを使用する必要があります。

コンパイルmasterで稼働するコンポーネントとサービス

すべてのコンパイルmasterには、Puppetサーバーとファイル同期クライアントが含まれます。 Webエンドポイントからのトリガーにより、ファイル同期はマスターオブマスターズ(MoM)の作業ディレクトリから変更を取得し、そのコードをライブコードディレクトリにデプロイします。 その後、そのコードをすべてのコンパイルmasterにデプロイし、マルチmaster構成に存在するすべてのmasterの同期を確保します。 デフォルトでは、コンパイルmasterは5秒おきにコードの更新をチェックします。

認証局(CA)サービスは、コンパイルmasterでは無効になっています。 コンパイルmasterのPuppetサーバーで稼働するプロキシサービスにより、デフォルトインストールでCAをホストするMoMにCA要求が送られます。

コンパイルmasterには以下のものも含まれます。

  • MCollectiveクライアント、peadmin
  • agentインストール用のPuppet Enterpriseリポジトリ、pe_repo
  • Puppet Enterpriseクライアントツールで使用されるコントローラプロファイル
  • オーケストレータを拡張するためのPCPブローカ

コンパイルmasterのログは、/var/log/puppetlabs/puppetserver/にあります。

コンパイルmaster上のPCPブローカのログは、/var/log/puppetlabs/puppetserver/pcp-broker.logにあります。

コンパイルmasterのインストール

コンパイルmasterをインストールするには、はじめにPuppet agentをインストールし、このagentをコンパイルmasterとして指定します。

インストールを始める前に

作業の開始前に以下の手順を確認します。 誤った順序で実行すると、設定に問題が生じるおそれがあります。 また、これらの手順については、以下の点も注意してください。

  • この手順は、Puppet Enterpriseデプロイの分割インストールまたはモノリシックインストール をすでに実施していることを前提としています。
  • すべてのサーバーで、同じOSおよびアーキテクチャが使用されている必要があります。
  • この手順で使用している以下のホスト名は、お使いのインフラの対応するホスト名に置き換える必要があります。
    • Puppet master/CAサーバー(MoM): MASTER.EXAMPLE.COM
    • Puppet Enterprise Webコンソール <CONSOLE.EXAMPLE.COM>
    • PuppetDB: PUPPETDB.EXAMPLE.COM
    • コンパイルmaster: COMPILE.MASTER.EXAMPLE.COM
  • コンパイルmasterとして指定するマシンには、まだPuppet agentがインストールされていないことが条件となります。
  1. Puppet agentをCOMPILE.MASTER.EXAMPLE.COMにインストールするには、 SSHでCOMPILE.MASTER.EXAMPLE.COMにログインし、以下のコマンドを実行します。

    `curl -k https://<MASTER.EXAMPLE.COM>:8140/packages/current/install.bash | sudo bash -s main:dns_alt_names=<COMMA-SEPARATED LIST OF ALT NAMES FOR THE COMPILE MASTER>`
    

    注意: dns_alt_namesの値の設定では、Puppet agentがmasterとの接続に用いる可能性のある別名をカンマ区切りで列挙する必要があります。 インストールのデフォルトでは「puppet」が使用されます。

  2. MASTER.EXAMPLE.COMのコマンドラインで、以下のコマンドを実行します。

    puppet cert --allow-dns-alt-names sign COMPILE.MASTER.EXAMPLE.COM
    

    注意:DNSオルトネームのあるノードの証明書の署名には、コンソールは使用できません。

  3. <COMPILE.MASTER.EXAMPLE.COM>のコマンドラインでpuppet agent -tを実行します。

  4. <COMPILE.MASTER.EXAMPLE.COM>がPuppet masterとして機能し、Puppet Enterprise認証局への要求をプロキシするように、コンソールで分類を実行します。

    a. コンソールで[分類]をクリックし、PE InfrastructureノードグループでPE Masterノードグループを選択します。

    b. [Certname]セクションの[ノード名]フィールドに<COMPILE.MASTER.EXAMPLE.COM>と入力します。

    c. ノードをピン留めするをクリックし、変更ボタンをクリックします。

  5. pe_repoを設定して、負荷バランサに対してagentインストールリクエストを送信するようにします。

    注: 負荷バランサの詳しい設定方法は、このマニュアルでは扱っていません。考慮事項については、コンパイルmasterでの負荷バランサの使用を参照してください。

    a. コンソールで[分類]をクリックし、PE InfrastructureノードグループでPE Masterグループを選択します。

    b. [PE Master]グループで[クラス]タブをクリックし、[pe_repo]クラスを探します。

    c. [パラメータ]ドロップダウンリストから[compile_master_pool_address]を選択します。

    d. []フィールドに、負荷バランサを説明するアドレスを入力します (<LOADBALANCER.EXAMPLE.COM>など)。

    e. [Add parameter]をクリックし、[変更をコミット]をクリックします。

  6. 以下のノードで、記載する順序どおりに、Puppetを実行します。

    重要:以下のPuppet実行は、必ず以下の手順で指定された順序で実施してください。 いずれのケースでも、最初のノードの実行が終わるまで待ってから、次に進むようにしてください。

    • モノリシックインストールの場合
      1. <COMPILE.MASTER.EXAMPLE.COM>
      2. <MASTER.EXAMPLE.COM>
    • 分割インストールの場合
      1. <COMPILE.MASTER.EXAMPLE.COM>
      2. <PUPPETDB.EXAMPLE.COM>
      3. <CONSOLE.EXAMPLE.COM>
      4. <MASTER.EXAMPLE.COM>

オーケストレータを拡張するためのコンパイルmasterの設定

Puppet Enterpriseのインストール規模が拡大した場合は、agent、負荷バランサ、コンパイルmasterの間に接続を設定することで、オーケストレータジョブを拡張できます。

Puppetオーケストレータは、ポート8143を使用してコンパイルmaster上でPCPブローカと通信し、ジョブ関連のメッセージをブローカに送信します。次にブローカが、このメッセージをPXP agentにリレーします。 コンパイルmasterを追加するときは、agentにオーケストレーションメッセージを送信するPCPブローカの数も増やします。

コンパイルmasterの追加時に、コンパイルmaster上で実行されるPCPブローカへのPXP agentの接続を負荷分散する必要があります。 PXP agentは、ポート8142を介して、コンパイルmaster上で実行されるPCPブローカに接続します。

PCPブローカはWebSocket上に構築され、多数の持続的な接続を必要とします。 HTTPヘルスチェックを使用していない場合、ラウンドロビンまたはランダムの負荷分散アルゴリズムを使用して、PXP agentをPCPブローカに接続します。これは、PCPブローカの動作がオーケストレータから独立していないので、接続が切れると孤立するためです。 /status/v1/simple エンドポイントを使用すると、接続にエラー状態がないかどうかをチェックすることができます。 コンパイルmaster上のステータスチェックは、ポート8140に送信する必要があります。

また、負荷バランサを設定して、トラフィックがほとんどない長時間実行接続を終了しないようにする必要があります。 PCPブローカでは15分以上活動のない接続が切断されるため、HAプロキシモジュールを使用している場合はtimeout tunnel15mに設定します。 コンパイルmaster上のステータスチェックは、ポート8140に送信する必要があります。

前提条件: このタスクは、必要なコンパイルmasterと負荷バランサがすでにインストールされていることを前提としています。

  1. PE Infrastructure Agentグループを設定して、このグループ内のノードがMoMに接続するようにします。

    a. コンソールで[分類]をクリックし、PE InfrastructureグループでPE Agentグループを選択します。

    b. Puppet agentを使用して負荷バランサを管理する場合、[ルール]タブで、このグループに負荷バランサをピン留めします。

    c. [クラス]タブでpuppet_enterprise::profile::agentクラスを見つけて、以下のパラメータと値を追加します。

    パラメータ
    pcp_broker_list MoMのホスト名を含むJSON形式のリスト。HAレプリカがある場合、MoMの後に配置する必要があります。
    ホスト名にはポート8142を含めます。
    例: ["MASTER.EXAMPLE.COM:8142"]

    d. [パラメータを追加]をクリックします。

    e. puppet_enterprise::profile::agent::pcp_broker_ws_urisに設定されている値がある場合は削除します。

    f. [変更を保存]をクリックします。

    g. PE Infrastructure Agentグループに属するすべてのagentで、Puppetを実行します。

    このPuppet実行によって、PXP agentの設定が変わることはありません。 HAを設定済みで、PE Infrastructure Agentグループに対してまだ負荷バランサをピン留めしていない場合は、MoM上のカタログをコンパイルするように負荷バランサが設定されます。

  2. PE Agentノードが負荷バランサに接続するように設定します。

    a. コンソールで[分類]をクリックし、PE InfrastructureグループでPE Agentグループを選択します。

    b. [クラス]タブでpuppet_enterprise::profile::agentクラスを見つけて、以下のパラメータと値を追加します。

    パラメータ
    pcp_broker_list 負荷バランサのホスト名を含むJSON形式のリスト。
    ホスト名にはポート8142を含めます。
    例: ["LOADBALANCER1.EXAMPLE.COM:8142", "LOADBALANCER1.EXAMPLE.COM:8142"]

    c. [パラメータを追加]をクリックします。

    d. puppet_enterprise::profile::agent::pcp_broker_ws_urisに設定されている値がある場合は削除します。

    e. [変更を保存]をクリックします。

    f. master上でPuppetを実行します。

    g. すべてのagentでPuppetを実行するか、または新しいagentをインストールします。

    このPuppet実行によりPXP agentが負荷バランサに接続されるようになります。

Back to top