ActiveMQハブおよびスポーツの追加

Included in Puppet Enterprise 2017.2.

ActiveMQハブおよびスポークを大規模なPuppet Enterpriseデプロイに追加することができます。 ActiveMQブローカを構築すると、Puppet EnterpriseインフラでMCollectiveメッセージを送信する際のネットワーク接続負荷を効果的に分散することができます。

MCollectiveの詳細については、MCollective文書、具体的には「ActiveMQクラスタリング」を参照してください。

ActiveMQハブおよびスポークの追加は、複数のPuppet masterのPEインフラへの追加とともに実施することも、独立して実施することもできます。

大規模インストールの推奨ハードウェアに関する指針は、PEハードウェア推奨事項を参照してください。

ActiveMQハブおよびスポークのインストール

インストールを始める前に、以下の手順を確認してください。誤った順序で実行すると、設定に問題が生じるおそれがあります。

また、このガイドについては、以下の点も注意してください。

  • この手順は、Puppet Enterpriseデプロイのモノリシックインストールまたは分割インストール を実施済みであるものと想定しています。
  • この手順は、すべてのPuppetインフラサーバーが、同じOSおよびアーキテクチャを使用することを前提としています。
  • この例では、オレゴン州ポートランドとオーストラリアのシドニーにデータセンターを構築すると想定しています。 この手順では、以下のホスト名を使用します。

    • Puppet master<MASTER.EXAMPLE.COM>
    • Puppet Enterprise Webコンソール <CONSOLE.EXAMPLE.COM>
    • Puppet Enterprise agent: <AGENT1.EXAMPLE.COM> and <AGENT2.EXAMPLE.COM>
    • ActiveMQハブ<ACTIVEMQ-HUB.EXAMPLE.COM>
    • ActiveMQスポーク1<ACTVIEMQ.SYD.EXAMPLE.COM>
    • ActiveMQスポーク2<ACTIVEMQ.PDX.EXAMPLE.COM>

おおまかな手順は以下のとおりです。

  1. Puppet agentを4つのノードにインストールします。
  2. ActiveMQハブグループの作成。
  3. ブローカグループにスポークを追加します。
  4. ノードとスポークの関係に対してカスタムfactを作成します。これは、ポートランドとシドニーのMCOサブスクライバ/サーバーグループの属性を特定するために使用します。
  5. ActiveMQノードの分類:大規模環境やさまざまな地域にわたる環境でActiveMQハブとスポークによって多数のMCOサブスクライバ/サーバーを管理する場合は、以下のいずれかの方法でノードを分類することを推奨します。
    • オプション1:ポートランドおよびシドニーの各スポークまたはスポークグループについて、新規ノードグループを作成します。
    • オプション2:ノードグループを使いたくない場合は、代わりに Hieraと自動データ バインディングを使用できます。
  6. インフラ内の接続を検証します。

ActiveMQハブおよびスポークノードへのPuppet agentのインストール

ハブおよびスポークをセットアップする前に、以下のノードにPuppet agentをインストールする必要があります。

  • ACTIVEMQ-HUB.EXAMPLE.COM
  • ACTIVEMQ.SYD.EXAMPLE.COM
  • ACTIVEMQ.PDX.EXAMPLE.COM
  • AGENT1.EXAMPLE.COM
  • AGENT2.EXAMPLE.COM

このステップを実行し、各マシンにPuppet agentをインストールする必要があります。

  1. SSHで各マシンにログインし、以下のコマンドを実行します。

    curl -k https://<MASTER.EXAMPLE.COM>:8140/packages/current/install.bash | sudo bash -s agent:ca_server=<MASTER.EXAMPLE.COM>
    
  2. Puppet Enterprise Webコンソールを使用して、証明書リクエストに署名します

ActiveMQハブグループの作成

