Redis構成

Swarmでは、Redisを使用してキャッシュを管理する必要があります。デフォルト設定の場合、Swarmは、Swarmマシン上で専用のRedisサーバを使用します。Swarmは、Helixサーバのデータをキャッシュすることにより、Swarmで実行される一般的な検索処理のパフォーマンスを改善し、Helixサーバに対する負荷を軽減します。 Redisは、Swarm Tarballに付属しています。

このセクションでは、Swarmマシン上でSwarm Redisサービスを設定する方法について説明します。Swarm Redisサーバを使用する場合は、以下の構成ファイルのデフォルト値を変更しないでください。

ヒント

必要な場合は、Swarm Redisサーバの代わりに、自分専用のRedisサーバを使用することができます。自分専用のRedisを使用するようにSwarmを設定する手順については、「自分専用のRedisサーバを使用する」を参照してください。

SwarmSWARM_ROOT/p4-bin/bin.linux26x86_64/ディレクトリには、以下に示す2つのRedisバイナリが保管されています。

  • redis-server-swarm
  • redis-cli-swarm
  1. Redisキャッシュデータベースを設定し、/opt/perforce/etc/ディレクトリ内のredis-server.confファイルを開いて、以下の情報を入力します。
  2. bind 127.0.0.1
    port 7379
    supervised auto
    save ""
    dir /opt/perforce/swarm/redis
    

    デフォルト値:

    ヒント
    • 以下の設定は、redis-server.confファイルで定義されているデフォルト設定です。このファイルには、Swarm用のRedis構成に関する詳細情報が記述されています。
    • 多数のユーザ、グループ、プロジェクトが存在するSwarmシステムの場合、メモリキャッシュを永続化すると、起動時間を短縮できる可能性があります。メモリキャッシュを永続化するには、バックグラウンドでの保存機能を無効にして追加保存機能を有効にします。詳細については、redis-server.confファイルのコメントを参照してください。
    • bind 127.0.0.1 - RedisサーバのIPアドレス(ループバックインタフェース)
    • port 7379 - Redisサーバのポート番号
    • supervised autoを指定すると、upstartまたはsystemdの使用状況が自動的に検出され、プロセスでスーパーバイザを使用する準備が整ったことが通知されます。
    • save ""」を指定すると、バックグラウンドでの保存処理が無効になります(推奨)。
    • dir /opt/perforce/swarm/redis - Redisキャッシュデータベースが保存されるディレクトリ
    ヒント

    Redisサーバの設定を変更する場合は、Laminas Redisアダプタ内で変更を行ってください。Laminas Redisアダプタの詳細については、Laminas Redisアダプタのドキュメントを参照してください。

  3. Swarmを開始する前にRedisキャッシュデータベースを実行する必要があります。そのため、Redisキャッシュデータベースを、システムの起動時に自動的に開始されるサービスとして設定することをお勧めします。
  4. 以下に示すサンプルスクリプトの動作は以下のようになります。

    • このサンプルスクリプトにより、RedisサービスがPerforceユーザとして稼働します。
    • このサンプルスクリプトでは、/opt/perforce/etc/redis-server.confディレクトリ内の構成ファイルが使用されます。
    • このサンプルスクリプトは、/opt/perforce/swarm/p4-bin/bin.linux26x86_64/にデータベースサーバがインストールされていることを前提としています。

    Redisをサーバとして設定する場合は、以下のコード行が記述されたスクリプトを/etc/systemd/systemディレクトリに追加します。

    redis-server-swarm.service

    [Unit]
    Description=Redis Server for Swarm
    After=network.target
    
    [Service]
    ExecStart=/opt/perforce/swarm/p4-bin/bin.linux26x86_64/redis-server-swarm /opt/perforce/etc/redis-server.conf
    ExecStop=/opt/perforce/swarm/p4-bin/bin.linux26x86_64/redis-cli-swarm shutdown
    Restart=always
    RestartSec=10
    StandardOutput=syslog
    StandardError=syslog
    SyslogIndentifier=redis
    User=perforce
    	Group=perforce
     
    [Install]
    WantedBy=multi-user.target
    

  5. SWARM_ROOT/data/config.phpファイルが存在しない場合は、新しく作成します。SWARM_ROOT/data/config.phpファイルのredisブロックには、Swarm Redisサーバのpasswordnamespacehostportに関する情報が記述されています。
  6. <?php
        // this block should be a peer of 'p4'
        'redis' => array(
            'options' => array(
                'password' => null, // Defaults to null
                'namespace' => 'Swarm',
                'server' => array(
                    'host' => 'localhost', // Defaults to 'localhost' or enter your Redis server hostname
                    'port' => '7379', // Defaults to '7379 or enter your Redis server port
                ),            
            ),
            'items_batch_size' => 100000,
            'check_integrity' => '03:00', // Defaults to '03:00' Use one of the following two formats: 
                                          // 1) The time of day that the integrity check starts each day. Set in 24 hour format with leading zeros and a : separator
                                          // 2) The number of seconds between each integrity check. Set as a positive integer. Specify '0' to disable the integrity check.
            'population_lock_timeout' => 300, // Timeout for initial cache population. Defaults to 300 seconds. 
        ),
    

    構成可能変数:

    • password: Redisサーバのパスワードを指定します。デフォルト値はnullです。Swarm Redisサーバを使用する場合は、デフォルト値のままにしておく必要があります。
    • namespaceには、Redisキャッシュのキー値で使用されるプレフィックスを指定します。デフォルト値はSwarmです。Swarm Redisサーバを使用する場合は、デフォルト値のままにしておく必要があります。
    • 注意

      1つのRedisサーバに対して複数のSwarmインスタンスが稼働している場合、各Swarmサーバで異なるRedis名前空間を使用する必要があります。これにより、個別のSwarmインスタンスのキャッシュデータを識別できるようになります。名前空間の長さは128文字以内に制限されています。

      1つ以上のSwarmインスタンスが複数のHelixサーバに接続されている場合、Redisの名前空間にはserver labelが含められるため、名前空間の長さが127文字以内に制限されます。詳細については、「複数のHelixサーバインスタンス」を参照してください。

    • host: Redisサーバのホスト名を指定します。デフォルト値はlocalhostです。Swarm Redisサーバを使用する場合は、デフォルト値のままにしておく必要があります。
    • port: Redisサーバのポート番号を指定します。デフォルト値は「7379」です。ネットワーク上の他のRedisサーバとの競合を避けるため、Swarmではポート7379がデフォルトのポートとして使用されます。Swarm Redisサーバを使用する場合は、デフォルト値のままにしておく必要があります。Swarm Redisサーバ以外のサーバについては、ポート6379がデフォルトのポートとして使用されます。
    • items_batch_size: Redisに対するmset呼び出しで許可されるキーと値のペアの最大数を指定します。この最大数を超えた場合は、処理効率を考慮して一括処理されます。デフォルト値は「100000」です。
    • 注意

      この「100000」というデフォルト値は、処理効率とプロジェクトデータの複雑度のバランスを考慮して決定された値です。通常、このデフォルト値を変更する必要はありませんが、変更する必要がある場合は、事前にサポートチームに連絡してください。

    • check_integrity: Swarmが停止している状態でHelixサーバで変更を行った場合や、更新中にエラーが発生した場合などに、RedisキャッシュがHelixサーバに同期されていない状態になる可能性があります。Swarmでは、通常の整合性チェックを実行して、RedisキャッシュとHelixサーバが同期されているかどうかを確認することができます。整合性チェックで同期されていないキャッシュファイルが見つかった場合は、Swarmにより、そのキャッシュ内のデータが自動的に更新されます。
    • check_integrity構成可能変数を使用して、Redisキャッシュの整合性チェックを実行するタイミングを指定することができます。一日のうちの特定の時間を指定することも(24時間形式で指定、1桁の時間の場合は先頭にゼロを付加)、チェック処理の実行間隔を秒数(正の整数)で指定することもできます。整合性チェックを無効にする場合は、値として「0」を設定します。デフォルト値は「03:00」です。

    • population_lock_timeout: キャッシュに初めてデータを取り込む際のタイムアウトを秒単位で指定します。Swarmシステムの規模が大きいために、キャッシュへのデータ取り込みがタイムアウトになった場合は、このタイムアウト時間の値を増やしてください。デフォルト値は「300」秒です。

Apacheの構成を行います。詳しくは、「Apache構成」を参照してください。