ハブおよびブローカノードにagentをインストールしたので、次にActiveMQハブグループを作成します。

  1. コンソールで、[分類]の順にクリックし、[グループを追加]をクリックします。
  2. 新規ノードグループのオプションを指定します。

    オプション
    親の名前 PE Infrastructure
    グループ名 PE ActiveMQハブ
    環境 agentが置かれている環境を選択します。
    環境グループ このオプションは選択しないでください。
  3. [追加]をクリックします。
  4. リンクをクリックし、メンバーシップルール、クラス、変数を追加します
  5. [ルール]タブの[ノード名]フィールドにACTIVEMQ-HUB.EXAMPLE.COMと入力します。
  6. [ノードをピンして追加します]をクリックします。
  7. [クラス]タブの[クラス名]フィールドにpuppet_enterprise::profile::amq::hubを追加します。
  8. [クラスを追加]をクリックします。
  9. [puppet_enterprise::profile::amq::hub]クラスで、以下のパラメータを指定します。

    • [パラメータ] — network_connector_spoke_collect_tagを選択します。
    • [] — pe-amq-network-connectors-for-ACTIVEMQ-HUB.EXAMPLE.COMと入力します。
  10. [変更を保存]をクリックします。
  11. <ACTIVEMQ-HUB.EXAMPLE.COM>Puppetを実行します

ActiveMQブローカグループへのスポークの追加

ハブグループを作成したら、スポークノード(ACTIVEMQ.SYD.EXAMPLE.COMおよびACTIVEMQ.PDX.EXAMPLE.COM)を、 PE ActiveMQ Brokerグループに追加します。このノードグループはPuppet Enterpriseに事前設定されています。

PE ActiveMQブローカグループにスポークを追加する方法

  1. コンソールで[分類]の順にクリックし、PE InfrastructureグループでPE ActiveMQ Brokerグループを選択します。
  2. [ルール]タブの[ノード名]フィールドに<ACTIVEMQ.SYD.EXAMPLE.COM>および<ACTIVEMQ.PDX.EXAMPLE.COM>と入力します。
  3. [ノードをピンして追加します]をクリックします。
  4. [クラス]タブをクリックします。
  5. [puppet_enterprise::profile::amq::broker]クラスで、以下のパラメータを指定します。

    • パラメータactivemq_hubnameを選択します。
    • ["ACTIVEMQ-HUB.EXAMPLE.COM"]と入力します。

    :ハブのFQDNは配列として入力します。 必要に応じて、別のハブを追加できます。

  6. [変更を保存]をクリックします。
  7. <ACTIVEMQ.SYD.EXAMPLE.COM>および<ACTIVEMQ.PDX.EXAMPLE.COM>Puppetを実行します。

  8. すべてのスポークノードでPuppetを実行したのち、各ハブノードでPuppetを実行します(このケースでは<ACTIVEMQ-HUB.EXAMPLE.COM>)。

    注意:Puppet master(<MASTER.EXAMPLE.COM>など)はデフォルトではすでにMCollectiveブローカになっています。 必要な場合は、PE ActiveMQ Brokerグループから外すこともできます。

ノードとスポークの関係に対するカスタムfactの作成

管理対象ノードはデフォルトで、Puppet Master(マスターオブマスター)をActiveMQブローカとして使用します。 ハブおよびスポーク構成では、Puppetインフラノード以外のすべてのノードは、もっとも適切なスポークをブローカとして使用します。 地理的な多様性やネットワークセグメントの相違があるので、適切なスポークは、通常、地理的な場所またはネットワークセグメントを共有するスポークになります。 状況によっては、スポークがロードバランサの内側にある場合もあります。

インフラ内の各ノードをもっとも適切なスポークに接続する必要がありますが、カスタムfactsを使用すると、このような接続を簡単に作成できます。

ここで作成するのは、ポートランドとシドニーのMCOサブスクライバ/サーバーグループの物理的属性を特定できるようなカスタムfactsです。

後からこのカスタムfact(例:data_center)を使用して、コンソール内のスポークを分類するか、またはHieraを使用したスポークにAgentをバインドします。

この例では、 AGENT.EXAMPLE.COMSPOKE.SYD.EXAMPLE.COMを関連付けるカスタムfactsを作成します。

ヒント: カスタムfactsの作成およびデプロイに関する詳細が必要な場合は、 Facter 文書を参照してください。

  1. 使用するオペレーティングシステムに応じて、以下のいずれかの方法でカスタムfactsを作成します。

    a. <AGENT.EXAMPLE.COM>が*nixマシンの場合は、以下を実行します。

    puppet apply -e 'file { ["/etc/puppetlabs", "/etc/puppetlabs/facter", "/etc/puppetlabs/facter/facts.d"]: ensure => directory }'
    puppet apply -e 'file {"/etc/puppetlabs/facter/facts.d/data_center.txt": ensure => file, content => "data_center=syd"}'
    

    b. <AGENT.EXAMPLE.COM>がWindowsマシン (Windows Vista、7、8、2008、2012) の場合は、以下を実行します。

    puppet apply -e "file { ['C:/ProgramData/PuppetLabs', 'C:/ProgramData/PuppetLabs/facter', 'C:/ProgramData/PuppetLabs/facter/facts.d']: ensure => directory }"
    puppet apply -e "file {'C:/ProgramData/PuppetLabs/facter/facts.d/data_center.txt': ensure => file, content => 'data_center=syd'}"
    
  2. 以下のいずれかのタスクを実行して、スポークにagentを割り当てます。

オプション1:コンソールを使用したActiveMQスポークの分類

Puppet Enterprise Webコンソールを使用し、ポートランドおよびシドニーの各スポークまたはスポークグループに対して、新規ノードグループを作成します。 カスタムfactsは、各ノードグループの分類ルールとして使用できます。

これらのグループは、Puppet Enterprise MCollectiveグループを継承している必要があります。また、 puppet_enterprise::profile::mcollective::agentクラスが含まれ、activemq_brokersパラメータが目的のスポークの名前に設定されている必要があります。

注意:ノードはPuppet Enterprise MCollectiveノードグループに属している必要があります。

  1. コンソールで、[分類]の順にクリックし、[グループを追加]をクリックします。
  2. 新規ノードグループのオプションを指定します。

    オプション
    親の名前 Puppet Enterprise MCollective
    グループ名 Sydney_datacenter
    環境 Agentが置かれている環境を選択します。
    環境グループ このオプションは選択しないでください。
  3. [追加]をクリックします。
  4. メンバーシップルール、クラス、変数を追加しますをクリックします。
  5. [ルール]タブで、agentをこのグループに追加するルールを作成します。

    オプション
    facts data_center
    演算子 =
    syd
  6. ルールを追加をクリックし、変更を保存ボタンをクリックします。
  7. [クラス]タブをクリックし、[新しいクラスを追加]フィールドにpuppet_enterprise::profile::mcollective::agentと入力し、[クラスを追加]をクリックします。
  8. [パラメータ]ドロップダウンリストから activemq_brokersを選択します。
  9. []フィールドで、目的のスポークの名前を追加します ([<SPOKE.SYD.EXAMPLE.COM>]など)。

    注: ハブのFQDNは配列として入力します。

  10. [パラメータを追加]をクリックし、[変更を保存]ボタンをクリックします。
  11. ポートランドのデータセンターについても、ステップ1~10を繰り返します。
  12. ActiveMQハブとスポーク (Puppet masterを含む)、およびPE agentがある場合はPE agentで、Puppetを実行するか、予定された実行を待ちます。
  13. インフラ内の接続の検証」に進みます。

オプション2:Hieraを使用したActiveMQスポークの分類

ポートランドおよびシドニーの各スポークまたはスポークグループに対して新規ノードグループを作成するときに、Puppet Enterprise Webコンソールを使用しない場合、代わりにHieraと自動データ バインディングを使用できます。

その場合、PEインフラグループのpuppet_enterpriseクラスからmcollective_middleware_hosts parameterを削除し、Hiera内の適切なレベルにこのパラメータを配置して各スポークを区別する必要があります。

  1. Puppet master上で、Hiera configファイル (/etc/puppetlabs/puppet/hiera.yaml) を編集し、階層の一部にdata_center factが含まれるようにします。

    Hiera configファイルは、おおむね以下のようになるはずです。

    #hiera.yaml
       ---
        :backends:
             - eyaml
             - yaml
        :hierarchy:
             - "%{clientcert}"
             - "%{data_center}"
             - global
    
    
         :yaml:
         :datadir: "/etc/puppetlabs/code/environments/%{environment}/hieradata"
    
  2. Puppet master上で、目的のActiveMQスポークをマッピングするHieraデータファイルをdata_centerカスタムfactsに追加します。

    以下のコマンド例は、sydおよびpdxデータセンターに対応するもので、production環境を用いているものと想定しています。

    重要:このステップで作成するファイル名は、カスタムfactの値と一致している必要があります。

    a. /etc/puppetlabs/code/environments/production/hieradata/syd.yamlという名前のファイルを作成します。

    b. syd.yamlを編集し、以下のコンテンツが含まれるようにします。

    ---
    puppet_enterprise::profile::mcollective::agent::activemq_brokers:
       - 'SPOKE.SYD.EXAMPLE.COM'
    

    c. 引き続きhieradataディレクトリで、 pdx.yamlという名前のファイルを作成します。

    d. pdx.yamlを編集し、以下のコンテンツが含まれるようにします。

    ---
    puppet_enterprise::profile::mcollective::agent::activemq_brokers:
        - 'SPOKE.PDX.EXAMPLE.COM'
    
  3. Hieraおよびカスタムfactが適切に設定されているかを確認します。 エンドノードでカスタムfactを確認します。 <AGENT.EXAMPLE.COM>facter data_centerを実行します。

    これにより、この例のsydの予定値が返されるはずです。

  4. 適切なパラメータを与えた場合に、HieraがActiveMQスポークの予定値を取得するかどうかを確認します。 Puppet master上で以下を実行します。

    hiera puppet_enterprise::profile::mcollective::agent::activemq_brokers data_center=syd environment=production
    

    これにより、この例の[<SPOKE.SYD.EXAMPLE.COM>]の予定値が返されるはずです。

  5. Puppet master上で、pe-puppetserverサービスを再ロードします。

    sudo service pe-puppetserver reload
    

    Puppetサーバーはhiera.yamlファイルの変更を自発的に監視していないので、ファイルを編集するたびに再ロードする必要があります。

  6. ActiveMQハブとスポーク (Puppet masterを含む)、およびPE agentがある場合はPE agentで、Puppetを実行するか、予定された実行を待ちます。

  7. インフラ内の接続の検証」に進みます。

インフラ内の接続の検証

最後に、すべての接続が適切に確立されたかどうかを確認します。

  1. MCollectiveグループが適切に設定されたかどうかを確認するには、 <MASTER.EXAMPLE.COM>su peadminmco pingの順に実行します。

    ActiveMQハブとスポーク(Puppet masterを含む)、PE agentがある場合はPE agentもリスト表示されます。

  2. ActiveMQハブの接続が適切に確立されたかどうかを確認するには、ACTIVEMQ-HUB.EXAMPLE.COMで以下のコマンドを実行します。

    • RHEL 7およびその派生版:ss -a -n | grep '61616'

    • その他のプラットフォーム: netstat -an | grep '61616'

    ActiveMQブローカノードの間で、ActiveMQハブの接続が設定されていることを確認できるはずです。

ヒントpe-activemqユーザが開く/処理することができるプロセスの数を増やす必要がある場合は、「Increasing the ulimit for the pe-activemq User(pe-activemq ユーザを無制限に増やす)」の説明を参照してください。

↑ Back to top